From 46192c370926c05e6ca6788b5291adfcd5f4db66 Mon Sep 17 00:00:00 2001 From: marauder2k7 Date: Thu, 23 Jan 2025 10:18:18 +0000 Subject: [PATCH 01/91] Eye dropper functionality Adds eye dropper functionality adds eye dropper button image supplied by jeff adds a few missing asset files (due to in asset browser scan and add all loose files) --- Engine/source/gui/controls/guiColorPicker.cpp | 198 ++++++++++++------ Engine/source/gui/controls/guiColorPicker.h | 23 +- .../game/tools/gui/colorPicker.ed.gui | 60 +++--- .../add-simgroup-btn_ctrl_i_image.asset.taml | 3 + .../add-simgroup-btn_i_image.asset.taml | 3 + .../gui/images/camera-btn_i_image.asset.taml | 3 + .../gui/images/clear-icon_i_image.asset.taml | 3 + .../gui/images/delete_i_image.asset.taml | 3 + .../dropdown-button-arrow_d_image.asset.taml | 3 + .../dropdown-button-arrow_h_image.asset.taml | 3 + .../dropdown-button-arrow_i_image.asset.taml | 3 + .../dropdown-button-arrow_n_image.asset.taml | 3 + .../game/tools/gui/images/eyedropper_d.png | Bin 0 -> 1123 bytes .../gui/images/eyedropper_d_image.asset.taml | 3 + .../game/tools/gui/images/eyedropper_h.png | Bin 0 -> 1064 bytes .../gui/images/eyedropper_h_image.asset.taml | 3 + .../game/tools/gui/images/eyedropper_i.png | Bin 0 -> 1083 bytes .../gui/images/eyedropper_i_image.asset.taml | 3 + .../game/tools/gui/images/eyedropper_n.png | Bin 0 -> 1097 bytes .../gui/images/eyedropper_n_image.asset.taml | 3 + .../gui/images/folder_d_image.asset.taml | 3 + .../gui/images/folder_h_image.asset.taml | 3 + .../gui/images/folder_i_image.asset.taml | 3 + .../gui/images/folder_n_image.asset.taml | 3 + .../images/images_menuGrid_d_image.asset.taml | 3 + .../images/images_menuGrid_h_image.asset.taml | 3 + .../images/images_menuGrid_image.asset.taml | 3 + .../images/images_menuGrid_n_image.asset.taml | 3 + .../gui/images/layers-btn_i_image.asset.taml | 3 + .../tools/gui/images/lock_i_image.asset.taml | 3 + .../images/new-folder-btn_i_image.asset.taml | 3 + .../tools/gui/images/new_i_image.asset.taml | 3 + .../gui/images/numericslider_image.asset.taml | 3 + .../gui/images/open-file_i_image.asset.taml | 3 + .../gui/images/reset-icon_i_image.asset.taml | 3 + .../images/selector-button_image.asset.taml | 3 + .../gui/images/tab-border_image.asset.taml | 3 + .../images/textEdit_black_image.asset.taml | 3 + .../gui/images/textEdit_blue_image.asset.taml | 3 + .../gui/images/textEdit_cyan_image.asset.taml | 3 + .../images/textEdit_green_image.asset.taml | 3 + .../images/textEdit_magenta_image.asset.taml | 3 + .../gui/images/textEdit_red_image.asset.taml | 3 + .../images/textEdit_white_image.asset.taml | 3 + .../images/textEdit_yellow_image.asset.taml | 3 + .../images/uv-editor-btn_i_image.asset.taml | 3 + 46 files changed, 292 insertions(+), 106 deletions(-) create mode 100644 Templates/BaseGame/game/tools/gui/images/add-simgroup-btn_ctrl_i_image.asset.taml create mode 100644 Templates/BaseGame/game/tools/gui/images/add-simgroup-btn_i_image.asset.taml create mode 100644 Templates/BaseGame/game/tools/gui/images/camera-btn_i_image.asset.taml create mode 100644 Templates/BaseGame/game/tools/gui/images/clear-icon_i_image.asset.taml create mode 100644 Templates/BaseGame/game/tools/gui/images/delete_i_image.asset.taml create mode 100644 Templates/BaseGame/game/tools/gui/images/dropdown-button-arrow_d_image.asset.taml create mode 100644 Templates/BaseGame/game/tools/gui/images/dropdown-button-arrow_h_image.asset.taml create mode 100644 Templates/BaseGame/game/tools/gui/images/dropdown-button-arrow_i_image.asset.taml create mode 100644 Templates/BaseGame/game/tools/gui/images/dropdown-button-arrow_n_image.asset.taml create mode 100644 Templates/BaseGame/game/tools/gui/images/eyedropper_d.png create mode 100644 Templates/BaseGame/game/tools/gui/images/eyedropper_d_image.asset.taml create mode 100644 Templates/BaseGame/game/tools/gui/images/eyedropper_h.png create mode 100644 Templates/BaseGame/game/tools/gui/images/eyedropper_h_image.asset.taml create mode 100644 Templates/BaseGame/game/tools/gui/images/eyedropper_i.png create mode 100644 Templates/BaseGame/game/tools/gui/images/eyedropper_i_image.asset.taml create mode 100644 Templates/BaseGame/game/tools/gui/images/eyedropper_n.png create mode 100644 Templates/BaseGame/game/tools/gui/images/eyedropper_n_image.asset.taml create mode 100644 Templates/BaseGame/game/tools/gui/images/folder_d_image.asset.taml create mode 100644 Templates/BaseGame/game/tools/gui/images/folder_h_image.asset.taml create mode 100644 Templates/BaseGame/game/tools/gui/images/folder_i_image.asset.taml create mode 100644 Templates/BaseGame/game/tools/gui/images/folder_n_image.asset.taml create mode 100644 Templates/BaseGame/game/tools/gui/images/images_menuGrid_d_image.asset.taml create mode 100644 Templates/BaseGame/game/tools/gui/images/images_menuGrid_h_image.asset.taml create mode 100644 Templates/BaseGame/game/tools/gui/images/images_menuGrid_image.asset.taml create mode 100644 Templates/BaseGame/game/tools/gui/images/images_menuGrid_n_image.asset.taml create mode 100644 Templates/BaseGame/game/tools/gui/images/layers-btn_i_image.asset.taml create mode 100644 Templates/BaseGame/game/tools/gui/images/lock_i_image.asset.taml create mode 100644 Templates/BaseGame/game/tools/gui/images/new-folder-btn_i_image.asset.taml create mode 100644 Templates/BaseGame/game/tools/gui/images/new_i_image.asset.taml create mode 100644 Templates/BaseGame/game/tools/gui/images/numericslider_image.asset.taml create mode 100644 Templates/BaseGame/game/tools/gui/images/open-file_i_image.asset.taml create mode 100644 Templates/BaseGame/game/tools/gui/images/reset-icon_i_image.asset.taml create mode 100644 Templates/BaseGame/game/tools/gui/images/selector-button_image.asset.taml create mode 100644 Templates/BaseGame/game/tools/gui/images/tab-border_image.asset.taml create mode 100644 Templates/BaseGame/game/tools/gui/images/textEdit_black_image.asset.taml create mode 100644 Templates/BaseGame/game/tools/gui/images/textEdit_blue_image.asset.taml create mode 100644 Templates/BaseGame/game/tools/gui/images/textEdit_cyan_image.asset.taml create mode 100644 Templates/BaseGame/game/tools/gui/images/textEdit_green_image.asset.taml create mode 100644 Templates/BaseGame/game/tools/gui/images/textEdit_magenta_image.asset.taml create mode 100644 Templates/BaseGame/game/tools/gui/images/textEdit_red_image.asset.taml create mode 100644 Templates/BaseGame/game/tools/gui/images/textEdit_white_image.asset.taml create mode 100644 Templates/BaseGame/game/tools/gui/images/textEdit_yellow_image.asset.taml create mode 100644 Templates/BaseGame/game/tools/gui/images/uv-editor-btn_i_image.asset.taml diff --git a/Engine/source/gui/controls/guiColorPicker.cpp b/Engine/source/gui/controls/guiColorPicker.cpp index 7ca985a20..d313d3412 100644 --- a/Engine/source/gui/controls/guiColorPicker.cpp +++ b/Engine/source/gui/controls/guiColorPicker.cpp @@ -29,6 +29,7 @@ #include "gui/controls/guiColorPicker.h" #include "gfx/primBuilder.h" #include "gfx/gfxDrawUtil.h" +#include "postFx/postEffectManager.h" IMPLEMENT_CONOBJECT(GuiColorPickerCtrl); @@ -47,15 +48,23 @@ GuiColorPickerCtrl::GuiColorPickerCtrl() mActive = true; mSelectorGap = 1; mActionOnMove = false; + mDropperActive = false; mShowReticle = true; mSelectedHue = 0; mSelectedAlpha = 255; mSelectedSaturation = 100; mSelectedBrightness = 100; + eyeDropperPos = Point2I::Zero; + eyeDropperCap = NULL; } GuiColorPickerCtrl::~GuiColorPickerCtrl() { + if (eyeDropperCap != NULL) + { + delete eyeDropperCap; + eyeDropperCap = NULL; + } } ImplementEnumType( GuiColorPickMode, @@ -314,6 +323,32 @@ void GuiColorPickerCtrl::renderAlphaSelector(RectI& bounds) GFX->getDrawUtil()->drawRectFill(selectorRect, currentColor, 2.0f, ColorI::WHITE); } +void GuiColorPickerCtrl::renderEyeDropper() +{ + if (eyeDropperCap != NULL) + { + GFX->getDrawUtil()->drawBitmap(eyeHandle, getRoot()->getPosition()); + + Point2I resolution = getRoot()->getExtent(); + Point2I magnifierSize(100, 100); + Point2I magnifierPosition = eyeDropperPos + Point2I(20, 20); + + // Adjust position to ensure magnifier stays on screen + if (magnifierPosition.x + magnifierSize.x > resolution.x) + magnifierPosition.x = eyeDropperPos.x - magnifierSize.x - 20; + if (magnifierPosition.y + magnifierSize.y > resolution.y) + magnifierPosition.y = eyeDropperPos.y - magnifierSize.y - 20; + + RectI magnifierBounds(magnifierPosition, magnifierSize); + + ColorI currentColor; + currentColor.set(ColorI::Hsb(mSelectedHue, mSelectedSaturation, mSelectedBrightness)); + currentColor.alpha = mSelectedAlpha; + + GFX->getDrawUtil()->drawRectFill(magnifierBounds, currentColor, 2.0f, ColorI::BLACK); + } +} + void GuiColorPickerCtrl::onRender(Point2I offset, const RectI& updateRect) { if (mStateBlock.isNull()) @@ -356,6 +391,15 @@ void GuiColorPickerCtrl::onRender(Point2I offset, const RectI& updateRect) if (mShowReticle) renderAlphaSelector(boundsRect); break; } + case GuiColorPickerCtrl::pDropperBackground: + { + if (mDropperActive) + { + // Render the magnified view of our currently selected color. + renderEyeDropper(); + } + break; + } default: break; } @@ -364,72 +408,31 @@ void GuiColorPickerCtrl::onRender(Point2I offset, const RectI& updateRect) renderChildControls(offset, updateRect); } -Point2I GuiColorPickerCtrl::findColor(const LinearColorF & color, const Point2I& offset, const Point2I& resolution, GBitmap& bmp) -{ - Point2I ext = getExtent(); - Point2I closestPos(-1, -1); - - /* Debugging - char filename[256]; - dSprintf( filename, 256, "%s.%s", "colorPickerTest", "png" ); - - // Open up the file on disk. - FileStream fs; - if ( !fs.open( filename, Torque::FS::File::Write ) ) - Con::errorf( "GuiObjectView::saveAsImage() - Failed to open output file '%s'!", filename ); - else - { - // Write it and close. - bmp.writeBitmap( "png", fs ); - - fs.close(); - } - */ - - ColorI tmp; - U32 buf_x; - U32 buf_y; - LinearColorF curColor; - F32 val(10000.0f); - F32 closestVal(10000.0f); - bool closestSet = false; - - for (S32 x = 0; x < ext.x; x++) - { - for (S32 y = 0; y < ext.y; y++) - { - buf_x = offset.x + x; - buf_y = (resolution.y - (offset.y + y)); - buf_y = resolution.y - buf_y; - - //Get the color at that position - bmp.getColor(buf_x, buf_y, tmp); - curColor = (LinearColorF)tmp; - - //Evaluate how close the color is to our desired color - val = mFabs(color.red - curColor.red) + mFabs(color.green - curColor.green) + mFabs(color.blue - curColor.blue); - - if (!closestSet) - { - closestVal = val; - closestPos.set(x, y); - closestSet = true; - } - else if (val < closestVal) - { - closestVal = val; - closestPos.set(x, y); - } - } - } - - return closestPos; -} - void GuiColorPickerCtrl::onMouseDown(const GuiEvent &event) { if (!mActive) return; + + // we need to do this first. + if (mDisplayMode == GuiColorPickerCtrl::pDropperBackground) { + if (mDropperActive) + { + mDropperActive = false; + + //getRoot()->pushObjectToBack(this); + + onAction(); + mouseUnlock(); + + if (eyeDropperCap != NULL) + { + delete eyeDropperCap; + eyeDropperCap = NULL; + } + } + + return; + } mouseLock(this); @@ -574,6 +577,29 @@ void GuiColorPickerCtrl::onMouseDragged(const GuiEvent &event) void GuiColorPickerCtrl::onMouseMove(const GuiEvent &event) { + if (mDisplayMode != pDropperBackground) + return; + + if (!mDropperActive) + return; + + // should not need globalToLocal as we are capturing the whole screen. + eyeDropperPos = globalToLocalCoord(event.mousePoint); + + if (eyeDropperCap != NULL) + { + // Sample the pixel color at the mouse position. Mouse position should translate directly. + ColorI sampledColor; + eyeDropperCap->getColor(eyeDropperPos.x, eyeDropperPos.y, sampledColor); + + // Convert the sampled color to HSB + ColorI::Hsb hsb = sampledColor.getHSB(); + mSelectedHue = hsb.hue; + mSelectedSaturation = hsb.sat; + mSelectedBrightness = hsb.brightness; + mSelectedAlpha = sampledColor.alpha; + } + } void GuiColorPickerCtrl::onMouseEnter(const GuiEvent &event) @@ -587,6 +613,15 @@ void GuiColorPickerCtrl::onMouseLeave(const GuiEvent &) mMouseOver = false; } +void GuiColorPickerCtrl::onMouseUp(const GuiEvent&) +{ + //if we released the mouse within this control, perform the action + if (mActive && mMouseDown) + mMouseDown = false; + + mouseUnlock(); +} + void GuiColorPickerCtrl::setSelectedHue(const F64& hueValue) { if (hueValue < 0) @@ -656,13 +691,34 @@ void GuiColorPickerCtrl::setSelectedAlpha(const F64& alphaValue) mSelectedAlpha = alphaValue; } -void GuiColorPickerCtrl::onMouseUp(const GuiEvent &) +void GuiColorPickerCtrl::activateEyeDropper() { - //if we released the mouse within this control, perform the action - if (mActive && mMouseDown) - mMouseDown = false; + // Make sure we are a pDropperBackground + if (mDisplayMode == GuiColorPickerCtrl::pDropperBackground) + { + mouseLock(this); // take over! - mouseUnlock(); + setFirstResponder(); // we need this to be first responder regardless. + + //getRoot()->bringObjectToFront(this); + + mDropperActive = true; + + // Set up our resolution. + Point2I resolution = getRoot()->getExtent(); + + // Texture handle to resolve the target to. + eyeHandle.set(resolution.x, resolution.y, GFXFormatR8G8B8A8_SRGB, &GFXRenderTargetSRGBProfile, avar("%s() - bb (line %d)", __FUNCTION__, __LINE__)); + + // Get our active render target (should be backbuffer). + eyeHandle = PFXMGR->getBackBufferTex(); + + if (eyeHandle.isValid()) + { + eyeDropperCap = new GBitmap(eyeHandle.getWidth(), eyeHandle.getHeight(), false, GFXFormatR8G8B8A8); + eyeHandle.copyToBmp(eyeDropperCap); + } + } } /// @@ -673,6 +729,14 @@ DefineEngineMethod(GuiColorPickerCtrl, executeUpdate, void, (), , "Execute the o object->onAction(); } +/// +/// This command should only be used with guiColorPicker in pDropperBackground mode. +/// +DefineEngineMethod(GuiColorPickerCtrl, activateEyeDropper, void, (), , "Activate the dropper mode.") +{ + object->activateEyeDropper(); +} + DefineEngineMethod(GuiColorPickerCtrl, setSelectedHue, void, (F64 hueValue), , "Sets the selected hue value should be 0-360.") { object->setSelectedHue(hueValue); diff --git a/Engine/source/gui/controls/guiColorPicker.h b/Engine/source/gui/controls/guiColorPicker.h index 48639520a..58a8b8302 100644 --- a/Engine/source/gui/controls/guiColorPicker.h +++ b/Engine/source/gui/controls/guiColorPicker.h @@ -108,23 +108,27 @@ class GuiColorPickerCtrl : public GuiControl /// The bounds of the ctrl. void renderAlphaSelector(RectI& bounds); + void renderEyeDropper(); + /// @name Core Variables /// @{ - PickMode mDisplayMode; ///< Current color display mode of the selector + PickMode mDisplayMode; ///< Current color display mode of the selector SelectorMode mSelectorMode; ///< Current color display mode of the selector F64 mSelectedHue; F64 mSelectedSaturation; F64 mSelectedBrightness; F64 mSelectedAlpha; + Point2I eyeDropperPos; + GBitmap* eyeDropperCap; + GFXTexHandle eyeHandle; - bool mMouseOver; ///< Mouse is over? - bool mMouseDown; ///< Mouse button down? - bool mActionOnMove; ///< Perform onAction() when position has changed? - bool mShowReticle; ///< Show reticle on render + bool mDropperActive; ///< Is the eye dropper active? + bool mMouseOver; ///< Mouse is over? + bool mMouseDown; ///< Mouse button down? + bool mActionOnMove; ///< Perform onAction() when position has changed? + bool mShowReticle; ///< Show reticle on render - Point2I findColor(const LinearColorF & color, const Point2I& offset, const Point2I& resolution, GBitmap& bmp); - - S32 mSelectorGap; ///< The half-way "gap" between the selector pos and where the selector is allowed to draw. + S32 mSelectorGap; ///< The half-way "gap" between the selector pos and where the selector is allowed to draw. GFXStateBlockRef mStateBlock; /// @} @@ -181,6 +185,9 @@ class GuiColorPickerCtrl : public GuiControl /// Alpha value, 0 - 255. void setSelectedAlpha(const F64& alphaValue); F64 getSelectedAlpha() { return mSelectedAlpha; } + + void activateEyeDropper(); + }; typedef GuiColorPickerCtrl::PickMode GuiColorPickMode; diff --git a/Templates/BaseGame/game/tools/gui/colorPicker.ed.gui b/Templates/BaseGame/game/tools/gui/colorPicker.ed.gui index 4c92f0ec9..3c6d60901 100644 --- a/Templates/BaseGame/game/tools/gui/colorPicker.ed.gui +++ b/Templates/BaseGame/game/tools/gui/colorPicker.ed.gui @@ -1,36 +1,25 @@ //--- OBJECT WRITE BEGIN --- $guiContent = new GuiColorPickerCtrl(ColorPickerDlg,EditorGuiGroup) { - displayMode = "Dropper"; // this makes the background visible - actionOnMove = "1"; - position = "0 0"; - extent = "1024 768"; - minExtent = "8 2"; - horizSizing = "right"; - vertSizing = "bottom"; - profile = "ToolsGuiDefaultProfile"; - visible = "1"; - active = "1"; - Clickable = "1"; - AffectChildren = "1"; - tooltipProfile = "GuiToolTipProfile"; - hovertime = "1000"; - isContainer = "1"; - canSave = "1"; - canSaveDynamicFields = "0"; + displayMode = "Dropper"; + extent = "1024 768"; + profile = "GuiDefaultProfile"; + command = "%selHue = ColorPickerDlg.getSelectedHue();\n%selSat = ColorPickerDlg.getSelectedSaturation();\n%selBright = ColorPickerDlg.getSelectedBrightness();\n%selAlpha = ColorPickerDlg.getSelectedAlpha();\n\nColorHueRange.setSelectedHue(%selHue);\nColorHueRange.executeUpdate();\n\nColorBlendRange.setSelectedBrightness(%selBright);\nColorBlendRange.setSelectedSaturation(%selSat);\nColorBlendRange.executeUpdate();\n\nColorAlphaRange.setSelectedAlpha(%selAlpha);\nColorAlphaRange.executeUpdate();\n\nColorEyeDropperButton.setStateOn(false);"; + tooltipProfile = "GuiToolTipProfile"; + isContainer = "1"; new GuiWindowCtrl() { - text = " "; - resizeWidth = "0"; - resizeHeight = "0"; - canMinimize = "0"; - canMaximize = "0"; - closeCommand = "DoColorPickerCancelCallback(); ColorPickerDlg.getRoot().popDialog(ColorPickerDlg);"; - position = "33 33"; - extent = "271 574"; - horizSizing = "windowRelative"; - vertSizing = "windowRelative"; - profile = "ToolsGuiWindowProfile"; - tooltipProfile = "ToolsGuiToolTipProfile"; + text = " "; + resizeWidth = "0"; + resizeHeight = "0"; + canMinimize = "0"; + canMaximize = "0"; + closeCommand = "DoColorPickerCancelCallback(); ColorPickerDlg.getRoot().popDialog(ColorPickerDlg);"; + position = "33 33"; + extent = "271 574"; + horizSizing = "windowRelative"; + vertSizing = "windowRelative"; + profile = "ToolsGuiWindowProfile"; + tooltipProfile = "ToolsGuiToolTipProfile"; new GuiStackControl() { padding = "5"; @@ -268,16 +257,25 @@ $guiContent = new GuiColorPickerCtrl(ColorPickerDlg,EditorGuiGroup) { text = "Apply"; position = "211 1"; extent = "52 20"; - command = "DoColorPickerCallback();"; profile = "ToolsGuiButtonProfile"; + command = "DoColorPickerCallback();"; tooltipProfile = "GuiToolTipProfile"; }; new GuiButtonCtrl() { text = "Cancel"; position = "211 24"; extent = "52 20"; - command = "DoColorPickerCancelCallback();"; profile = "ToolsGuiButtonProfile"; + command = "DoColorPickerCancelCallback();"; + tooltipProfile = "GuiToolTipProfile"; + }; + new GuiBitmapButtonCtrl(ColorEyeDropperButton) { + BitmapAsset = "ToolsModule:eyedropper_n_image"; + buttonType = "ToggleButton"; + position = "223 56"; + extent = "25 25"; + profile = "ToolsGuiCheckBoxProfile"; + command = "ColorPickerDlg.activateEyeDropper();"; tooltipProfile = "GuiToolTipProfile"; }; }; diff --git a/Templates/BaseGame/game/tools/gui/images/add-simgroup-btn_ctrl_i_image.asset.taml b/Templates/BaseGame/game/tools/gui/images/add-simgroup-btn_ctrl_i_image.asset.taml new file mode 100644 index 000000000..ad5abe6ce --- /dev/null +++ b/Templates/BaseGame/game/tools/gui/images/add-simgroup-btn_ctrl_i_image.asset.taml @@ -0,0 +1,3 @@ + diff --git a/Templates/BaseGame/game/tools/gui/images/add-simgroup-btn_i_image.asset.taml b/Templates/BaseGame/game/tools/gui/images/add-simgroup-btn_i_image.asset.taml new file mode 100644 index 000000000..652dbaa97 --- /dev/null +++ b/Templates/BaseGame/game/tools/gui/images/add-simgroup-btn_i_image.asset.taml @@ -0,0 +1,3 @@ + diff --git a/Templates/BaseGame/game/tools/gui/images/camera-btn_i_image.asset.taml b/Templates/BaseGame/game/tools/gui/images/camera-btn_i_image.asset.taml new file mode 100644 index 000000000..b256d1f27 --- /dev/null +++ b/Templates/BaseGame/game/tools/gui/images/camera-btn_i_image.asset.taml @@ -0,0 +1,3 @@ + diff --git a/Templates/BaseGame/game/tools/gui/images/clear-icon_i_image.asset.taml b/Templates/BaseGame/game/tools/gui/images/clear-icon_i_image.asset.taml new file mode 100644 index 000000000..bf9066933 --- /dev/null +++ b/Templates/BaseGame/game/tools/gui/images/clear-icon_i_image.asset.taml @@ -0,0 +1,3 @@ + diff --git a/Templates/BaseGame/game/tools/gui/images/delete_i_image.asset.taml b/Templates/BaseGame/game/tools/gui/images/delete_i_image.asset.taml new file mode 100644 index 000000000..0af4b8434 --- /dev/null +++ b/Templates/BaseGame/game/tools/gui/images/delete_i_image.asset.taml @@ -0,0 +1,3 @@ + diff --git a/Templates/BaseGame/game/tools/gui/images/dropdown-button-arrow_d_image.asset.taml b/Templates/BaseGame/game/tools/gui/images/dropdown-button-arrow_d_image.asset.taml new file mode 100644 index 000000000..50cf4e2ef --- /dev/null +++ b/Templates/BaseGame/game/tools/gui/images/dropdown-button-arrow_d_image.asset.taml @@ -0,0 +1,3 @@ + diff --git a/Templates/BaseGame/game/tools/gui/images/dropdown-button-arrow_h_image.asset.taml b/Templates/BaseGame/game/tools/gui/images/dropdown-button-arrow_h_image.asset.taml new file mode 100644 index 000000000..f352d6fc0 --- /dev/null +++ b/Templates/BaseGame/game/tools/gui/images/dropdown-button-arrow_h_image.asset.taml @@ -0,0 +1,3 @@ + diff --git a/Templates/BaseGame/game/tools/gui/images/dropdown-button-arrow_i_image.asset.taml b/Templates/BaseGame/game/tools/gui/images/dropdown-button-arrow_i_image.asset.taml new file mode 100644 index 000000000..dfe09e6e3 --- /dev/null +++ b/Templates/BaseGame/game/tools/gui/images/dropdown-button-arrow_i_image.asset.taml @@ -0,0 +1,3 @@ + diff --git a/Templates/BaseGame/game/tools/gui/images/dropdown-button-arrow_n_image.asset.taml b/Templates/BaseGame/game/tools/gui/images/dropdown-button-arrow_n_image.asset.taml new file mode 100644 index 000000000..eeb0c947b --- /dev/null +++ b/Templates/BaseGame/game/tools/gui/images/dropdown-button-arrow_n_image.asset.taml @@ -0,0 +1,3 @@ + diff --git a/Templates/BaseGame/game/tools/gui/images/eyedropper_d.png b/Templates/BaseGame/game/tools/gui/images/eyedropper_d.png new file mode 100644 index 0000000000000000000000000000000000000000..adeb5b79e0f4e17579fd03f78b8c93ef07c459bc GIT binary patch literal 1123 zcmV-p1f2VcP)EX>4Tx04R}tkv&MmP!xqvQ>7vm2aAe0WT;Md(ISqeibb$c+6t{Yn7s54nlvOS zE{=k0!NH%!s)LKOt`4q(Aov5~E;uQ=NQw6)g%&Yhc)XAE?m4`7A0RZVOf`FAfT~$W zIuRFh`BgFS3Ll0sf*_(2GxcOT7x~Fccy9m$n?)$R_l!D0spGX{Ix?vG-5YKK} zI_G`j5GzXx@j3C7K^G)`lrQ95 zRyc2QR;zW^z9)ZSu%NAExK3*v2`nLr6hz3Vqk<|dL}=GYF_EV8xQBnt@u$coldA$o zjs?`9LUR1zfAD*@W^rcPO$x?=-WS{cm;eI1K&xTf-^aGyIsyF8z?IhV*P6iGC+Urj z7Cr(7w}Ff6jwbH`mpj1dlP(#OBl&3w#Uk*2M&FbNhHioWHFs|9bDTZ^S(?@I4RCM> zOqM8n-Q(ST-E;f5r#-(P()n`D+^se800006VoOIv0BZoL0A5Yo=RW`d010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=>ZlOFcBFNV(kC`02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00JRNL_t(o!|m2PXjD-U2H-E71dI_>e4|2$5y6NkW-GzM zDrg}n2$DiUEsl+#2);lNUyX&;0TIzgun-|#Kr4$VMhQZ|G@@vfAVCFDHzpgKQ-mcC zvwL?No$lUy?)?AE{4;a-*R3vVharRpti$5;Y6S0MjH6SXZ^#(D5&Lik%Ts`ZIE~(_ zWgvu5hlMzZtC*L3Phb?Uu{*{%RQhi&qu`ry3|G)p64*GFV&zmnW<_8LIum$lhMN+B z^_giPgiwza7>+THV+}UXP|^{+%~FJ`aULH+2;InI!8B)orP932lE5#=>-t>dQgz>+37#^Z5ZhLpwI6PZKHSy*PzC zGl5q+h>F;N?UTTNq8~TW6Jz{6o0Ce~umva3n817R0*i1qk(<>jX~R8eO9Je{ku(i= z;8G$Y^9&^L4s@je9wDTeFo?U@i>FoDh9QL31k!;|ID{uL#))#WnVTc{d>l{UW4Mmq za>3_BAg$VyY3bDAKJNXE(zD9ImL#-X>i=u_TIm*>YZrXM`!rsT&LhN| p0000EWmrjOO-%qQ00008000000002eQ diff --git a/Templates/BaseGame/game/tools/gui/images/eyedropper_h.png b/Templates/BaseGame/game/tools/gui/images/eyedropper_h.png new file mode 100644 index 0000000000000000000000000000000000000000..e6f20028169b2fe8ec5ebae6aacbd2114a77a4d5 GIT binary patch literal 1064 zcmV+@1lRkCP)EX>4Tx04R}tkv&MmP!xqvQ>7vm2aAe0WT;Md(ISqeibb$c+6t{Yn7s54nlvOS zE{=k0!NH%!s)LKOt`4q(Aov5~E;uQ=NQw6)g%&Yhc)XAE?m4`7A0RZVOf`FAfT~$W zIuRFh`BgFS3Ll0sf*_(2GxcOT7x~Fccy9m$n?)$R_l!D0spGX{Ix?vG-5YKK} zI_G`j5GzXx@j3C7K^G)`lrQ95 zRyc2QR;zW^z9)ZSu%NAExK3*v2`nLr6hz3Vqk<|dL}=GYF_EV8xQBnt@u$coldA$o zjs?`9LUR1zfAD*@W^rcPO$x?=-WS{cm;eI1K&xTf-^aGyIsyF8z?IhV*P6iGC+Urj z7Cr(7w}Ff6jwbH`mpj1dlP(#OBl&3w#Uk*2M&FbNhHioWHFs|9bDTZ^S(?@I4RCM> zOqM8n-Q(ST-E;f5r#-(P()n`D+^se800006VoOIv0BZoL0A5Yo=RW`d010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=>ZlOE+TS+JR|@B02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00HJnL_t(o!{yh_i%($`2k`GTFB&XnjD@@l&%O8i zea`uw=bW3&cdOd{L3AcrpQNw2#*@6Ps_JX)yFnNB;{o2_EpA|E-M|%kaSRif^2??$ ziThYtCxIn6iBEpFsp1>OmR9dBXcLG2Bzuzdw9r^jl4VIYw2c5dumT;$wJOQr9HJgi z@}kv3=YQ^aWs>0}qqvl0Ymy~@cy=<$nI!kxne#1pitl)ghg#bYoW;UA%IzRt;a$0A z1AoLYdg`qC-MBVO^%J;`edwyQ^g3_|UuTuvZ5(KO*jo@-k4H1Wui|F$jbO0u-54Qu-;TRQY*(=wRax)GE_ByLU>$DZGoE8;8oY^aw+QD7_(vSARp~9t z?o`S7Brc$@vB?En@v`Lo1_s&@`hV>O?~}Yvaw5s|s;V>@fv(a6*39UF_0EJvV4KSA zqpGUDH9E0k2cF>xwlxjD7?)=pwWr$|`oAG?q$qycMzFTsICG6;6SFijkYsa{1imDh zS!Rl_u@o%D#gc|eoJVhCzh>o>>rb*b$yky*Nj@}s_{TF0000 diff --git a/Templates/BaseGame/game/tools/gui/images/eyedropper_i.png b/Templates/BaseGame/game/tools/gui/images/eyedropper_i.png new file mode 100644 index 0000000000000000000000000000000000000000..c48e15d7f7e8fafd3b48df017e6bf4b032c45784 GIT binary patch literal 1083 zcmV-B1jPG^P)EX>4Tx04R}tkv&MmP!xqvQ>7vm2aAe0WT;Md(ISqeibb$c+6t{Yn7s54nlvOS zE{=k0!NH%!s)LKOt`4q(Aov5~E;uQ=NQw6)g%&Yhc)XAE?m4`7A0RZVOf`FAfT~$W zIuRFh`BgFS3Ll0sf*_(2GxcOT7x~Fccy9m$n?)$R_l!D0spGX{Ix?vG-5YKK} zI_G`j5GzXx@j3C7K^G)`lrQ95 zRyc2QR;zW^z9)ZSu%NAExK3*v2`nLr6hz3Vqk<|dL}=GYF_EV8xQBnt@u$coldA$o zjs?`9LUR1zfAD*@W^rcPO$x?=-WS{cm;eI1K&xTf-^aGyIsyF8z?IhV*P6iGC+Urj z7Cr(7w}Ff6jwbH`mpj1dlP(#OBl&3w#Uk*2M&FbNhHioWHFs|9bDTZ^S(?@I4RCM> zOqM8n-Q(ST-E;f5r#-(P()n`D+^se800006VoOIv0BZoL0A5Yo=RW`d010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=>ZlOFepYB>g50c02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00H?)L_t(o!|m4FYEw}V2H-ETt+lm{r%DkOMFsH$7Pbi9 z`8NBB*5iocg-X;Sf(P`XT0w)gVh2~HoiQr?nj60abXsijG%(Co5ymR3Qd-A)p65TJ|2KvefhpV$;jLmmrL?;J zG4lSoS7+5d-hKqvA_6VED4KGm6NpiJ16N|}J>K=A^s*vwJjQJ$@;jeWY7RQZ_Nswq z diff --git a/Templates/BaseGame/game/tools/gui/images/eyedropper_n.png b/Templates/BaseGame/game/tools/gui/images/eyedropper_n.png new file mode 100644 index 0000000000000000000000000000000000000000..4bc1ed2198c4237362ffb8480972a3076432b333 GIT binary patch literal 1097 zcmV-P1h)H$P)EX>4Tx04R}tkv&MmP!xqvQ>7vm2aAe0WT;Md(ISqeibb$c+6t{Yn7s54nlvOS zE{=k0!NH%!s)LKOt`4q(Aov5~E;uQ=NQw6)g%&Yhc)XAE?m4`7A0RZVOf`FAfT~$W zIuRFh`BgFS3Ll0sf*_(2GxcOT7x~Fccy9m$n?)$R_l!D0spGX{Ix?vG-5YKK} zI_G`j5GzXx@j3C7K^G)`lrQ95 zRyc2QR;zW^z9)ZSu%NAExK3*v2`nLr6hz3Vqk<|dL}=GYF_EV8xQBnt@u$coldA$o zjs?`9LUR1zfAD*@W^rcPO$x?=-WS{cm;eI1K&xTf-^aGyIsyF8z?IhV*P6iGC+Urj z7Cr(7w}Ff6jwbH`mpj1dlP(#OBl&3w#Uk*2M&FbNhHioWHFs|9bDTZ^S(?@I4RCM> zOqM8n-Q(ST-E;f5r#-(P()n`D+^se800006VoOIv0BZoL0A5Yo=RW`d010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=>ZlOFCuH04P^iT02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00IX|L_t(o!{yh_OH@%92Jqh*H8HJB%f7J)B*+MgiXbQm zp<46-{RjO??OO!xqOF0osy5L^$Y_)H0aAn|DG54y+PuOrj5f~PnT=<6?mhQB&-?K_ z=Ule?NJVd$b1q>&dgIX|ex;PkwbpkQ4BmlrxPjgA_y?Y0x@8&2IVbesGVVoS2^p*S zj)y6w`RZ>=1qHtYS8*3zRe`Oc4|{5TSQLRioDT5n40px*p~48{oJ%?9{%APp$I(qn zx`??Vo3J0ZFrRat#Bp?Qu(phGd@Yi|E}X(3E<~McWi#U?UT-AB)P&qF;dV5j3f->* zFXK5TQc5d@8&Qxrfjbzf04`$&FYrF4w7S_o%@|R}0i3LuuizVAVd{V2&B|~PW9SI* z5BP$exQT=HY|`1N3~@F*e+^T39Bw!gW$9@NfdC(lChUmFpI{-S^e5*$huO$ROENHk z`#2QlGLHF_QihP*r+POlZ87>CxE>i;!vv<+!5bN+Ey`{T*FwJU@V1^#FDe7aa3#QJ z!eo}3J;k=#1Ap-wPw}&v)HmdOIp^V=^FYNZ*xEZ`)ctTwXPd2eBPAHdgSb{b!snt1 zls1XJJ1liy+-63LOnp5nxQH_qr8OEiz zkzxF7^kNhX;eJbPHJ@!U{s9L+qGRTg)vo{m01jnXNoGw=04e|g00;m8000000Mb*F P00000NkvXXu0mjfiuL17 literal 0 HcmV?d00001 diff --git a/Templates/BaseGame/game/tools/gui/images/eyedropper_n_image.asset.taml b/Templates/BaseGame/game/tools/gui/images/eyedropper_n_image.asset.taml new file mode 100644 index 000000000..89a658bfa --- /dev/null +++ b/Templates/BaseGame/game/tools/gui/images/eyedropper_n_image.asset.taml @@ -0,0 +1,3 @@ + diff --git a/Templates/BaseGame/game/tools/gui/images/folder_d_image.asset.taml b/Templates/BaseGame/game/tools/gui/images/folder_d_image.asset.taml new file mode 100644 index 000000000..19f226dec --- /dev/null +++ b/Templates/BaseGame/game/tools/gui/images/folder_d_image.asset.taml @@ -0,0 +1,3 @@ + diff --git a/Templates/BaseGame/game/tools/gui/images/folder_h_image.asset.taml b/Templates/BaseGame/game/tools/gui/images/folder_h_image.asset.taml new file mode 100644 index 000000000..2b3f8f34b --- /dev/null +++ b/Templates/BaseGame/game/tools/gui/images/folder_h_image.asset.taml @@ -0,0 +1,3 @@ + diff --git a/Templates/BaseGame/game/tools/gui/images/folder_i_image.asset.taml b/Templates/BaseGame/game/tools/gui/images/folder_i_image.asset.taml new file mode 100644 index 000000000..04d8c37c1 --- /dev/null +++ b/Templates/BaseGame/game/tools/gui/images/folder_i_image.asset.taml @@ -0,0 +1,3 @@ + diff --git a/Templates/BaseGame/game/tools/gui/images/folder_n_image.asset.taml b/Templates/BaseGame/game/tools/gui/images/folder_n_image.asset.taml new file mode 100644 index 000000000..4fcd53625 --- /dev/null +++ b/Templates/BaseGame/game/tools/gui/images/folder_n_image.asset.taml @@ -0,0 +1,3 @@ + diff --git a/Templates/BaseGame/game/tools/gui/images/images_menuGrid_d_image.asset.taml b/Templates/BaseGame/game/tools/gui/images/images_menuGrid_d_image.asset.taml new file mode 100644 index 000000000..b743dfda7 --- /dev/null +++ b/Templates/BaseGame/game/tools/gui/images/images_menuGrid_d_image.asset.taml @@ -0,0 +1,3 @@ + diff --git a/Templates/BaseGame/game/tools/gui/images/images_menuGrid_h_image.asset.taml b/Templates/BaseGame/game/tools/gui/images/images_menuGrid_h_image.asset.taml new file mode 100644 index 000000000..6205526f1 --- /dev/null +++ b/Templates/BaseGame/game/tools/gui/images/images_menuGrid_h_image.asset.taml @@ -0,0 +1,3 @@ + diff --git a/Templates/BaseGame/game/tools/gui/images/images_menuGrid_image.asset.taml b/Templates/BaseGame/game/tools/gui/images/images_menuGrid_image.asset.taml new file mode 100644 index 000000000..779ddd4ee --- /dev/null +++ b/Templates/BaseGame/game/tools/gui/images/images_menuGrid_image.asset.taml @@ -0,0 +1,3 @@ + diff --git a/Templates/BaseGame/game/tools/gui/images/images_menuGrid_n_image.asset.taml b/Templates/BaseGame/game/tools/gui/images/images_menuGrid_n_image.asset.taml new file mode 100644 index 000000000..a56f2bdf5 --- /dev/null +++ b/Templates/BaseGame/game/tools/gui/images/images_menuGrid_n_image.asset.taml @@ -0,0 +1,3 @@ + diff --git a/Templates/BaseGame/game/tools/gui/images/layers-btn_i_image.asset.taml b/Templates/BaseGame/game/tools/gui/images/layers-btn_i_image.asset.taml new file mode 100644 index 000000000..c795223c1 --- /dev/null +++ b/Templates/BaseGame/game/tools/gui/images/layers-btn_i_image.asset.taml @@ -0,0 +1,3 @@ + diff --git a/Templates/BaseGame/game/tools/gui/images/lock_i_image.asset.taml b/Templates/BaseGame/game/tools/gui/images/lock_i_image.asset.taml new file mode 100644 index 000000000..d0b0ec133 --- /dev/null +++ b/Templates/BaseGame/game/tools/gui/images/lock_i_image.asset.taml @@ -0,0 +1,3 @@ + diff --git a/Templates/BaseGame/game/tools/gui/images/new-folder-btn_i_image.asset.taml b/Templates/BaseGame/game/tools/gui/images/new-folder-btn_i_image.asset.taml new file mode 100644 index 000000000..d3dd1b751 --- /dev/null +++ b/Templates/BaseGame/game/tools/gui/images/new-folder-btn_i_image.asset.taml @@ -0,0 +1,3 @@ + diff --git a/Templates/BaseGame/game/tools/gui/images/new_i_image.asset.taml b/Templates/BaseGame/game/tools/gui/images/new_i_image.asset.taml new file mode 100644 index 000000000..6e1adc880 --- /dev/null +++ b/Templates/BaseGame/game/tools/gui/images/new_i_image.asset.taml @@ -0,0 +1,3 @@ + diff --git a/Templates/BaseGame/game/tools/gui/images/numericslider_image.asset.taml b/Templates/BaseGame/game/tools/gui/images/numericslider_image.asset.taml new file mode 100644 index 000000000..b869224ef --- /dev/null +++ b/Templates/BaseGame/game/tools/gui/images/numericslider_image.asset.taml @@ -0,0 +1,3 @@ + diff --git a/Templates/BaseGame/game/tools/gui/images/open-file_i_image.asset.taml b/Templates/BaseGame/game/tools/gui/images/open-file_i_image.asset.taml new file mode 100644 index 000000000..954425721 --- /dev/null +++ b/Templates/BaseGame/game/tools/gui/images/open-file_i_image.asset.taml @@ -0,0 +1,3 @@ + diff --git a/Templates/BaseGame/game/tools/gui/images/reset-icon_i_image.asset.taml b/Templates/BaseGame/game/tools/gui/images/reset-icon_i_image.asset.taml new file mode 100644 index 000000000..e7f5929f4 --- /dev/null +++ b/Templates/BaseGame/game/tools/gui/images/reset-icon_i_image.asset.taml @@ -0,0 +1,3 @@ + diff --git a/Templates/BaseGame/game/tools/gui/images/selector-button_image.asset.taml b/Templates/BaseGame/game/tools/gui/images/selector-button_image.asset.taml new file mode 100644 index 000000000..bf61a6c0f --- /dev/null +++ b/Templates/BaseGame/game/tools/gui/images/selector-button_image.asset.taml @@ -0,0 +1,3 @@ + diff --git a/Templates/BaseGame/game/tools/gui/images/tab-border_image.asset.taml b/Templates/BaseGame/game/tools/gui/images/tab-border_image.asset.taml new file mode 100644 index 000000000..13e8e4439 --- /dev/null +++ b/Templates/BaseGame/game/tools/gui/images/tab-border_image.asset.taml @@ -0,0 +1,3 @@ + diff --git a/Templates/BaseGame/game/tools/gui/images/textEdit_black_image.asset.taml b/Templates/BaseGame/game/tools/gui/images/textEdit_black_image.asset.taml new file mode 100644 index 000000000..e98e0d81a --- /dev/null +++ b/Templates/BaseGame/game/tools/gui/images/textEdit_black_image.asset.taml @@ -0,0 +1,3 @@ + diff --git a/Templates/BaseGame/game/tools/gui/images/textEdit_blue_image.asset.taml b/Templates/BaseGame/game/tools/gui/images/textEdit_blue_image.asset.taml new file mode 100644 index 000000000..f3f3a8cb2 --- /dev/null +++ b/Templates/BaseGame/game/tools/gui/images/textEdit_blue_image.asset.taml @@ -0,0 +1,3 @@ + diff --git a/Templates/BaseGame/game/tools/gui/images/textEdit_cyan_image.asset.taml b/Templates/BaseGame/game/tools/gui/images/textEdit_cyan_image.asset.taml new file mode 100644 index 000000000..695ce779c --- /dev/null +++ b/Templates/BaseGame/game/tools/gui/images/textEdit_cyan_image.asset.taml @@ -0,0 +1,3 @@ + diff --git a/Templates/BaseGame/game/tools/gui/images/textEdit_green_image.asset.taml b/Templates/BaseGame/game/tools/gui/images/textEdit_green_image.asset.taml new file mode 100644 index 000000000..8748f435d --- /dev/null +++ b/Templates/BaseGame/game/tools/gui/images/textEdit_green_image.asset.taml @@ -0,0 +1,3 @@ + diff --git a/Templates/BaseGame/game/tools/gui/images/textEdit_magenta_image.asset.taml b/Templates/BaseGame/game/tools/gui/images/textEdit_magenta_image.asset.taml new file mode 100644 index 000000000..c1e9b1168 --- /dev/null +++ b/Templates/BaseGame/game/tools/gui/images/textEdit_magenta_image.asset.taml @@ -0,0 +1,3 @@ + diff --git a/Templates/BaseGame/game/tools/gui/images/textEdit_red_image.asset.taml b/Templates/BaseGame/game/tools/gui/images/textEdit_red_image.asset.taml new file mode 100644 index 000000000..068a48c26 --- /dev/null +++ b/Templates/BaseGame/game/tools/gui/images/textEdit_red_image.asset.taml @@ -0,0 +1,3 @@ + diff --git a/Templates/BaseGame/game/tools/gui/images/textEdit_white_image.asset.taml b/Templates/BaseGame/game/tools/gui/images/textEdit_white_image.asset.taml new file mode 100644 index 000000000..7b50f7bea --- /dev/null +++ b/Templates/BaseGame/game/tools/gui/images/textEdit_white_image.asset.taml @@ -0,0 +1,3 @@ + diff --git a/Templates/BaseGame/game/tools/gui/images/textEdit_yellow_image.asset.taml b/Templates/BaseGame/game/tools/gui/images/textEdit_yellow_image.asset.taml new file mode 100644 index 000000000..eec442900 --- /dev/null +++ b/Templates/BaseGame/game/tools/gui/images/textEdit_yellow_image.asset.taml @@ -0,0 +1,3 @@ + diff --git a/Templates/BaseGame/game/tools/gui/images/uv-editor-btn_i_image.asset.taml b/Templates/BaseGame/game/tools/gui/images/uv-editor-btn_i_image.asset.taml new file mode 100644 index 000000000..385b79fa3 --- /dev/null +++ b/Templates/BaseGame/game/tools/gui/images/uv-editor-btn_i_image.asset.taml @@ -0,0 +1,3 @@ + From 48ca98ca84c682e9c22a192fe19c016f7d82b570 Mon Sep 17 00:00:00 2001 From: marauder2k7 Date: Thu, 23 Jan 2025 14:46:05 +0000 Subject: [PATCH 02/91] color palette saving for now saves palette colours as their hex value. This will miss out on the alpha value. --- Engine/source/core/color.h | 1 + .../game/tools/gui/colorPicker.ed.gui | 109 ++++++++++++++++-- 2 files changed, 99 insertions(+), 11 deletions(-) diff --git a/Engine/source/core/color.h b/Engine/source/core/color.h index 2b6ade809..c4e1ffe13 100644 --- a/Engine/source/core/color.h +++ b/Engine/source/core/color.h @@ -550,6 +550,7 @@ inline void ColorI::set(const String& hex) red = (U8)(convertFromHex(redString)); green = (U8)(convertFromHex(greenString)); blue = (U8)(convertFromHex(blueString)); + alpha = 255; } inline S32 ColorI::convertFromHex(const String& hex) const diff --git a/Templates/BaseGame/game/tools/gui/colorPicker.ed.gui b/Templates/BaseGame/game/tools/gui/colorPicker.ed.gui index 3c6d60901..236262deb 100644 --- a/Templates/BaseGame/game/tools/gui/colorPicker.ed.gui +++ b/Templates/BaseGame/game/tools/gui/colorPicker.ed.gui @@ -26,7 +26,7 @@ $guiContent = new GuiColorPickerCtrl(ColorPickerDlg,EditorGuiGroup) { changeChildSizeToFit = "0"; changeChildPosition = "0"; position = "0 24"; - extent = "271 481"; + extent = "271 491"; profile = "GuiDefaultProfile"; tooltipProfile = "GuiToolTipProfile"; @@ -283,20 +283,26 @@ $guiContent = new GuiColorPickerCtrl(ColorPickerDlg,EditorGuiGroup) { }; new GuiRolloutCtrl() { caption = ":: Color Palette"; + margin = "5 5 5 5"; position = "0 445"; - extent = "271 36"; + extent = "271 46"; profile = "GuiRolloutProfile"; tooltipProfile = "GuiToolTipProfile"; - new GuiStackControl() { - stackingType = "Dynamic"; - padding = "5"; - changeChildSizeToFit = "0"; - position = "0 17"; - extent = "271 16"; - profile = "GuiDefaultProfile"; - tooltipProfile = "GuiToolTipProfile"; - }; + new GuiDynamicCtrlArrayControl(ColorPaletteStack) { + colCount = "12"; + colSize = "12"; + rowSize = "12"; + rowCount = "3"; + rowSpacing = "1"; + colSpacing = "1"; + dynamicSize = "1"; + padding = "3 3 3 3"; + position = "0 17"; + extent = "271 47"; + profile = "GuiDefaultProfile"; + tooltipProfile = "GuiToolTipProfile"; + }; }; }; }; @@ -342,6 +348,87 @@ function GetColorF( %currentColor, %callback, %root, %updateCallback, %cancelCal %root.pushDialog(ColorPickerDlg); } +function ColorPaletteStack::onWake(%this) +{ + if($Pref::ColorPicker::ColorPalette $= "") + { + $Pref::ColorPicker::ColorPalette = "#FFFFFF #FF0000 #00FF00 #0000FF"; + } + + %colorCount = getWordCount($Pref::ColorPicker::ColorPalette); + + if(%colorCount > 63) + %colorCount = 63; + + for(%i=0; %i < %colorCount; %i++) + { + %hex = getWord($Pref::ColorPicker::ColorPalette, %i); + %rgb = ColorHEXToRGB(%hex); + %rgb = ColorIntToFloat(%rgb); + + %colorBox = new GuiSwatchButtonCtrl() { + extent = "16 16"; + color = %rgb; + profile = "GuiDefaultProfile"; + colorHex = %hex; + useMouseEvents = "1"; + class = "ColorPaletteSwatch"; + }; + + ColorPaletteStack.Add(%colorBox); + } + + %button = new GuiButtonCtrl() { + text = "+"; + extent = "16 16"; + profile = "ToolsGuiButtonProfile"; + tooltipProfile = "GuiToolTipProfile"; + command = "ColorPaletteStack.addCurrentColorToStack();"; + }; + + ColorPaletteStack.Add(%button); +} + +function ColorPaletteStack::addCurrentColorToStack(%this) +{ + %hex = HexTextEditor.getValue(); + //Make sure we have 6 characters + while(strlen(%hex) < 6) + { + %hex = "0" @ %hex; + } + %hex = strupr(%hex); + + $Pref::ColorPicker::ColorPalette = "#" @ %hex SPC $Pref::ColorPicker::ColorPalette; + ColorPaletteStack.clear(); + ColorPaletteStack.onWake(); +} + +function ColorPaletteStack::onSleep(%this) +{ + ColorPaletteStack.clear(); +} + +function ColorPaletteSwatch::onMouseDown(%this) +{ + //Update all the other color fields + %rgb = ColorHEXToRGB(%this.colorHex); + %hsb = ColorRGBToHSB(%rgb); + + // these automatically update our ColorNewSelected which + // updates all text fields including these. + ColorHueRange.setSelectedHue(getWord(%hsb, 0)); + ColorHueRange.executeUpdate(); + + ColorBlendRange.setSelectedSaturation(getWord(%hsb, 1)); + ColorBlendRange.setSelectedBrightness(getWord(%hsb, 2)); + ColorBlendRange.executeUpdate(); + + // for now just set full alpha until we save out alpha as well + ColorAlphaRange.setSelectedAlpha(255); + ColorAlphaRange.executeUpdate(); +} + function ColorPickerRGBClass::onValidate(%this) { %red = RedTextEdit.getValue(); From fa1380acc5ee53dfd692010471ab932ca593446c Mon Sep 17 00:00:00 2001 From: AzaezelX Date: Thu, 23 Jan 2025 11:18:52 -0600 Subject: [PATCH 03/91] add missing shaderData defines. don't ask if something exists before creating it --- .../rendering/scripts/gfxData/shaders.tscript | 64 +++++++++++++++++-- .../rendering/scripts/renderManager.tscript | 13 ++-- 2 files changed, 64 insertions(+), 13 deletions(-) diff --git a/Templates/BaseGame/game/core/rendering/scripts/gfxData/shaders.tscript b/Templates/BaseGame/game/core/rendering/scripts/gfxData/shaders.tscript index 239c76a80..699ad9ed0 100644 --- a/Templates/BaseGame/game/core/rendering/scripts/gfxData/shaders.tscript +++ b/Templates/BaseGame/game/core/rendering/scripts/gfxData/shaders.tscript @@ -140,11 +140,11 @@ singleton ShaderData( VolumetricFogReflectionShader ) }; singleton ShaderData( CubemapSaveShader ) { - DXVertexShaderFile = "shaders/common/cubemapSaveV.hlsl"; - DXPixelShaderFile = "shaders/common/cubemapSaveP.hlsl"; + DXVertexShaderFile = $Core::CommonShaderPath @ "/common/cubemapSaveV.hlsl"; + DXPixelShaderFile = $Core::CommonShaderPath @ "/common/cubemapSaveP.hlsl"; - OGLVertexShaderFile = "shaders/common/gl/cubemapSaveV.glsl"; - OGLPixelShaderFile = "shaders/common/gl/cubemapSaveP.glsl"; + OGLVertexShaderFile = $Core::CommonShaderPath @ "/common/gl/cubemapSaveV.glsl"; + OGLPixelShaderFile = $Core::CommonShaderPath @ "/common/gl/cubemapSaveP.glsl"; samplerNames[0] = "$cubemapTex"; @@ -187,4 +187,58 @@ singleton ShaderData( ThickLineGUI ) OGLPixelShaderFile = $Core::CommonShaderPath @ "/fixedFunction/gl/thickLineP.glsl"; pixVersion = 3.0; -}; \ No newline at end of file +}; + + +//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~// +// Arcane-FX - Shared AFX Shaders +// +// All of the non-zodiac shaders support alpha-fading. +// +// Copyright (C) Faust Logic, Inc. +//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~// + + +//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~// +// Zodiac Shaders + +new ShaderData(afxZodiacTerrainShader) +{ + DXVertexShaderFile = $Core::CommonShaderPath @ "/AFX/afxZodiac_Terrain_V.hlsl"; + DXPixelShaderFile = $Core::CommonShaderPath @ "/AFX/afxZodiac_Terrain_P.hlsl"; + + OGLVertexShaderFile = $Core::CommonShaderPath @ "/AFX/gl/afxZodiac_Terrain_V.glsl"; + OGLPixelShaderFile = $Core::CommonShaderPath @ "/AFX/gl/afxZodiac_Terrain_P.glsl"; + + samplerNames[0] = "$zodiacMap"; + + pixVersion = 1.1; +}; + +new ShaderData(afxZodiacInteriorShader) +{ + DXVertexShaderFile = $Core::CommonShaderPath @ "/AFX/afxZodiac_Interior_V.hlsl"; + DXPixelShaderFile = $Core::CommonShaderPath @ "/AFX/afxZodiac_Interior_P.hlsl"; + + OGLVertexShaderFile = $Core::CommonShaderPath @ "/AFX/gl/afxZodiac_Interior_V.glsl"; + OGLPixelShaderFile = $Core::CommonShaderPath @ "/AFX/gl/afxZodiac_Interior_P.glsl"; + + samplerNames[0] = "$zodiacMap"; + + pixVersion = 1.1; +}; + +new ShaderData(afxZodiacPolysoupShader) +{ + DXVertexShaderFile = $Core::CommonShaderPath @ "/AFX/afxZodiac_Polysoup_V.hlsl"; + DXPixelShaderFile = $Core::CommonShaderPath @ "/AFX/afxZodiac_Polysoup_P.hlsl"; + + OGLVertexShaderFile = $Core::CommonShaderPath @ "/AFX/gl/afxZodiac_Polysoup_V.glsl"; + OGLPixelShaderFile = $Core::CommonShaderPath @ "/AFX/gl/afxZodiac_Polysoup_P.glsl"; + + samplerNames[0] = "$zodiacMap"; + + pixVersion = 1.1; +}; + +//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~// diff --git a/Templates/BaseGame/game/core/rendering/scripts/renderManager.tscript b/Templates/BaseGame/game/core/rendering/scripts/renderManager.tscript index e3461b199..a7ca0855f 100644 --- a/Templates/BaseGame/game/core/rendering/scripts/renderManager.tscript +++ b/Templates/BaseGame/game/core/rendering/scripts/renderManager.tscript @@ -87,14 +87,11 @@ function initRenderManager() // Resolve format change token last. DiffuseRenderPassManager.addManager( new RenderPassStateBin(FinalBin) { renderOrder = 1.7; stateToken = AL_FormatToken; } ); - if(isObject(afxZodiacTerrainRenderer)) - { - DiffuseRenderPassManager.addManager( new afxZodiacTerrainRenderer() { bintype = "TerrainZodiac"; renderOrder = 1.41; processAddOrder = 1.41; } ); - DiffuseRenderPassManager.addManager( new afxZodiacPolysoupRenderer() { bintype = "PolysoupZodiac"; renderOrder = 1.42; processAddOrder = 1.42; } ); - DiffuseRenderPassManager.addManager( new afxZodiacGroundPlaneRenderer() { bintype = "GroundPlaneZodiac"; renderOrder = 1.43; processAddOrder = 1.43; } ); - DiffuseRenderPassManager.addManager( new afxZodiacMeshRoadRenderer() { bintype = "MeshRoadZodiac"; renderOrder = 1.44; processAddOrder = 1.44; } ); - DiffuseRenderPassManager.addManager( new afxRenderHighlightMgr() { renderOrder = 1.55; processAddOrder = 1.55; } ); // for selection-highlighting - } + DiffuseRenderPassManager.addManager( new afxZodiacTerrainRenderer() { bintype = "TerrainZodiac"; renderOrder = 1.41; processAddOrder = 1.41; } ); + DiffuseRenderPassManager.addManager( new afxZodiacPolysoupRenderer() { bintype = "PolysoupZodiac"; renderOrder = 1.42; processAddOrder = 1.42; } ); + DiffuseRenderPassManager.addManager( new afxZodiacGroundPlaneRenderer() { bintype = "GroundPlaneZodiac"; renderOrder = 1.43; processAddOrder = 1.43; } ); + DiffuseRenderPassManager.addManager( new afxZodiacMeshRoadRenderer() { bintype = "MeshRoadZodiac"; renderOrder = 1.44; processAddOrder = 1.44;} ); + DiffuseRenderPassManager.addManager( new afxRenderHighlightMgr() { renderOrder = 1.55; processAddOrder = 1.55;} ); // for selection-highlighting } /// This is the Default PostFX state block. Put here to prevent any missing object From 967fa62ddd809f7cc2e14badef742fee2e3c6ad7 Mon Sep 17 00:00:00 2001 From: AzaezelX Date: Thu, 23 Jan 2025 11:19:27 -0600 Subject: [PATCH 04/91] shaders/common/ no longer exists --- .../rendering/shaders/AFX/afxPostFX_Highlight_ALT_P.hlsl | 6 +++--- .../core/rendering/shaders/AFX/afxPostFX_Highlight_P.hlsl | 6 +++--- .../core/rendering/shaders/AFX/afxZodiac_Interior_P.hlsl | 2 +- .../core/rendering/shaders/AFX/afxZodiac_Interior_V.hlsl | 2 +- .../core/rendering/shaders/AFX/afxZodiac_Polysoup_P.hlsl | 2 +- .../core/rendering/shaders/AFX/afxZodiac_Polysoup_V.hlsl | 2 +- .../core/rendering/shaders/AFX/afxZodiac_Terrain_P.hlsl | 2 +- .../core/rendering/shaders/AFX/afxZodiac_Terrain_V.hlsl | 2 +- .../core/rendering/shaders/AFX/gl/afxZodiac_Polysoup_V.glsl | 2 +- .../core/rendering/shaders/AFX/gl/afxZodiac_Terrain_V.glsl | 2 +- 10 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Templates/BaseGame/game/core/rendering/shaders/AFX/afxPostFX_Highlight_ALT_P.hlsl b/Templates/BaseGame/game/core/rendering/shaders/AFX/afxPostFX_Highlight_ALT_P.hlsl index 563942d8e..dbe59db3a 100644 --- a/Templates/BaseGame/game/core/rendering/shaders/AFX/afxPostFX_Highlight_ALT_P.hlsl +++ b/Templates/BaseGame/game/core/rendering/shaders/AFX/afxPostFX_Highlight_ALT_P.hlsl @@ -5,9 +5,9 @@ // (currently not used for default AFX selection-highlighting) //~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~// -#include "../common/shaderModel.hlsl" -#include "../common/shaderModelAutoGen.hlsl" -#include "shaders/common/postFX/postFx.hlsl" +#include "../shaderModel.hlsl" +#include "../shaderModelAutoGen.hlsl" +#include "../postFX/postFx.hlsl" TORQUE_UNIFORM_SAMPLER2D(highlightBuffer,0); TORQUE_UNIFORM_SAMPLER2D(backBuffer,1); diff --git a/Templates/BaseGame/game/core/rendering/shaders/AFX/afxPostFX_Highlight_P.hlsl b/Templates/BaseGame/game/core/rendering/shaders/AFX/afxPostFX_Highlight_P.hlsl index 91a14e834..8f85b3779 100644 --- a/Templates/BaseGame/game/core/rendering/shaders/AFX/afxPostFX_Highlight_P.hlsl +++ b/Templates/BaseGame/game/core/rendering/shaders/AFX/afxPostFX_Highlight_P.hlsl @@ -4,9 +4,9 @@ // http://www.garagegames.com/community/resources/view/17821 //~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~// -#include "../common/shaderModel.hlsl" -#include "../common/shaderModelAutoGen.hlsl" -#include "shaders/common/postFX/postFx.hlsl" +#include "../shaderModel.hlsl" +#include "../shaderModelAutoGen.hlsl" +#include "../postFX/postFx.hlsl" TORQUE_UNIFORM_SAMPLER2D(highlightBuffer,0); TORQUE_UNIFORM_SAMPLER2D(backBuffer,1); diff --git a/Templates/BaseGame/game/core/rendering/shaders/AFX/afxZodiac_Interior_P.hlsl b/Templates/BaseGame/game/core/rendering/shaders/AFX/afxZodiac_Interior_P.hlsl index ddf031a0e..b1a80548e 100644 --- a/Templates/BaseGame/game/core/rendering/shaders/AFX/afxZodiac_Interior_P.hlsl +++ b/Templates/BaseGame/game/core/rendering/shaders/AFX/afxZodiac_Interior_P.hlsl @@ -8,7 +8,7 @@ // Copyright (C) Faust Logic, Inc. //~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~// -#include "../common/shaderModel.hlsl" +#include "../shaderModel.hlsl" struct ConnectData { diff --git a/Templates/BaseGame/game/core/rendering/shaders/AFX/afxZodiac_Interior_V.hlsl b/Templates/BaseGame/game/core/rendering/shaders/AFX/afxZodiac_Interior_V.hlsl index ceffc05e7..088bbb844 100644 --- a/Templates/BaseGame/game/core/rendering/shaders/AFX/afxZodiac_Interior_V.hlsl +++ b/Templates/BaseGame/game/core/rendering/shaders/AFX/afxZodiac_Interior_V.hlsl @@ -8,7 +8,7 @@ // Copyright (C) Faust Logic, Inc. //~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~// -#include "../common/shaderModel.hlsl" +#include "../shaderModel.hlsl" struct VertData { float3 position : POSITION; diff --git a/Templates/BaseGame/game/core/rendering/shaders/AFX/afxZodiac_Polysoup_P.hlsl b/Templates/BaseGame/game/core/rendering/shaders/AFX/afxZodiac_Polysoup_P.hlsl index 3aff7f5c3..17b73fcc8 100644 --- a/Templates/BaseGame/game/core/rendering/shaders/AFX/afxZodiac_Polysoup_P.hlsl +++ b/Templates/BaseGame/game/core/rendering/shaders/AFX/afxZodiac_Polysoup_P.hlsl @@ -8,7 +8,7 @@ // Copyright (C) Faust Logic, Inc. //~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~// -#include "../common/shaderModel.hlsl" +#include "../shaderModel.hlsl" struct ConnectData { diff --git a/Templates/BaseGame/game/core/rendering/shaders/AFX/afxZodiac_Polysoup_V.hlsl b/Templates/BaseGame/game/core/rendering/shaders/AFX/afxZodiac_Polysoup_V.hlsl index a1c125da1..fb8c8487c 100644 --- a/Templates/BaseGame/game/core/rendering/shaders/AFX/afxZodiac_Polysoup_V.hlsl +++ b/Templates/BaseGame/game/core/rendering/shaders/AFX/afxZodiac_Polysoup_V.hlsl @@ -8,7 +8,7 @@ // Copyright (C) Faust Logic, Inc. //~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~// -#include "../common/shaderModel.hlsl" +#include "../shaderModel.hlsl" struct VertData { float3 position : POSITION; diff --git a/Templates/BaseGame/game/core/rendering/shaders/AFX/afxZodiac_Terrain_P.hlsl b/Templates/BaseGame/game/core/rendering/shaders/AFX/afxZodiac_Terrain_P.hlsl index 7bc1dc6e9..2381641b4 100644 --- a/Templates/BaseGame/game/core/rendering/shaders/AFX/afxZodiac_Terrain_P.hlsl +++ b/Templates/BaseGame/game/core/rendering/shaders/AFX/afxZodiac_Terrain_P.hlsl @@ -8,7 +8,7 @@ // Copyright (C) Faust Logic, Inc. //~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~// -#include "../common/shaderModel.hlsl" +#include "../shaderModel.hlsl" struct ConnectData { diff --git a/Templates/BaseGame/game/core/rendering/shaders/AFX/afxZodiac_Terrain_V.hlsl b/Templates/BaseGame/game/core/rendering/shaders/AFX/afxZodiac_Terrain_V.hlsl index 446d9e63f..7c6794d82 100644 --- a/Templates/BaseGame/game/core/rendering/shaders/AFX/afxZodiac_Terrain_V.hlsl +++ b/Templates/BaseGame/game/core/rendering/shaders/AFX/afxZodiac_Terrain_V.hlsl @@ -8,7 +8,7 @@ // Copyright (C) Faust Logic, Inc. //~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~// -#include "../common/shaderModel.hlsl" +#include "../shaderModel.hlsl" struct VertData { float3 position : POSITION; diff --git a/Templates/BaseGame/game/core/rendering/shaders/AFX/gl/afxZodiac_Polysoup_V.glsl b/Templates/BaseGame/game/core/rendering/shaders/AFX/gl/afxZodiac_Polysoup_V.glsl index ad3503db3..7e55dd452 100644 --- a/Templates/BaseGame/game/core/rendering/shaders/AFX/gl/afxZodiac_Polysoup_V.glsl +++ b/Templates/BaseGame/game/core/rendering/shaders/AFX/gl/afxZodiac_Polysoup_V.glsl @@ -8,7 +8,7 @@ // Copyright (C) Faust Logic, Inc. //~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~// -#include "../../common/gl/hlslCompat.glsl" +#include "../../gl/hlslCompat.glsl" uniform mat4 modelview; diff --git a/Templates/BaseGame/game/core/rendering/shaders/AFX/gl/afxZodiac_Terrain_V.glsl b/Templates/BaseGame/game/core/rendering/shaders/AFX/gl/afxZodiac_Terrain_V.glsl index 73547b958..e42f61e9b 100644 --- a/Templates/BaseGame/game/core/rendering/shaders/AFX/gl/afxZodiac_Terrain_V.glsl +++ b/Templates/BaseGame/game/core/rendering/shaders/AFX/gl/afxZodiac_Terrain_V.glsl @@ -8,7 +8,7 @@ // Copyright (C) Faust Logic, Inc. //~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~// -#include "../../common/gl/hlslCompat.glsl" +#include "../../gl/hlslCompat.glsl" uniform mat4 modelview; From 209abf3aa4d2ef8fa88ca64e286593b61c546367 Mon Sep 17 00:00:00 2001 From: AzaezelX Date: Thu, 23 Jan 2025 11:21:07 -0600 Subject: [PATCH 05/91] ensure zodiac texture is preloaded --- Engine/source/afx/ce/afxZodiac.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Engine/source/afx/ce/afxZodiac.cpp b/Engine/source/afx/ce/afxZodiac.cpp index 5d9f310ef..43717ba04 100644 --- a/Engine/source/afx/ce/afxZodiac.cpp +++ b/Engine/source/afx/ce/afxZodiac.cpp @@ -326,6 +326,22 @@ bool afxZodiacData::preload(bool server, String &errorStr) if (vert_range.x == 0.0f && vert_range.y == 0.0f) vert_range.x = vert_range.y = radius_xy; + if (mTextureAssetId != StringTable->EmptyString()) + { + mTextureAsset = mTextureAssetId; + if (mTextureAsset.notNull()) + { + if (getTexture() != StringTable->EmptyString() && mTextureName != StringTable->insert("texhandle")) + { + if (mTextureAsset.notNull()) + { + mTextureAsset->getChangedSignal().notify(this, &afxZodiacData::onImageChanged); + } + + mTexture.set(getTexture(), mTextureProfile, avar("%s() - mTextureObject (line %d)", __FUNCTION__, __LINE__)); + } + } + } return true; } From 704e304eef8cc1076827d2a3e674b9ec746be49e Mon Sep 17 00:00:00 2001 From: marauder2k7 Date: Thu, 23 Jan 2025 19:06:35 +0000 Subject: [PATCH 06/91] display correct values Few fixes to display float values if the inspector field asks for floats Split Hsb out from colorI now linearColorF can return HSB from its own color without having to go through the colorI conversion, hopefully gets rid of rounding errors etc since we are only doing the calc once. --- Engine/source/console/consoleFunctions.cpp | 18 +- Engine/source/core/color.h | 158 ++++++++++++++---- Engine/source/gui/controls/guiColorPicker.cpp | 37 ++-- .../game/tools/gui/colorPicker.ed.gui | 12 +- 4 files changed, 170 insertions(+), 55 deletions(-) diff --git a/Engine/source/console/consoleFunctions.cpp b/Engine/source/console/consoleFunctions.cpp index a2555c99f..dbcf28963 100644 --- a/Engine/source/console/consoleFunctions.cpp +++ b/Engine/source/console/consoleFunctions.cpp @@ -1104,7 +1104,21 @@ DefineEngineFunction(ColorRGBToHSB, const char*, (ColorI color), , "@endtsexample\n" "@ingroup Strings") { - ColorI::Hsb hsb(color.getHSB()); + Hsb hsb(color.getHSB()); + String s(String::ToString(hsb.hue) + " " + String::ToString(hsb.sat) + " " + String::ToString(hsb.brightness)); + return Con::getReturnBuffer(s); +} + +DefineEngineFunction(ColorLinearRGBToHSB, const char*, (LinearColorF color), , + "Convert from a integer RGB (red, green, blue) color to HSB (hue, saturation, brightness). HSB is also know as HSL or HSV as well, with the last letter standing for lightness or value.\n" + "@param color Integer color value to be converted in the form \"R G B A\", where R is red, G is green, B is blue, and A is alpha. It excepts an alpha, but keep in mind this will not be converted.\n" + "@return HSB color value, alpha isn't handled/converted so it is only the RGB value\n\n" + "@tsexample\n" + "ColorRBGToHSB( \"0 0 255 128\" ) // Returns \"240 100 100\".\n" + "@endtsexample\n" + "@ingroup Strings") +{ + Hsb hsb(color.getHSB()); String s(String::ToString(hsb.hue) + " " + String::ToString(hsb.sat) + " " + String::ToString(hsb.brightness)); return Con::getReturnBuffer(s); } @@ -1133,7 +1147,7 @@ DefineEngineFunction(ColorHSBToRGB, ColorI, (Point3I hsb), , "@ingroup Strings") { ColorI color; - color.set(ColorI::Hsb(hsb.x, hsb.y, hsb.z)); + color.set(Hsb(hsb.x, hsb.y, hsb.z)); return color; } diff --git a/Engine/source/core/color.h b/Engine/source/core/color.h index c4e1ffe13..b9da6872e 100644 --- a/Engine/source/core/color.h +++ b/Engine/source/core/color.h @@ -34,9 +34,24 @@ #include "console/engineAPI.h" #endif +#ifdef TORQUE_USE_LEGACY_GAMMA const F32 gGamma = 2.2f; const F32 gOneOverGamma = 1.f / 2.2f; +#else +const F32 gGamma = 2.4f; +const F32 gOneOverGamma = 1.f / 2.4f; const F32 gOneOver255 = 1.f / 255.f; +#endif + +struct Hsb +{ + Hsb() :hue(0), sat(0), brightness(0) {}; + Hsb(F64 h, F64 s, F64 b) :hue(h), sat(s), brightness(b) {}; + + F64 hue; ///Hue + F64 sat; ///Saturation + F64 brightness; //Brightness/Value/Lightness +}; class ColorI; @@ -55,9 +70,14 @@ public: LinearColorF(const F32 in_r, const F32 in_g, const F32 in_b, const F32 in_a = 1.0f); LinearColorF(const ColorI &color); LinearColorF(const char* pStockColorName); + LinearColorF(const Hsb& color); + + F32 srgbToLinearChannel(const F32 chan_col); + F32 linearChannelToSrgb(const F32 chan_col); void set( const F32 in_r, const F32 in_g, const F32 in_b, const F32 in_a = 1.0f ); void set( const char* pStockColorName ); + void set(const Hsb& color); static const LinearColorF& StockColor( const char* pStockColorName ); StringTableEntry StockColor( void ); @@ -88,6 +108,7 @@ public: U32 getARGBPack() const; U32 getRGBAPack() const; U32 getABGRPack() const; + Hsb getHSB() const; void interpolate(const LinearColorF& in_rC1, const LinearColorF& in_rC2, @@ -126,16 +147,6 @@ public: U8 blue; U8 alpha; - struct Hsb - { - Hsb() :hue(0), sat(0), brightness(0){}; - Hsb(F64 h, F64 s, F64 b) :hue(h), sat(s), brightness(b){}; - - F64 hue; ///Hue - F64 sat; ///Saturation - F64 brightness; //Brightness/Value/Lightness - }; - public: ColorI() : red(0), green(0), blue(0), alpha(0) {} ColorI(const ColorI& in_rCopy); @@ -247,6 +258,27 @@ public: static void destroy( void ); }; +inline F32 LinearColorF::srgbToLinearChannel(const F32 chan_col) +{ + if (chan_col < 0.0405f) { + return chan_col / 12.92f; + } + else { + return mPow((chan_col + 0.055f) / 1.055f, gGamma); + } +} + +inline F32 LinearColorF::linearChannelToSrgb(const F32 chan_col) +{ + if (chan_col <= 0.0031308f) { + return chan_col * 12.92f; + } + else { + return 1.055f * mPow(chan_col, gOneOverGamma) - 0.055f; + } +} + + //------------------------------------------------------------------------------ //-------------------------------------- INLINES (LinearColorF) // @@ -441,6 +473,72 @@ inline F32 LinearColorF::luminance() return red * 0.3f + green * 0.59f + blue * 0.11f; } +inline LinearColorF::LinearColorF(const Hsb& color) +{ + set(color); +} + +inline void LinearColorF::set(const Hsb& color) +{ + F64 c = (color.brightness / 100.0) * (color.sat / 100.0); + F64 x = c * (1.0 - fabs(fmod(color.hue / 60.0, 2.0) - 1.0)); + F64 m = (color.brightness / 100.0) - c; + + F64 r = 0.0, g = 0.0, b = 0.0; + if (color.hue < 60.0) { + r = c; g = x; b = 0.0; + } + else if (color.hue < 120.0) { + r = x; g = c; b = 0.0; + } + else if (color.hue < 180.0) { + r = 0.0; g = c; b = x; + } + else if (color.hue < 240.0) { + r = 0.0; g = x; b = c; + } + else if (color.hue < 300.0) { + r = x; g = 0.0; b = c; + } + else { + r = c; g = 0.0; b = x; + } + + red = static_cast(r + m); + green = static_cast(g + m); + blue = static_cast(b + m); + alpha = 1.0f; // Default alpha to 1.0 +} + +inline Hsb LinearColorF::getHSB() const +{ + F32 maxVal = mMax( red, mMax(green, blue)); + F32 minVal = mMin(red, mMin(green, blue)); + F32 delta = maxVal - minVal; + + Hsb hsb; + hsb.brightness = maxVal * 100.0; // Convert to percentage + hsb.sat = (maxVal > 0.0f) ? (delta / maxVal) * 100.0 : 0.0; + + if (delta > 0.0f) { + if (red == maxVal) + hsb.hue = 60.0 * mFmod(((green - blue) / delta), 6.0); + else if (green == maxVal) + hsb.hue = 60.0 * (((blue - red) / delta) + 2.0); + else + hsb.hue = 60.0 * (((red - green) / delta) + 4.0); + + if (hsb.hue < 0.0) + hsb.hue += 360.0; + } + else { + hsb.hue = 0.0; + } + + return hsb; +} + + //------------------------------------------------------------------------------ //-------------------------------------- INLINES (ColorI) // @@ -719,7 +817,7 @@ inline U16 ColorI::get4444() const U16(U16(blue >> 4) << 0)); } -inline ColorI::Hsb ColorI::getHSB() const +inline Hsb ColorI::getHSB() const { // Normalize RGB values to [0, 1] F64 rPercent = (F64)red / 255.0; @@ -740,22 +838,22 @@ inline ColorI::Hsb ColorI::getHSB() const S = delta / maxColor; // Saturation // Compute hue - if (fabs(maxColor - rPercent) < 1e-6) + if (mFabsD(maxColor - rPercent) < 1e-6) { H = 60.0 * ((gPercent - bPercent) / delta); } - else if (fabs(maxColor - gPercent) < 1e-6) + else if (mFabsD(maxColor - gPercent) < 1e-6) { H = 60.0 * (((bPercent - rPercent) / delta) + 2.0); } - else if (fabs(maxColor - bPercent) < 1e-6) + else if (mFabsD(maxColor - bPercent) < 1e-6) { H = 60.0 * (((rPercent - gPercent) / delta) + 4.0); } } // Prepare the output HSB struct - ColorI::Hsb val; + Hsb val; val.hue = H; // Round to nearest integer val.sat = S * 100.0; // Convert to percentage val.brightness = B * 100.0; // Convert to percentage @@ -782,9 +880,9 @@ inline String ColorI::getHex() const inline LinearColorF::LinearColorF( const ColorI &color) { - red = sSrgbToLinear[color.red], - green = sSrgbToLinear[color.green], - blue = sSrgbToLinear[color.blue], + red = srgbToLinearChannel(color.red * gOneOver255), + green = srgbToLinearChannel(color.green * gOneOver255), + blue = srgbToLinearChannel(color.blue * gOneOver255), alpha = F32(color.alpha * gOneOver255); } @@ -799,14 +897,14 @@ inline ColorI LinearColorF::toColorI(const bool keepAsLinear) else { #ifdef TORQUE_USE_LEGACY_GAMMA - float r = mPow(red, gOneOverGamma); - float g = mPow(green, gOneOverGamma); - float b = mPow(blue, gOneOverGamma); + F32 r = mPow(red, gOneOverGamma); + F32 g = mPow(green, gOneOverGamma); + F32 b = mPow(blue, gOneOverGamma); return ColorI(U8(r * 255.0f + 0.5), U8(g * 255.0f + 0.5), U8(b * 255.0f + 0.5), U8(alpha * 255.0f + 0.5)); #else - float r = red < 0.0031308f ? 12.92f * red : 1.055f * mPow(red, 1.0f / 2.4f) - 0.055f; - float g = green < 0.0031308f ? 12.92f * green : 1.055f * mPow(green, 1.0f / 2.4f) - 0.055f; - float b = blue < 0.0031308f ? 12.92f * blue : 1.055f * mPow(blue, 1.0f / 2.4f) - 0.055f; + F32 r = linearChannelToSrgb(red); + F32 g = linearChannelToSrgb(green); + F32 b = linearChannelToSrgb(blue); return ColorI(U8(r * 255.0f + 0.5), U8(g * 255.0f + 0.5), U8(b * 255.0f + 0.5), U8(alpha * 255.0f + 0.5f)); #endif } @@ -823,14 +921,14 @@ inline ColorI LinearColorF::toColorI(const bool keepAsLinear) else { #ifdef TORQUE_USE_LEGACY_GAMMA - float r = mPow(red, gOneOverGamma); - float g = mPow(green, gOneOverGamma); - float b = mPow(blue, gOneOverGamma); + F32 r = mPow(red, gOneOverGamma); + F32 g = mPow(green, gOneOverGamma); + F32 b = mPow(blue, gOneOverGamma); return ColorI(U8(r * 255.0f + 0.5), U8(g * 255.0f + 0.5), U8(b * 255.0f + 0.5), U8(alpha * 255.0f + 0.5)); #else - float r = red < 0.0031308f ? 12.92f * red : 1.055f * mPow(red, 1.0f / 2.4f) - 0.055f; - float g = green < 0.0031308f ? 12.92f * green : 1.055f * mPow(green, 1.0f / 2.4f) - 0.055f; - float b = blue < 0.0031308f ? 12.92f * blue : 1.055f * mPow(blue, 1.0f / 2.4f) - 0.055f; + F32 r = linearChannelToSrgb(red); + F32 g = linearChannelToSrgb(green); + F32 b = linearChannelToSrgb(blue); return ColorI(U8(r * 255.0f + 0.5f), U8(g * 255.0f + 0.5f), U8(b * 255.0f + 0.5f), U8(alpha * 255.0f + 0.5f)); #endif } diff --git a/Engine/source/gui/controls/guiColorPicker.cpp b/Engine/source/gui/controls/guiColorPicker.cpp index d313d3412..1bf3a935a 100644 --- a/Engine/source/gui/controls/guiColorPicker.cpp +++ b/Engine/source/gui/controls/guiColorPicker.cpp @@ -103,7 +103,7 @@ void GuiColorPickerCtrl::initPersistFields() void GuiColorPickerCtrl::renderBlendRange(RectI& bounds) { ColorI currentColor; - currentColor.set(ColorI::Hsb(mSelectedHue, 100, 100)); + currentColor.set(Hsb(mSelectedHue, 100, 100)); GFX->getDrawUtil()->drawRectFill(bounds, currentColor, 0.0f, ColorI(0,0,0,0), true); } @@ -123,7 +123,7 @@ void GuiColorPickerCtrl::renderBlendSelector(RectI& bounds) selectorRect.set(Point2I(selectorPos.x - mSelectorGap, selectorPos.y - mSelectorGap), Point2I(mSelectorGap * 2, mSelectorGap * 2)); ColorI currentColor; - currentColor.set(ColorI::Hsb(mSelectedHue, mSelectedSaturation, mSelectedBrightness)); + currentColor.set(Hsb(mSelectedHue, mSelectedSaturation, mSelectedBrightness)); GFX->getDrawUtil()->drawRectFill(selectorRect, currentColor, 2.0f, ColorI::WHITE); } @@ -145,8 +145,8 @@ void GuiColorPickerCtrl::renderHueGradient(RectI& bounds, U32 numColours) U32 nextHue = static_cast((F32(i + 1) / F32(numColours)) * 360.0f); ColorI currentColor, nextColor; - currentColor.set(ColorI::Hsb(currentHue, 100, 100)); - nextColor.set(ColorI::Hsb(nextHue, 100, 100)); + currentColor.set(Hsb(currentHue, 100, 100)); + nextColor.set(Hsb(nextHue, 100, 100)); switch (mSelectorMode) { @@ -226,7 +226,7 @@ void GuiColorPickerCtrl::renderHueSelector(RectI& bounds) } ColorI currentColor; - currentColor.set(ColorI::Hsb(mSelectedHue, 100, 100)); + currentColor.set(Hsb(mSelectedHue, 100, 100)); GFX->getDrawUtil()->drawRectFill(selectorRect, currentColor, 2.0f, ColorI::WHITE); } @@ -241,7 +241,7 @@ void GuiColorPickerCtrl::renderAlphaGradient(RectI& bounds) S32 b = bounds.point.y + bounds.extent.y; ColorI currentColor; - currentColor.set(ColorI::Hsb(mSelectedHue, 100, 100)); + currentColor.set(Hsb(mSelectedHue, 100, 100)); ColorI alphaCol = ColorI::BLACK; alphaCol.alpha = 0; @@ -317,7 +317,7 @@ void GuiColorPickerCtrl::renderAlphaSelector(RectI& bounds) } ColorI currentColor; - currentColor.set(ColorI::Hsb(mSelectedHue, 100, 100)); + currentColor.set(Hsb(mSelectedHue, 100, 100)); currentColor.alpha = mSelectedAlpha; GFX->getDrawUtil()->drawRectFill(selectorRect, currentColor, 2.0f, ColorI::WHITE); @@ -342,7 +342,7 @@ void GuiColorPickerCtrl::renderEyeDropper() RectI magnifierBounds(magnifierPosition, magnifierSize); ColorI currentColor; - currentColor.set(ColorI::Hsb(mSelectedHue, mSelectedSaturation, mSelectedBrightness)); + currentColor.set(Hsb(mSelectedHue, mSelectedSaturation, mSelectedBrightness)); currentColor.alpha = mSelectedAlpha; GFX->getDrawUtil()->drawRectFill(magnifierBounds, currentColor, 2.0f, ColorI::BLACK); @@ -368,7 +368,7 @@ void GuiColorPickerCtrl::onRender(Point2I offset, const RectI& updateRect) case GuiColorPickerCtrl::pPalette: { ColorI currentColor; - currentColor.set(ColorI::Hsb(mSelectedHue, mSelectedSaturation, mSelectedBrightness)); + currentColor.set(Hsb(mSelectedHue, mSelectedSaturation, mSelectedBrightness)); currentColor.alpha = mSelectedAlpha; GFX->getDrawUtil()->drawRectFill(boundsRect, currentColor); break; @@ -593,7 +593,7 @@ void GuiColorPickerCtrl::onMouseMove(const GuiEvent &event) eyeDropperCap->getColor(eyeDropperPos.x, eyeDropperPos.y, sampledColor); // Convert the sampled color to HSB - ColorI::Hsb hsb = sampledColor.getHSB(); + Hsb hsb = sampledColor.getHSB(); mSelectedHue = hsb.hue; mSelectedSaturation = hsb.sat; mSelectedBrightness = hsb.brightness; @@ -779,7 +779,7 @@ DefineEngineMethod(GuiColorPickerCtrl, getSelectedAlpha, F64, (), , "Gets the cu DefineEngineMethod(GuiColorPickerCtrl, setSelectedColorI, void, (ColorI col), , "Sets the current selected hsb from a colorI value.") { - ColorI::Hsb hsb(col.getHSB()); + Hsb hsb(col.getHSB()); object->setSelectedHue(hsb.hue); object->setSelectedSaturation(hsb.sat); object->setSelectedBrightness(hsb.brightness); @@ -789,26 +789,25 @@ DefineEngineMethod(GuiColorPickerCtrl, setSelectedColorI, void, (ColorI col), , DefineEngineMethod(GuiColorPickerCtrl, getSelectedColorI, ColorI, (), , "Gets the current selected hsb as a colorI value.") { ColorI col; - col.set(ColorI::Hsb(object->getSelectedHue(), object->getSelectedSaturation(), object->getSelectedBrightness())); + col.set(Hsb(object->getSelectedHue(), object->getSelectedSaturation(), object->getSelectedBrightness())); col.alpha = object->getSelectedAlpha(); return col; } DefineEngineMethod(GuiColorPickerCtrl, setSelectedLinearColor, void, (LinearColorF colF), , "Sets the current selected hsb froma a LinearColorF value.") { - ColorI col = colF.toColorI(); - ColorI::Hsb hsb(col.getHSB()); + Hsb hsb = colF.getHSB(); object->setSelectedHue(hsb.hue); object->setSelectedSaturation(hsb.sat); object->setSelectedBrightness(hsb.brightness); - object->setSelectedAlpha(col.alpha); + object->setSelectedAlpha(colF.alpha * 255.0); } DefineEngineMethod(GuiColorPickerCtrl, getSelectedLinearColor, LinearColorF, (), , "Gets the current selected hsb as a LinearColorF value.") { - ColorI col; - col.set(ColorI::Hsb(object->getSelectedHue(), object->getSelectedSaturation(), object->getSelectedBrightness())); - col.alpha = object->getSelectedAlpha(); - return LinearColorF(col); + LinearColorF col; + col.set(Hsb(object->getSelectedHue(), object->getSelectedSaturation(), object->getSelectedBrightness())); + col.alpha = (F32)object->getSelectedAlpha() / 255.0f; + return col; } diff --git a/Templates/BaseGame/game/tools/gui/colorPicker.ed.gui b/Templates/BaseGame/game/tools/gui/colorPicker.ed.gui index 236262deb..e796eb46c 100644 --- a/Templates/BaseGame/game/tools/gui/colorPicker.ed.gui +++ b/Templates/BaseGame/game/tools/gui/colorPicker.ed.gui @@ -109,7 +109,7 @@ $guiContent = new GuiColorPickerCtrl(ColorPickerDlg,EditorGuiGroup) { position = "213 3"; extent = "50 25"; profile = "GuiDefaultProfile"; - command = "%selHue = ColorNewSelected.getSelectedHue();\n%selSat = ColorNewSelected.getSelectedSaturation();\n%selBright = ColorNewSelected.getSelectedBrightness();\n\nHueTextEditor.setText(%selHue);\nSatTextEditor.setText(%selSat);\nBrightTextEditor.setText(%selBright);\n\n%color = ColorNewSelected.getSelectedColorI();\nRedTextEdit.setText(getWord(%color, 0));\nGreenTextEdit.setText(getWord(%color, 1));\nBlueTextEdit.setText(getWord(%color, 2));\nAlphaTextEdit.setText(getWord(%color, 3));\n\n%hex = ColorRGBToHEX(%color);\nHexTextEditor.setText(%hex);"; + command = "%selHue = ColorNewSelected.getSelectedHue();\n%selSat = ColorNewSelected.getSelectedSaturation();\n%selBright = ColorNewSelected.getSelectedBrightness();\n\nHueTextEditor.setText(%selHue);\nSatTextEditor.setText(%selSat);\nBrightTextEditor.setText(%selBright);\n\n%color = $ColorCallbackType == 1 ? ColorNewSelected.getSelectedColorI() : ColorNewSelected.getSelectedLinearColor();\nRedTextEdit.setText(getWord(%color, 0));\nGreenTextEdit.setText(getWord(%color, 1));\nBlueTextEdit.setText(getWord(%color, 2));\nAlphaTextEdit.setText(getWord(%color, 3));\n\n%hex = ColorRGBToHEX(ColorNewSelected.getSelectedColorI());\nHexTextEditor.setText(%hex);"; tooltipProfile = "GuiToolTipProfile"; }; new GuiColorPickerCtrl(ColorOld) { @@ -437,8 +437,12 @@ function ColorPickerRGBClass::onValidate(%this) %alpha = AlphaTextEdit.getValue(); //Update all the other color fields - %hsb = ColorRGBToHSB(%red SPC %green SPC %blue); - + if( $ColorCallbackType == 1) + %hsb = ColorRGBToHSB(%red SPC %green SPC %blue); + else + { + %hsb = ColorLinearRGBToHSB(%red SPC %green SPC %blue); + } // these automatically update our ColorNewSelected which // updates all text fields including these. ColorHueRange.setSelectedHue(getWord(%hsb, 0)); @@ -448,7 +452,7 @@ function ColorPickerRGBClass::onValidate(%this) ColorBlendRange.setSelectedBrightness(getWord(%hsb, 2)); ColorBlendRange.executeUpdate(); - ColorAlphaRange.setSelectedAlpha(%alpha); + ColorAlphaRange.setSelectedAlpha(%alpha * 255.0); ColorAlphaRange.executeUpdate(); } From d06a28041d0cd732bde2322dc9d8b1d9653afca8 Mon Sep 17 00:00:00 2001 From: marauder2k7 Date: Thu, 23 Jan 2025 19:22:50 +0000 Subject: [PATCH 07/91] Update colorPicker.ed.gui --- Templates/BaseGame/game/tools/gui/colorPicker.ed.gui | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Templates/BaseGame/game/tools/gui/colorPicker.ed.gui b/Templates/BaseGame/game/tools/gui/colorPicker.ed.gui index e796eb46c..082c19b92 100644 --- a/Templates/BaseGame/game/tools/gui/colorPicker.ed.gui +++ b/Templates/BaseGame/game/tools/gui/colorPicker.ed.gui @@ -442,6 +442,7 @@ function ColorPickerRGBClass::onValidate(%this) else { %hsb = ColorLinearRGBToHSB(%red SPC %green SPC %blue); + %alpha *= 255.0 } // these automatically update our ColorNewSelected which // updates all text fields including these. @@ -452,7 +453,7 @@ function ColorPickerRGBClass::onValidate(%this) ColorBlendRange.setSelectedBrightness(getWord(%hsb, 2)); ColorBlendRange.executeUpdate(); - ColorAlphaRange.setSelectedAlpha(%alpha * 255.0); + ColorAlphaRange.setSelectedAlpha(%alpha); ColorAlphaRange.executeUpdate(); } From 7ffb27dab33bd68e7781ffcb96b172ffdc9bf8bc Mon Sep 17 00:00:00 2001 From: marauder2k7 Date: Thu, 23 Jan 2025 19:24:11 +0000 Subject: [PATCH 08/91] Update colorPicker.ed.gui --- Templates/BaseGame/game/tools/gui/colorPicker.ed.gui | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Templates/BaseGame/game/tools/gui/colorPicker.ed.gui b/Templates/BaseGame/game/tools/gui/colorPicker.ed.gui index 082c19b92..af0743a1f 100644 --- a/Templates/BaseGame/game/tools/gui/colorPicker.ed.gui +++ b/Templates/BaseGame/game/tools/gui/colorPicker.ed.gui @@ -442,7 +442,7 @@ function ColorPickerRGBClass::onValidate(%this) else { %hsb = ColorLinearRGBToHSB(%red SPC %green SPC %blue); - %alpha *= 255.0 + %alpha *= 255.0; } // these automatically update our ColorNewSelected which // updates all text fields including these. From 93352f5754654e67dece682f0c697aadd2cfae03 Mon Sep 17 00:00:00 2001 From: marauder2k7 Date: Thu, 23 Jan 2025 19:37:15 +0000 Subject: [PATCH 09/91] linear to hsb and back again requires srgb calcs --- Engine/source/core/color.h | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/Engine/source/core/color.h b/Engine/source/core/color.h index b9da6872e..3f69a39e8 100644 --- a/Engine/source/core/color.h +++ b/Engine/source/core/color.h @@ -108,7 +108,7 @@ public: U32 getARGBPack() const; U32 getRGBAPack() const; U32 getABGRPack() const; - Hsb getHSB() const; + Hsb getHSB(); void interpolate(const LinearColorF& in_rC1, const LinearColorF& in_rC2, @@ -504,16 +504,24 @@ inline void LinearColorF::set(const Hsb& color) r = c; g = 0.0; b = x; } - red = static_cast(r + m); - green = static_cast(g + m); - blue = static_cast(b + m); + r += m; + g += m; + b += m; + + red = static_cast(srgbToLinearChannel(r)); + green = static_cast(srgbToLinearChannel(g)); + blue = static_cast(srgbToLinearChannel(b)); alpha = 1.0f; // Default alpha to 1.0 } -inline Hsb LinearColorF::getHSB() const +inline Hsb LinearColorF::getHSB() { - F32 maxVal = mMax( red, mMax(green, blue)); - F32 minVal = mMin(red, mMin(green, blue)); + F32 r = linearChannelToSrgb(red); + F32 g = linearChannelToSrgb(green); + F32 b = linearChannelToSrgb(blue); + + F32 maxVal = mMax(r, mMax(g, b)); + F32 minVal = mMin(r, mMin(g, b)); F32 delta = maxVal - minVal; Hsb hsb; @@ -521,12 +529,12 @@ inline Hsb LinearColorF::getHSB() const hsb.sat = (maxVal > 0.0f) ? (delta / maxVal) * 100.0 : 0.0; if (delta > 0.0f) { - if (red == maxVal) - hsb.hue = 60.0 * mFmod(((green - blue) / delta), 6.0); - else if (green == maxVal) - hsb.hue = 60.0 * (((blue - red) / delta) + 2.0); + if (r == maxVal) + hsb.hue = 60.0 * mFmod(((g - b) / delta), 6.0); + else if (g == maxVal) + hsb.hue = 60.0 * (((b - r) / delta) + 2.0); else - hsb.hue = 60.0 * (((red - green) / delta) + 4.0); + hsb.hue = 60.0 * (((r - g) / delta) + 4.0); if (hsb.hue < 0.0) hsb.hue += 360.0; From 055ca0ae00f11cb793ba0a694ffa089d26d17700 Mon Sep 17 00:00:00 2001 From: marauder2k7 Date: Thu, 23 Jan 2025 20:23:47 +0000 Subject: [PATCH 10/91] use screenshot for eye dropper instead of using backbuffer image, use the screenshot so it captures everything --- Engine/source/gfx/D3D11/screenshotD3D11.h | 2 +- Engine/source/gfx/gl/screenshotGL.h | 2 +- Engine/source/gfx/screenshot.h | 7 +++---- Engine/source/gui/controls/guiColorPicker.cpp | 14 ++++---------- 4 files changed, 9 insertions(+), 16 deletions(-) diff --git a/Engine/source/gfx/D3D11/screenshotD3D11.h b/Engine/source/gfx/D3D11/screenshotD3D11.h index ce890a473..8822ae933 100644 --- a/Engine/source/gfx/D3D11/screenshotD3D11.h +++ b/Engine/source/gfx/D3D11/screenshotD3D11.h @@ -29,7 +29,7 @@ //************************************************************************** class ScreenShotD3D11 : public ScreenShot { -protected: +public: GBitmap* _captureBackBuffer() override; diff --git a/Engine/source/gfx/gl/screenshotGL.h b/Engine/source/gfx/gl/screenshotGL.h index 442d8bb0f..9fce67b90 100644 --- a/Engine/source/gfx/gl/screenshotGL.h +++ b/Engine/source/gfx/gl/screenshotGL.h @@ -29,7 +29,7 @@ //************************************************************************** class ScreenShotGL : public ScreenShot { -protected: +public: GBitmap* _captureBackBuffer() override; diff --git a/Engine/source/gfx/screenshot.h b/Engine/source/gfx/screenshot.h index 9de224f06..f8b059fae 100644 --- a/Engine/source/gfx/screenshot.h +++ b/Engine/source/gfx/screenshot.h @@ -40,10 +40,6 @@ class Frustum; class ScreenShot { - /// This is overloaded to copy the current GFX - /// backbuffer to a new bitmap. - virtual GBitmap* _captureBackBuffer() { return NULL; } - /// This is set to toggle the capture. bool mPending; @@ -76,6 +72,9 @@ public: ScreenShot(); virtual ~ScreenShot() { } + /// This is overloaded to copy the current GFX + /// backbuffer to a new bitmap. + virtual GBitmap* _captureBackBuffer() { return NULL; } /// Used to start the screenshot capture. void setPending( const char *filename, bool writeJPG, S32 tiles, F32 overlap ); diff --git a/Engine/source/gui/controls/guiColorPicker.cpp b/Engine/source/gui/controls/guiColorPicker.cpp index 1bf3a935a..f3bf4d628 100644 --- a/Engine/source/gui/controls/guiColorPicker.cpp +++ b/Engine/source/gui/controls/guiColorPicker.cpp @@ -30,6 +30,7 @@ #include "gfx/primBuilder.h" #include "gfx/gfxDrawUtil.h" #include "postFx/postEffectManager.h" +#include "gfx/screenshot.h" IMPLEMENT_CONOBJECT(GuiColorPickerCtrl); @@ -707,17 +708,10 @@ void GuiColorPickerCtrl::activateEyeDropper() // Set up our resolution. Point2I resolution = getRoot()->getExtent(); + eyeDropperCap = gScreenShot->_captureBackBuffer(); + // Texture handle to resolve the target to. - eyeHandle.set(resolution.x, resolution.y, GFXFormatR8G8B8A8_SRGB, &GFXRenderTargetSRGBProfile, avar("%s() - bb (line %d)", __FUNCTION__, __LINE__)); - - // Get our active render target (should be backbuffer). - eyeHandle = PFXMGR->getBackBufferTex(); - - if (eyeHandle.isValid()) - { - eyeDropperCap = new GBitmap(eyeHandle.getWidth(), eyeHandle.getHeight(), false, GFXFormatR8G8B8A8); - eyeHandle.copyToBmp(eyeDropperCap); - } + eyeHandle.set(eyeDropperCap, &GFXStaticTextureSRGBProfile, false, avar("%s() - bb (line %d)", __FUNCTION__, __LINE__)); } } From 4f6c921eb93f3468a4f97c6d21c8ec04219870d9 Mon Sep 17 00:00:00 2001 From: AzaezelX Date: Thu, 23 Jan 2025 20:52:33 -0600 Subject: [PATCH 11/91] offload libcurl to resources step 1: remove from lib dir now thats prepped in https://github.com/Torque3DResources/curlModule --- Engine/lib/curl/CHANGES | 7784 --- .../lib/curl/CMake/CMakeConfigurableFile.in | 24 - Engine/lib/curl/CMake/CurlSymbolHiding.cmake | 78 - Engine/lib/curl/CMake/CurlTests.c | 565 - Engine/lib/curl/CMake/FindBearSSL.cmake | 32 - Engine/lib/curl/CMake/FindBrotli.cmake | 43 - Engine/lib/curl/CMake/FindCARES.cmake | 47 - Engine/lib/curl/CMake/FindGSS.cmake | 312 - Engine/lib/curl/CMake/FindLibPSL.cmake | 45 - Engine/lib/curl/CMake/FindLibSSH2.cmake | 45 - Engine/lib/curl/CMake/FindMSH3.cmake | 70 - Engine/lib/curl/CMake/FindMbedTLS.cmake | 36 - Engine/lib/curl/CMake/FindNGHTTP2.cmake | 41 - Engine/lib/curl/CMake/FindNGHTTP3.cmake | 78 - Engine/lib/curl/CMake/FindNGTCP2.cmake | 115 - Engine/lib/curl/CMake/FindNSS.cmake | 40 - Engine/lib/curl/CMake/FindQUICHE.cmake | 70 - Engine/lib/curl/CMake/FindWolfSSL.cmake | 36 - Engine/lib/curl/CMake/FindZstd.cmake | 71 - Engine/lib/curl/CMake/Macros.cmake | 122 - Engine/lib/curl/CMake/OtherTests.cmake | 288 - .../curl/CMake/Platforms/WindowsCache.cmake | 103 - Engine/lib/curl/CMake/Utilities.cmake | 35 - .../lib/curl/CMake/cmake_uninstall.cmake.in | 49 - Engine/lib/curl/CMake/curl-config.cmake.in | 35 - Engine/lib/curl/CMakeLists.txt | 1616 - Engine/lib/curl/COPYING | 22 - Engine/lib/curl/MacOSX-Framework | 160 - Engine/lib/curl/Makefile | 92 - Engine/lib/curl/Makefile.am | 613 - Engine/lib/curl/Makefile.in | 2114 - Engine/lib/curl/README | 55 - Engine/lib/curl/RELEASE-NOTES | 379 - Engine/lib/curl/acinclude.m4 | 2262 - Engine/lib/curl/aclocal.m4 | 1216 - Engine/lib/curl/buildconf | 8 - Engine/lib/curl/buildconf.bat | 319 - Engine/lib/curl/compile | 348 - Engine/lib/curl/config.guess | 1754 - Engine/lib/curl/config.sub | 1890 - Engine/lib/curl/configure | 48117 ---------------- Engine/lib/curl/configure.ac | 4564 -- Engine/lib/curl/curl-config.in | 196 - Engine/lib/curl/depcomp | 791 - Engine/lib/curl/docs/ALTSVC.md | 41 - Engine/lib/curl/docs/BINDINGS.md | 134 - Engine/lib/curl/docs/BUFREF.md | 81 - Engine/lib/curl/docs/BUG-BOUNTY.md | 78 - Engine/lib/curl/docs/BUGS.md | 265 - Engine/lib/curl/docs/CHECKSRC.md | 183 - Engine/lib/curl/docs/CIPHERS.md | 591 - Engine/lib/curl/docs/CMakeLists.txt | 26 - Engine/lib/curl/docs/CODE_OF_CONDUCT.md | 32 - Engine/lib/curl/docs/CODE_REVIEW.md | 168 - Engine/lib/curl/docs/CODE_STYLE.md | 310 - Engine/lib/curl/docs/CONTRIBUTE.md | 301 - Engine/lib/curl/docs/CURL-DISABLE.md | 140 - Engine/lib/curl/docs/DEPRECATE.md | 46 - Engine/lib/curl/docs/DYNBUF.md | 108 - Engine/lib/curl/docs/EXPERIMENTAL.md | 24 - Engine/lib/curl/docs/FAQ | 1544 - Engine/lib/curl/docs/FEATURES.md | 219 - Engine/lib/curl/docs/GOVERNANCE.md | 182 - Engine/lib/curl/docs/HELP-US.md | 87 - Engine/lib/curl/docs/HISTORY.md | 432 - Engine/lib/curl/docs/HSTS.md | 44 - Engine/lib/curl/docs/HTTP-COOKIES.md | 139 - Engine/lib/curl/docs/HTTP2.md | 121 - Engine/lib/curl/docs/HTTP3.md | 316 - Engine/lib/curl/docs/HYPER.md | 73 - Engine/lib/curl/docs/INSTALL | 9 - Engine/lib/curl/docs/INSTALL.cmake | 89 - Engine/lib/curl/docs/INSTALL.md | 556 - Engine/lib/curl/docs/INTERNALS.md | 70 - Engine/lib/curl/docs/KNOWN_BUGS | 1179 - Engine/lib/curl/docs/MAIL-ETIQUETTE | 285 - Engine/lib/curl/docs/MQTT.md | 27 - Engine/lib/curl/docs/Makefile.am | 130 - Engine/lib/curl/docs/Makefile.in | 939 - Engine/lib/curl/docs/NEW-PROTOCOL.md | 110 - Engine/lib/curl/docs/PARALLEL-TRANSFERS.md | 58 - Engine/lib/curl/docs/README.md | 12 - Engine/lib/curl/docs/RELEASE-PROCEDURE.md | 106 - Engine/lib/curl/docs/ROADMAP.md | 24 - Engine/lib/curl/docs/RUSTLS.md | 26 - Engine/lib/curl/docs/SECURITY-PROCESS.md | 214 - Engine/lib/curl/docs/SSL-PROBLEMS.md | 98 - Engine/lib/curl/docs/SSLCERTS.md | 173 - Engine/lib/curl/docs/THANKS | 2696 - Engine/lib/curl/docs/TODO | 1292 - Engine/lib/curl/docs/TheArtOfHttpScripting.md | 700 - Engine/lib/curl/docs/URL-SYNTAX.md | 388 - Engine/lib/curl/docs/VERSIONS.md | 57 - .../lib/curl/docs/cmdline-opts/CMakeLists.txt | 35 - Engine/lib/curl/docs/cmdline-opts/MANPAGE.md | 70 - Engine/lib/curl/docs/cmdline-opts/Makefile.am | 37 - Engine/lib/curl/docs/cmdline-opts/Makefile.in | 870 - .../lib/curl/docs/cmdline-opts/Makefile.inc | 276 - .../docs/cmdline-opts/abstract-unix-socket.d | 14 - Engine/lib/curl/docs/cmdline-opts/alt-svc.d | 20 - Engine/lib/curl/docs/cmdline-opts/anyauth.d | 22 - Engine/lib/curl/docs/cmdline-opts/append.d | 14 - Engine/lib/curl/docs/cmdline-opts/aws-sigv4.d | 21 - Engine/lib/curl/docs/cmdline-opts/basic.d | 16 - Engine/lib/curl/docs/cmdline-opts/cacert.d | 39 - Engine/lib/curl/docs/cmdline-opts/capath.d | 21 - .../lib/curl/docs/cmdline-opts/cert-status.d | 18 - Engine/lib/curl/docs/cmdline-opts/cert-type.d | 19 - Engine/lib/curl/docs/cmdline-opts/cert.d | 59 - Engine/lib/curl/docs/cmdline-opts/ciphers.d | 17 - .../curl/docs/cmdline-opts/compressed-ssh.d | 12 - .../lib/curl/docs/cmdline-opts/compressed.d | 16 - Engine/lib/curl/docs/cmdline-opts/config.d | 77 - .../curl/docs/cmdline-opts/connect-timeout.d | 17 - .../lib/curl/docs/cmdline-opts/connect-to.d | 25 - .../lib/curl/docs/cmdline-opts/continue-at.d | 21 - .../lib/curl/docs/cmdline-opts/cookie-jar.d | 31 - Engine/lib/curl/docs/cmdline-opts/cookie.d | 43 - .../lib/curl/docs/cmdline-opts/create-dirs.d | 18 - .../curl/docs/cmdline-opts/create-file-mode.d | 18 - Engine/lib/curl/docs/cmdline-opts/crlf.d | 13 - Engine/lib/curl/docs/cmdline-opts/crlfile.d | 15 - Engine/lib/curl/docs/cmdline-opts/curves.d | 22 - .../lib/curl/docs/cmdline-opts/data-ascii.d | 12 - .../lib/curl/docs/cmdline-opts/data-binary.d | 24 - Engine/lib/curl/docs/cmdline-opts/data-raw.d | 14 - .../curl/docs/cmdline-opts/data-urlencode.d | 40 - Engine/lib/curl/docs/cmdline-opts/data.d | 36 - .../lib/curl/docs/cmdline-opts/delegation.d | 24 - Engine/lib/curl/docs/cmdline-opts/digest.d | 16 - .../lib/curl/docs/cmdline-opts/disable-eprt.d | 25 - .../lib/curl/docs/cmdline-opts/disable-epsv.d | 22 - Engine/lib/curl/docs/cmdline-opts/disable.d | 13 - .../cmdline-opts/disallow-username-in-url.d | 12 - .../curl/docs/cmdline-opts/dns-interface.d | 15 - .../curl/docs/cmdline-opts/dns-ipv4-addr.d | 17 - .../curl/docs/cmdline-opts/dns-ipv6-addr.d | 17 - .../lib/curl/docs/cmdline-opts/dns-servers.d | 17 - .../curl/docs/cmdline-opts/doh-cert-status.d | 10 - .../lib/curl/docs/cmdline-opts/doh-insecure.d | 10 - Engine/lib/curl/docs/cmdline-opts/doh-url.d | 22 - .../lib/curl/docs/cmdline-opts/dump-header.d | 19 - Engine/lib/curl/docs/cmdline-opts/egd-file.d | 16 - Engine/lib/curl/docs/cmdline-opts/engine.d | 14 - .../lib/curl/docs/cmdline-opts/etag-compare.d | 22 - Engine/lib/curl/docs/cmdline-opts/etag-save.d | 15 - .../docs/cmdline-opts/expect100-timeout.d | 15 - .../lib/curl/docs/cmdline-opts/fail-early.d | 26 - .../curl/docs/cmdline-opts/fail-with-body.d | 19 - Engine/lib/curl/docs/cmdline-opts/fail.d | 21 - .../lib/curl/docs/cmdline-opts/false-start.d | 17 - .../lib/curl/docs/cmdline-opts/form-escape.d | 12 - .../lib/curl/docs/cmdline-opts/form-string.d | 16 - Engine/lib/curl/docs/cmdline-opts/form.d | 136 - .../lib/curl/docs/cmdline-opts/ftp-account.d | 15 - .../cmdline-opts/ftp-alternative-to-user.d | 15 - .../curl/docs/cmdline-opts/ftp-create-dirs.d | 13 - .../lib/curl/docs/cmdline-opts/ftp-method.d | 28 - Engine/lib/curl/docs/cmdline-opts/ftp-pasv.d | 20 - Engine/lib/curl/docs/cmdline-opts/ftp-port.d | 40 - Engine/lib/curl/docs/cmdline-opts/ftp-pret.d | 13 - .../curl/docs/cmdline-opts/ftp-skip-pasv-ip.d | 18 - .../curl/docs/cmdline-opts/ftp-ssl-ccc-mode.d | 15 - .../lib/curl/docs/cmdline-opts/ftp-ssl-ccc.d | 14 - .../curl/docs/cmdline-opts/ftp-ssl-control.d | 13 - Engine/lib/curl/docs/cmdline-opts/gen.pl | 633 - Engine/lib/curl/docs/cmdline-opts/get.d | 23 - Engine/lib/curl/docs/cmdline-opts/globoff.d | 14 - .../cmdline-opts/happy-eyeballs-timeout-ms.d | 22 - .../curl/docs/cmdline-opts/haproxy-protocol.d | 16 - Engine/lib/curl/docs/cmdline-opts/head.d | 14 - Engine/lib/curl/docs/cmdline-opts/header.d | 46 - Engine/lib/curl/docs/cmdline-opts/help.d | 17 - .../lib/curl/docs/cmdline-opts/hostpubmd5.d | 14 - .../curl/docs/cmdline-opts/hostpubsha256.d | 14 - Engine/lib/curl/docs/cmdline-opts/hsts.d | 20 - Engine/lib/curl/docs/cmdline-opts/http0.9.d | 18 - Engine/lib/curl/docs/cmdline-opts/http1.0.d | 15 - Engine/lib/curl/docs/cmdline-opts/http1.1.d | 13 - .../docs/cmdline-opts/http2-prior-knowledge.d | 17 - Engine/lib/curl/docs/cmdline-opts/http2.d | 25 - Engine/lib/curl/docs/cmdline-opts/http3.d | 22 - .../docs/cmdline-opts/ignore-content-length.d | 18 - Engine/lib/curl/docs/cmdline-opts/include.d | 15 - Engine/lib/curl/docs/cmdline-opts/insecure.d | 27 - Engine/lib/curl/docs/cmdline-opts/interface.d | 20 - Engine/lib/curl/docs/cmdline-opts/ipv4.d | 16 - Engine/lib/curl/docs/cmdline-opts/ipv6.d | 16 - Engine/lib/curl/docs/cmdline-opts/json.d | 34 - .../docs/cmdline-opts/junk-session-cookies.d | 15 - .../curl/docs/cmdline-opts/keepalive-time.d | 21 - Engine/lib/curl/docs/cmdline-opts/key-type.d | 15 - Engine/lib/curl/docs/cmdline-opts/key.d | 28 - Engine/lib/curl/docs/cmdline-opts/krb.d | 17 - Engine/lib/curl/docs/cmdline-opts/libcurl.d | 19 - .../lib/curl/docs/cmdline-opts/limit-rate.d | 30 - Engine/lib/curl/docs/cmdline-opts/list-only.d | 29 - .../lib/curl/docs/cmdline-opts/local-port.d | 14 - .../curl/docs/cmdline-opts/location-trusted.d | 14 - Engine/lib/curl/docs/cmdline-opts/location.d | 31 - .../curl/docs/cmdline-opts/login-options.d | 19 - Engine/lib/curl/docs/cmdline-opts/mail-auth.d | 14 - Engine/lib/curl/docs/cmdline-opts/mail-from.d | 12 - .../docs/cmdline-opts/mail-rcpt-allowfails.d | 21 - Engine/lib/curl/docs/cmdline-opts/mail-rcpt.d | 21 - Engine/lib/curl/docs/cmdline-opts/manual.d | 11 - .../lib/curl/docs/cmdline-opts/max-filesize.d | 22 - .../lib/curl/docs/cmdline-opts/max-redirs.d | 16 - Engine/lib/curl/docs/cmdline-opts/max-time.d | 23 - Engine/lib/curl/docs/cmdline-opts/metalink.d | 11 - Engine/lib/curl/docs/cmdline-opts/negotiate.d | 20 - .../lib/curl/docs/cmdline-opts/netrc-file.d | 17 - .../curl/docs/cmdline-opts/netrc-optional.d | 12 - Engine/lib/curl/docs/cmdline-opts/netrc.d | 25 - Engine/lib/curl/docs/cmdline-opts/next.d | 26 - Engine/lib/curl/docs/cmdline-opts/no-alpn.d | 15 - Engine/lib/curl/docs/cmdline-opts/no-buffer.d | 17 - .../lib/curl/docs/cmdline-opts/no-clobber.d | 18 - .../lib/curl/docs/cmdline-opts/no-keepalive.d | 14 - Engine/lib/curl/docs/cmdline-opts/no-npn.d | 16 - .../docs/cmdline-opts/no-progress-meter.d | 14 - .../lib/curl/docs/cmdline-opts/no-sessionid.d | 18 - Engine/lib/curl/docs/cmdline-opts/noproxy.d | 20 - Engine/lib/curl/docs/cmdline-opts/ntlm-wb.d | 12 - Engine/lib/curl/docs/cmdline-opts/ntlm.d | 23 - .../curl/docs/cmdline-opts/oauth2-bearer.d | 18 - .../lib/curl/docs/cmdline-opts/output-dir.d | 22 - Engine/lib/curl/docs/cmdline-opts/output.d | 48 - Engine/lib/curl/docs/cmdline-opts/page-footer | 315 - Engine/lib/curl/docs/cmdline-opts/page-header | 199 - .../docs/cmdline-opts/parallel-immediate.d | 16 - .../lib/curl/docs/cmdline-opts/parallel-max.d | 17 - Engine/lib/curl/docs/cmdline-opts/parallel.d | 15 - Engine/lib/curl/docs/cmdline-opts/pass.d | 14 - .../lib/curl/docs/cmdline-opts/path-as-is.d | 12 - .../lib/curl/docs/cmdline-opts/pinnedpubkey.d | 39 - Engine/lib/curl/docs/cmdline-opts/post301.d | 15 - Engine/lib/curl/docs/cmdline-opts/post302.d | 15 - Engine/lib/curl/docs/cmdline-opts/post303.d | 14 - Engine/lib/curl/docs/cmdline-opts/preproxy.d | 27 - .../lib/curl/docs/cmdline-opts/progress-bar.d | 21 - .../curl/docs/cmdline-opts/proto-default.d | 19 - .../lib/curl/docs/cmdline-opts/proto-redir.d | 21 - Engine/lib/curl/docs/cmdline-opts/proto.d | 47 - .../curl/docs/cmdline-opts/proxy-anyauth.d | 11 - .../lib/curl/docs/cmdline-opts/proxy-basic.d | 12 - .../lib/curl/docs/cmdline-opts/proxy-cacert.d | 11 - .../lib/curl/docs/cmdline-opts/proxy-capath.d | 11 - .../curl/docs/cmdline-opts/proxy-cert-type.d | 11 - .../lib/curl/docs/cmdline-opts/proxy-cert.d | 11 - .../curl/docs/cmdline-opts/proxy-ciphers.d | 11 - .../curl/docs/cmdline-opts/proxy-crlfile.d | 11 - .../lib/curl/docs/cmdline-opts/proxy-digest.d | 11 - .../lib/curl/docs/cmdline-opts/proxy-header.d | 31 - .../curl/docs/cmdline-opts/proxy-insecure.d | 10 - .../curl/docs/cmdline-opts/proxy-key-type.d | 11 - Engine/lib/curl/docs/cmdline-opts/proxy-key.d | 11 - .../curl/docs/cmdline-opts/proxy-negotiate.d | 12 - .../lib/curl/docs/cmdline-opts/proxy-ntlm.d | 11 - .../lib/curl/docs/cmdline-opts/proxy-pass.d | 11 - .../docs/cmdline-opts/proxy-pinnedpubkey.d | 23 - .../docs/cmdline-opts/proxy-service-name.d | 11 - .../docs/cmdline-opts/proxy-ssl-allow-beast.d | 10 - .../cmdline-opts/proxy-ssl-auto-client-cert.d | 10 - .../docs/cmdline-opts/proxy-tls13-ciphers.d | 22 - .../docs/cmdline-opts/proxy-tlsauthtype.d | 11 - .../docs/cmdline-opts/proxy-tlspassword.d | 11 - .../curl/docs/cmdline-opts/proxy-tlsuser.d | 11 - .../lib/curl/docs/cmdline-opts/proxy-tlsv1.d | 10 - .../lib/curl/docs/cmdline-opts/proxy-user.d | 24 - Engine/lib/curl/docs/cmdline-opts/proxy.d | 48 - Engine/lib/curl/docs/cmdline-opts/proxy1.0.d | 16 - .../lib/curl/docs/cmdline-opts/proxytunnel.d | 17 - Engine/lib/curl/docs/cmdline-opts/pubkey.d | 20 - Engine/lib/curl/docs/cmdline-opts/quote.d | 75 - .../lib/curl/docs/cmdline-opts/random-file.d | 15 - Engine/lib/curl/docs/cmdline-opts/range.d | 53 - Engine/lib/curl/docs/cmdline-opts/rate.d | 35 - Engine/lib/curl/docs/cmdline-opts/raw.d | 12 - Engine/lib/curl/docs/cmdline-opts/referer.d | 21 - .../docs/cmdline-opts/remote-header-name.d | 30 - .../curl/docs/cmdline-opts/remote-name-all.d | 13 - .../lib/curl/docs/cmdline-opts/remote-name.d | 27 - .../lib/curl/docs/cmdline-opts/remote-time.d | 13 - .../curl/docs/cmdline-opts/remove-on-error.d | 14 - .../curl/docs/cmdline-opts/request-target.d | 15 - Engine/lib/curl/docs/cmdline-opts/request.d | 46 - Engine/lib/curl/docs/cmdline-opts/resolve.d | 40 - .../curl/docs/cmdline-opts/retry-all-errors.d | 33 - .../docs/cmdline-opts/retry-connrefused.d | 11 - .../lib/curl/docs/cmdline-opts/retry-delay.d | 16 - .../curl/docs/cmdline-opts/retry-max-time.d | 18 - Engine/lib/curl/docs/cmdline-opts/retry.d | 26 - .../lib/curl/docs/cmdline-opts/sasl-authzid.d | 17 - Engine/lib/curl/docs/cmdline-opts/sasl-ir.d | 10 - .../lib/curl/docs/cmdline-opts/service-name.d | 13 - .../lib/curl/docs/cmdline-opts/show-error.d | 14 - Engine/lib/curl/docs/cmdline-opts/silent.d | 16 - Engine/lib/curl/docs/cmdline-opts/socks4.d | 28 - Engine/lib/curl/docs/cmdline-opts/socks4a.d | 27 - .../lib/curl/docs/cmdline-opts/socks5-basic.d | 12 - .../docs/cmdline-opts/socks5-gssapi-nec.d | 13 - .../docs/cmdline-opts/socks5-gssapi-service.d | 17 - .../curl/docs/cmdline-opts/socks5-gssapi.d | 13 - .../curl/docs/cmdline-opts/socks5-hostname.d | 27 - Engine/lib/curl/docs/cmdline-opts/socks5.d | 29 - .../lib/curl/docs/cmdline-opts/speed-limit.d | 16 - .../lib/curl/docs/cmdline-opts/speed-time.d | 19 - .../curl/docs/cmdline-opts/ssl-allow-beast.d | 16 - .../docs/cmdline-opts/ssl-auto-client-cert.d | 15 - .../curl/docs/cmdline-opts/ssl-no-revoke.d | 12 - Engine/lib/curl/docs/cmdline-opts/ssl-reqd.d | 18 - .../cmdline-opts/ssl-revoke-best-effort.d | 12 - Engine/lib/curl/docs/cmdline-opts/ssl.d | 22 - Engine/lib/curl/docs/cmdline-opts/sslv2.d | 17 - Engine/lib/curl/docs/cmdline-opts/sslv3.d | 17 - Engine/lib/curl/docs/cmdline-opts/stderr.d | 17 - .../curl/docs/cmdline-opts/styled-output.d | 14 - .../cmdline-opts/suppress-connect-headers.d | 13 - .../lib/curl/docs/cmdline-opts/tcp-fastopen.d | 10 - .../lib/curl/docs/cmdline-opts/tcp-nodelay.d | 14 - .../curl/docs/cmdline-opts/telnet-option.d | 18 - .../lib/curl/docs/cmdline-opts/tftp-blksize.d | 16 - .../curl/docs/cmdline-opts/tftp-no-options.d | 15 - Engine/lib/curl/docs/cmdline-opts/time-cond.d | 25 - Engine/lib/curl/docs/cmdline-opts/tls-max.d | 32 - .../curl/docs/cmdline-opts/tls13-ciphers.d | 22 - .../lib/curl/docs/cmdline-opts/tlsauthtype.d | 15 - .../lib/curl/docs/cmdline-opts/tlspassword.d | 14 - Engine/lib/curl/docs/cmdline-opts/tlsuser.d | 14 - Engine/lib/curl/docs/cmdline-opts/tlsv1.0.d | 15 - Engine/lib/curl/docs/cmdline-opts/tlsv1.1.d | 15 - Engine/lib/curl/docs/cmdline-opts/tlsv1.2.d | 15 - Engine/lib/curl/docs/cmdline-opts/tlsv1.3.d | 17 - Engine/lib/curl/docs/cmdline-opts/tlsv1.d | 16 - .../lib/curl/docs/cmdline-opts/tr-encoding.d | 12 - .../lib/curl/docs/cmdline-opts/trace-ascii.d | 23 - .../lib/curl/docs/cmdline-opts/trace-time.d | 13 - Engine/lib/curl/docs/cmdline-opts/trace.d | 20 - .../lib/curl/docs/cmdline-opts/unix-socket.d | 12 - .../lib/curl/docs/cmdline-opts/upload-file.d | 35 - Engine/lib/curl/docs/cmdline-opts/url.d | 24 - Engine/lib/curl/docs/cmdline-opts/use-ascii.d | 14 - .../lib/curl/docs/cmdline-opts/user-agent.d | 21 - Engine/lib/curl/docs/cmdline-opts/user.d | 45 - Engine/lib/curl/docs/cmdline-opts/verbose.d | 27 - Engine/lib/curl/docs/cmdline-opts/version.d | 84 - Engine/lib/curl/docs/cmdline-opts/write-out.d | 209 - Engine/lib/curl/docs/cmdline-opts/xattr.d | 14 - Engine/lib/curl/docs/curl-config.1 | 105 - Engine/lib/curl/docs/curl.1 | 5206 -- Engine/lib/curl/docs/examples/.checksrc | 3 - Engine/lib/curl/docs/examples/10-at-a-time.c | 152 - Engine/lib/curl/docs/examples/Makefile.am | 72 - .../lib/curl/docs/examples/Makefile.example | 55 - Engine/lib/curl/docs/examples/Makefile.in | 2236 - Engine/lib/curl/docs/examples/Makefile.inc | 144 - Engine/lib/curl/docs/examples/Makefile.m32 | 415 - Engine/lib/curl/docs/examples/README.md | 40 - Engine/lib/curl/docs/examples/altsvc.c | 58 - Engine/lib/curl/docs/examples/anyauthput.c | 173 - Engine/lib/curl/docs/examples/cacertinmem.c | 183 - Engine/lib/curl/docs/examples/certinfo.c | 87 - Engine/lib/curl/docs/examples/chkspeed.c | 215 - .../lib/curl/docs/examples/cookie_interface.c | 142 - Engine/lib/curl/docs/examples/crawler.c | 228 - Engine/lib/curl/docs/examples/curlgtk.c | 119 - Engine/lib/curl/docs/examples/debug.c | 156 - Engine/lib/curl/docs/examples/ephiperfifo.c | 547 - Engine/lib/curl/docs/examples/evhiperfifo.c | 450 - .../lib/curl/docs/examples/externalsocket.c | 176 - Engine/lib/curl/docs/examples/fileupload.c | 89 - Engine/lib/curl/docs/examples/ftp-wildcard.c | 152 - Engine/lib/curl/docs/examples/ftpget.c | 94 - Engine/lib/curl/docs/examples/ftpgetinfo.c | 92 - Engine/lib/curl/docs/examples/ftpgetresp.c | 79 - Engine/lib/curl/docs/examples/ftpsget.c | 101 - Engine/lib/curl/docs/examples/ftpupload.c | 142 - .../lib/curl/docs/examples/ftpuploadfrommem.c | 126 - .../lib/curl/docs/examples/ftpuploadresume.c | 163 - Engine/lib/curl/docs/examples/getinfo.c | 54 - Engine/lib/curl/docs/examples/getinmemory.c | 118 - Engine/lib/curl/docs/examples/getredirect.c | 72 - Engine/lib/curl/docs/examples/getreferrer.c | 59 - Engine/lib/curl/docs/examples/ghiper.c | 438 - Engine/lib/curl/docs/examples/headerapi.c | 81 - Engine/lib/curl/docs/examples/hiperfifo.c | 464 - .../lib/curl/docs/examples/href_extractor.c | 88 - Engine/lib/curl/docs/examples/htmltidy.c | 130 - Engine/lib/curl/docs/examples/htmltitle.cpp | 296 - Engine/lib/curl/docs/examples/http-post.c | 61 - .../lib/curl/docs/examples/http2-download.c | 236 - .../curl/docs/examples/http2-pushinmemory.c | 190 - .../lib/curl/docs/examples/http2-serverpush.c | 273 - Engine/lib/curl/docs/examples/http2-upload.c | 304 - Engine/lib/curl/docs/examples/http3-present.c | 49 - Engine/lib/curl/docs/examples/http3.c | 56 - .../lib/curl/docs/examples/httpcustomheader.c | 72 - .../curl/docs/examples/httpput-postfields.c | 103 - Engine/lib/curl/docs/examples/httpput.c | 123 - Engine/lib/curl/docs/examples/https.c | 80 - Engine/lib/curl/docs/examples/imap-append.c | 132 - Engine/lib/curl/docs/examples/imap-authzid.c | 73 - Engine/lib/curl/docs/examples/imap-copy.c | 73 - Engine/lib/curl/docs/examples/imap-create.c | 69 - Engine/lib/curl/docs/examples/imap-delete.c | 69 - Engine/lib/curl/docs/examples/imap-examine.c | 69 - Engine/lib/curl/docs/examples/imap-fetch.c | 67 - Engine/lib/curl/docs/examples/imap-list.c | 68 - Engine/lib/curl/docs/examples/imap-lsub.c | 70 - Engine/lib/curl/docs/examples/imap-multi.c | 83 - Engine/lib/curl/docs/examples/imap-noop.c | 69 - Engine/lib/curl/docs/examples/imap-search.c | 73 - Engine/lib/curl/docs/examples/imap-ssl.c | 94 - Engine/lib/curl/docs/examples/imap-store.c | 84 - Engine/lib/curl/docs/examples/imap-tls.c | 94 - Engine/lib/curl/docs/examples/makefile.dj | 57 - Engine/lib/curl/docs/examples/multi-app.c | 118 - .../curl/docs/examples/multi-debugcallback.c | 169 - Engine/lib/curl/docs/examples/multi-double.c | 97 - Engine/lib/curl/docs/examples/multi-event.c | 242 - Engine/lib/curl/docs/examples/multi-formadd.c | 110 - Engine/lib/curl/docs/examples/multi-legacy.c | 179 - Engine/lib/curl/docs/examples/multi-post.c | 105 - Engine/lib/curl/docs/examples/multi-single.c | 84 - Engine/lib/curl/docs/examples/multi-uv.c | 237 - Engine/lib/curl/docs/examples/multithread.c | 96 - .../curl/docs/examples/opensslthreadlock.c | 97 - Engine/lib/curl/docs/examples/parseurl.c | 80 - Engine/lib/curl/docs/examples/persistent.c | 70 - Engine/lib/curl/docs/examples/pop3-authzid.c | 72 - Engine/lib/curl/docs/examples/pop3-dele.c | 72 - Engine/lib/curl/docs/examples/pop3-list.c | 66 - Engine/lib/curl/docs/examples/pop3-multi.c | 84 - Engine/lib/curl/docs/examples/pop3-noop.c | 72 - Engine/lib/curl/docs/examples/pop3-retr.c | 66 - Engine/lib/curl/docs/examples/pop3-ssl.c | 93 - Engine/lib/curl/docs/examples/pop3-stat.c | 72 - Engine/lib/curl/docs/examples/pop3-tls.c | 93 - Engine/lib/curl/docs/examples/pop3-top.c | 69 - Engine/lib/curl/docs/examples/pop3-uidl.c | 69 - Engine/lib/curl/docs/examples/post-callback.c | 156 - Engine/lib/curl/docs/examples/postinmemory.c | 114 - .../lib/curl/docs/examples/postit2-formadd.c | 108 - Engine/lib/curl/docs/examples/postit2.c | 104 - Engine/lib/curl/docs/examples/progressfunc.c | 97 - Engine/lib/curl/docs/examples/resolve.c | 58 - Engine/lib/curl/docs/examples/sendrecv.c | 162 - Engine/lib/curl/docs/examples/sepheaders.c | 96 - Engine/lib/curl/docs/examples/sessioninfo.c | 112 - Engine/lib/curl/docs/examples/sftpget.c | 112 - .../lib/curl/docs/examples/sftpuploadresume.c | 137 - .../docs/examples/shared-connection-cache.c | 87 - Engine/lib/curl/docs/examples/simple.c | 53 - Engine/lib/curl/docs/examples/simplepost.c | 59 - Engine/lib/curl/docs/examples/simplessl.c | 143 - .../curl/docs/examples/smooth-gtk-thread.c | 218 - Engine/lib/curl/docs/examples/smtp-authzid.c | 162 - Engine/lib/curl/docs/examples/smtp-expn.c | 81 - Engine/lib/curl/docs/examples/smtp-mail.c | 150 - Engine/lib/curl/docs/examples/smtp-mime.c | 165 - Engine/lib/curl/docs/examples/smtp-multi.c | 153 - Engine/lib/curl/docs/examples/smtp-ssl.c | 170 - Engine/lib/curl/docs/examples/smtp-tls.c | 172 - Engine/lib/curl/docs/examples/smtp-vrfy.c | 81 - Engine/lib/curl/docs/examples/sslbackend.c | 79 - Engine/lib/curl/docs/examples/synctime.c | 377 - Engine/lib/curl/docs/examples/threaded-ssl.c | 168 - Engine/lib/curl/docs/examples/url2file.c | 88 - Engine/lib/curl/docs/examples/urlapi.c | 74 - Engine/lib/curl/docs/examples/usercertinmem.c | 228 - .../lib/curl/docs/examples/version-check.pl | 105 - Engine/lib/curl/docs/examples/xmlstream.c | 168 - Engine/lib/curl/docs/libcurl/ABI.md | 68 - Engine/lib/curl/docs/libcurl/CMakeLists.txt | 78 - Engine/lib/curl/docs/libcurl/Makefile.am | 80 - Engine/lib/curl/docs/libcurl/Makefile.in | 1382 - Engine/lib/curl/docs/libcurl/Makefile.inc | 115 - .../lib/curl/docs/libcurl/curl_easy_cleanup.3 | 78 - .../curl/docs/libcurl/curl_easy_duphandle.3 | 72 - .../lib/curl/docs/libcurl/curl_easy_escape.3 | 76 - .../lib/curl/docs/libcurl/curl_easy_getinfo.3 | 321 - .../lib/curl/docs/libcurl/curl_easy_header.3 | 154 - Engine/lib/curl/docs/libcurl/curl_easy_init.3 | 66 - .../curl/docs/libcurl/curl_easy_nextheader.3 | 97 - .../docs/libcurl/curl_easy_option_by_id.3 | 56 - .../docs/libcurl/curl_easy_option_by_name.3 | 54 - .../curl/docs/libcurl/curl_easy_option_next.3 | 87 - .../lib/curl/docs/libcurl/curl_easy_pause.3 | 114 - .../lib/curl/docs/libcurl/curl_easy_perform.3 | 86 - Engine/lib/curl/docs/libcurl/curl_easy_recv.3 | 100 - .../lib/curl/docs/libcurl/curl_easy_reset.3 | 56 - Engine/lib/curl/docs/libcurl/curl_easy_send.3 | 92 - .../lib/curl/docs/libcurl/curl_easy_setopt.3 | 724 - .../curl/docs/libcurl/curl_easy_strerror.3 | 55 - .../curl/docs/libcurl/curl_easy_unescape.3 | 77 - .../lib/curl/docs/libcurl/curl_easy_upkeep.3 | 82 - Engine/lib/curl/docs/libcurl/curl_escape.3 | 60 - Engine/lib/curl/docs/libcurl/curl_formadd.3 | 269 - Engine/lib/curl/docs/libcurl/curl_formfree.3 | 71 - Engine/lib/curl/docs/libcurl/curl_formget.3 | 73 - Engine/lib/curl/docs/libcurl/curl_free.3 | 54 - Engine/lib/curl/docs/libcurl/curl_getdate.3 | 120 - Engine/lib/curl/docs/libcurl/curl_getenv.3 | 61 - .../curl/docs/libcurl/curl_global_cleanup.3 | 75 - .../lib/curl/docs/libcurl/curl_global_init.3 | 121 - .../curl/docs/libcurl/curl_global_init_mem.3 | 80 - .../curl/docs/libcurl/curl_global_sslset.3 | 122 - .../lib/curl/docs/libcurl/curl_mime_addpart.3 | 70 - Engine/lib/curl/docs/libcurl/curl_mime_data.3 | 76 - .../lib/curl/docs/libcurl/curl_mime_data_cb.3 | 169 - .../lib/curl/docs/libcurl/curl_mime_encoder.3 | 100 - .../curl/docs/libcurl/curl_mime_filedata.3 | 88 - .../curl/docs/libcurl/curl_mime_filename.3 | 76 - Engine/lib/curl/docs/libcurl/curl_mime_free.3 | 64 - .../lib/curl/docs/libcurl/curl_mime_headers.3 | 69 - Engine/lib/curl/docs/libcurl/curl_mime_init.3 | 70 - Engine/lib/curl/docs/libcurl/curl_mime_name.3 | 67 - .../curl/docs/libcurl/curl_mime_subparts.3 | 76 - Engine/lib/curl/docs/libcurl/curl_mime_type.3 | 86 - Engine/lib/curl/docs/libcurl/curl_mprintf.3 | 255 - .../curl/docs/libcurl/curl_multi_add_handle.3 | 86 - .../lib/curl/docs/libcurl/curl_multi_assign.3 | 75 - .../curl/docs/libcurl/curl_multi_cleanup.3 | 63 - .../lib/curl/docs/libcurl/curl_multi_fdset.3 | 102 - .../curl/docs/libcurl/curl_multi_info_read.3 | 99 - .../lib/curl/docs/libcurl/curl_multi_init.3 | 54 - .../curl/docs/libcurl/curl_multi_perform.3 | 100 - .../lib/curl/docs/libcurl/curl_multi_poll.3 | 120 - .../docs/libcurl/curl_multi_remove_handle.3 | 65 - .../lib/curl/docs/libcurl/curl_multi_setopt.3 | 90 - .../lib/curl/docs/libcurl/curl_multi_socket.3 | 93 - .../docs/libcurl/curl_multi_socket_action.3 | 115 - .../curl/docs/libcurl/curl_multi_socket_all.3 | 1 - .../curl/docs/libcurl/curl_multi_strerror.3 | 49 - .../curl/docs/libcurl/curl_multi_timeout.3 | 84 - .../lib/curl/docs/libcurl/curl_multi_wait.3 | 126 - .../lib/curl/docs/libcurl/curl_multi_wakeup.3 | 90 - .../curl/docs/libcurl/curl_share_cleanup.3 | 56 - .../lib/curl/docs/libcurl/curl_share_init.3 | 57 - .../lib/curl/docs/libcurl/curl_share_setopt.3 | 62 - .../curl/docs/libcurl/curl_share_strerror.3 | 49 - .../lib/curl/docs/libcurl/curl_slist_append.3 | 78 - .../curl/docs/libcurl/curl_slist_free_all.3 | 61 - Engine/lib/curl/docs/libcurl/curl_strequal.3 | 62 - Engine/lib/curl/docs/libcurl/curl_strnequal.3 | 1 - Engine/lib/curl/docs/libcurl/curl_unescape.3 | 66 - Engine/lib/curl/docs/libcurl/curl_url.3 | 58 - .../lib/curl/docs/libcurl/curl_url_cleanup.3 | 48 - Engine/lib/curl/docs/libcurl/curl_url_dup.3 | 56 - Engine/lib/curl/docs/libcurl/curl_url_get.3 | 136 - Engine/lib/curl/docs/libcurl/curl_url_set.3 | 174 - .../lib/curl/docs/libcurl/curl_url_strerror.3 | 52 - Engine/lib/curl/docs/libcurl/curl_version.3 | 50 - .../lib/curl/docs/libcurl/curl_version_info.3 | 247 - Engine/lib/curl/docs/libcurl/libcurl-easy.3 | 62 - Engine/lib/curl/docs/libcurl/libcurl-env.3 | 99 - Engine/lib/curl/docs/libcurl/libcurl-errors.3 | 420 - Engine/lib/curl/docs/libcurl/libcurl-multi.3 | 182 - .../lib/curl/docs/libcurl/libcurl-security.3 | 424 - Engine/lib/curl/docs/libcurl/libcurl-share.3 | 68 - .../lib/curl/docs/libcurl/libcurl-symbols.3 | 2321 - Engine/lib/curl/docs/libcurl/libcurl-thread.3 | 114 - .../lib/curl/docs/libcurl/libcurl-tutorial.3 | 1399 - Engine/lib/curl/docs/libcurl/libcurl-url.3 | 142 - Engine/lib/curl/docs/libcurl/libcurl.3 | 234 - Engine/lib/curl/docs/libcurl/libcurl.m4 | 274 - .../lib/curl/docs/libcurl/mksymbolsmanpage.pl | 97 - .../lib/curl/docs/libcurl/opts/CMakeLists.txt | 35 - .../docs/libcurl/opts/CURLINFO_ACTIVESOCKET.3 | 76 - .../libcurl/opts/CURLINFO_APPCONNECT_TIME.3 | 70 - .../libcurl/opts/CURLINFO_APPCONNECT_TIME_T.3 | 72 - .../curl/docs/libcurl/opts/CURLINFO_CAINFO.3 | 68 - .../curl/docs/libcurl/opts/CURLINFO_CAPATH.3 | 68 - .../docs/libcurl/opts/CURLINFO_CERTINFO.3 | 87 - .../libcurl/opts/CURLINFO_CONDITION_UNMET.3 | 76 - .../docs/libcurl/opts/CURLINFO_CONNECT_TIME.3 | 66 - .../libcurl/opts/CURLINFO_CONNECT_TIME_T.3 | 68 - .../opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.3 | 70 - .../opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3 | 67 - .../opts/CURLINFO_CONTENT_LENGTH_UPLOAD.3 | 69 - .../opts/CURLINFO_CONTENT_LENGTH_UPLOAD_T.3 | 66 - .../docs/libcurl/opts/CURLINFO_CONTENT_TYPE.3 | 71 - .../docs/libcurl/opts/CURLINFO_COOKIELIST.3 | 82 - .../libcurl/opts/CURLINFO_EFFECTIVE_METHOD.3 | 71 - .../libcurl/opts/CURLINFO_EFFECTIVE_URL.3 | 68 - .../docs/libcurl/opts/CURLINFO_FILETIME.3 | 74 - .../docs/libcurl/opts/CURLINFO_FILETIME_T.3 | 77 - .../libcurl/opts/CURLINFO_FTP_ENTRY_PATH.3 | 70 - .../docs/libcurl/opts/CURLINFO_HEADER_SIZE.3 | 66 - .../libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.3 | 75 - .../libcurl/opts/CURLINFO_HTTP_CONNECTCODE.3 | 66 - .../docs/libcurl/opts/CURLINFO_HTTP_VERSION.3 | 62 - .../docs/libcurl/opts/CURLINFO_LASTSOCKET.3 | 76 - .../docs/libcurl/opts/CURLINFO_LOCAL_IP.3 | 73 - .../docs/libcurl/opts/CURLINFO_LOCAL_PORT.3 | 70 - .../libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3 | 67 - .../libcurl/opts/CURLINFO_NAMELOOKUP_TIME_T.3 | 68 - .../docs/libcurl/opts/CURLINFO_NUM_CONNECTS.3 | 66 - .../docs/libcurl/opts/CURLINFO_OS_ERRNO.3 | 63 - .../libcurl/opts/CURLINFO_PRETRANSFER_TIME.3 | 71 - .../opts/CURLINFO_PRETRANSFER_TIME_T.3 | 72 - .../docs/libcurl/opts/CURLINFO_PRIMARY_IP.3 | 72 - .../docs/libcurl/opts/CURLINFO_PRIMARY_PORT.3 | 66 - .../curl/docs/libcurl/opts/CURLINFO_PRIVATE.3 | 65 - .../docs/libcurl/opts/CURLINFO_PROTOCOL.3 | 73 - .../libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.3 | 77 - .../docs/libcurl/opts/CURLINFO_PROXY_ERROR.3 | 107 - .../opts/CURLINFO_PROXY_SSL_VERIFYRESULT.3 | 63 - .../libcurl/opts/CURLINFO_REDIRECT_COUNT.3 | 61 - .../libcurl/opts/CURLINFO_REDIRECT_TIME.3 | 67 - .../libcurl/opts/CURLINFO_REDIRECT_TIME_T.3 | 69 - .../docs/libcurl/opts/CURLINFO_REDIRECT_URL.3 | 67 - .../curl/docs/libcurl/opts/CURLINFO_REFERER.3 | 66 - .../docs/libcurl/opts/CURLINFO_REQUEST_SIZE.3 | 64 - .../libcurl/opts/CURLINFO_RESPONSE_CODE.3 | 65 - .../docs/libcurl/opts/CURLINFO_RETRY_AFTER.3 | 69 - .../libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.3 | 60 - .../libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.3 | 61 - .../libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.3 | 65 - .../libcurl/opts/CURLINFO_RTSP_SESSION_ID.3 | 66 - .../curl/docs/libcurl/opts/CURLINFO_SCHEME.3 | 67 - .../libcurl/opts/CURLINFO_SIZE_DOWNLOAD.3 | 72 - .../libcurl/opts/CURLINFO_SIZE_DOWNLOAD_T.3 | 70 - .../docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.3 | 68 - .../libcurl/opts/CURLINFO_SIZE_UPLOAD_T.3 | 65 - .../libcurl/opts/CURLINFO_SPEED_DOWNLOAD.3 | 68 - .../libcurl/opts/CURLINFO_SPEED_DOWNLOAD_T.3 | 65 - .../docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.3 | 66 - .../libcurl/opts/CURLINFO_SPEED_UPLOAD_T.3 | 64 - .../docs/libcurl/opts/CURLINFO_SSL_ENGINES.3 | 65 - .../libcurl/opts/CURLINFO_SSL_VERIFYRESULT.3 | 63 - .../opts/CURLINFO_STARTTRANSFER_TIME.3 | 69 - .../opts/CURLINFO_STARTTRANSFER_TIME_T.3 | 71 - .../docs/libcurl/opts/CURLINFO_TLS_SESSION.3 | 73 - .../docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.3 | 171 - .../docs/libcurl/opts/CURLINFO_TOTAL_TIME.3 | 67 - .../docs/libcurl/opts/CURLINFO_TOTAL_TIME_T.3 | 69 - .../opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3 | 60 - .../CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3 | 59 - .../docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3 | 70 - .../opts/CURLMOPT_MAX_CONCURRENT_STREAMS.3 | 59 - .../opts/CURLMOPT_MAX_HOST_CONNECTIONS.3 | 77 - .../opts/CURLMOPT_MAX_PIPELINE_LENGTH.3 | 63 - .../opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3 | 69 - .../docs/libcurl/opts/CURLMOPT_PIPELINING.3 | 94 - .../opts/CURLMOPT_PIPELINING_SERVER_BL.3 | 68 - .../opts/CURLMOPT_PIPELINING_SITE_BL.3 | 64 - .../docs/libcurl/opts/CURLMOPT_PUSHDATA.3 | 82 - .../docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3 | 139 - .../docs/libcurl/opts/CURLMOPT_SOCKETDATA.3 | 79 - .../libcurl/opts/CURLMOPT_SOCKETFUNCTION.3 | 117 - .../docs/libcurl/opts/CURLMOPT_TIMERDATA.3 | 85 - .../libcurl/opts/CURLMOPT_TIMERFUNCTION.3 | 114 - .../opts/CURLOPT_ABSTRACT_UNIX_SOCKET.3 | 65 - .../libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3 | 59 - .../libcurl/opts/CURLOPT_ACCEPT_ENCODING.3 | 111 - .../docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3 | 60 - .../curl/docs/libcurl/opts/CURLOPT_ALTSVC.3 | 90 - .../docs/libcurl/opts/CURLOPT_ALTSVC_CTRL.3 | 89 - .../curl/docs/libcurl/opts/CURLOPT_APPEND.3 | 60 - .../docs/libcurl/opts/CURLOPT_AUTOREFERER.3 | 65 - .../docs/libcurl/opts/CURLOPT_AWS_SIGV4.3 | 100 - .../docs/libcurl/opts/CURLOPT_BUFFERSIZE.3 | 74 - .../curl/docs/libcurl/opts/CURLOPT_CAINFO.3 | 91 - .../docs/libcurl/opts/CURLOPT_CAINFO_BLOB.3 | 74 - .../curl/docs/libcurl/opts/CURLOPT_CAPATH.3 | 77 - .../curl/docs/libcurl/opts/CURLOPT_CERTINFO.3 | 84 - .../libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3 | 144 - .../docs/libcurl/opts/CURLOPT_CHUNK_DATA.3 | 95 - .../libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3 | 74 - .../libcurl/opts/CURLOPT_CLOSESOCKETDATA.3 | 61 - .../opts/CURLOPT_CLOSESOCKETFUNCTION.3 | 72 - .../libcurl/opts/CURLOPT_CONNECTTIMEOUT.3 | 70 - .../libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3 | 70 - .../docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3 | 77 - .../docs/libcurl/opts/CURLOPT_CONNECT_TO.3 | 114 - .../opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3 | 107 - .../opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3 | 105 - .../opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3 | 106 - .../curl/docs/libcurl/opts/CURLOPT_COOKIE.3 | 88 - .../docs/libcurl/opts/CURLOPT_COOKIEFILE.3 | 92 - .../docs/libcurl/opts/CURLOPT_COOKIEJAR.3 | 83 - .../docs/libcurl/opts/CURLOPT_COOKIELIST.3 | 127 - .../docs/libcurl/opts/CURLOPT_COOKIESESSION.3 | 71 - .../libcurl/opts/CURLOPT_COPYPOSTFIELDS.3 | 75 - .../lib/curl/docs/libcurl/opts/CURLOPT_CRLF.3 | 61 - .../curl/docs/libcurl/opts/CURLOPT_CRLFILE.3 | 80 - .../curl/docs/libcurl/opts/CURLOPT_CURLU.3 | 75 - .../docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3 | 116 - .../docs/libcurl/opts/CURLOPT_DEBUGDATA.3 | 74 - .../docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3 | 190 - .../libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.3 | 87 - .../docs/libcurl/opts/CURLOPT_DIRLISTONLY.3 | 78 - .../opts/CURLOPT_DISALLOW_USERNAME_IN_URL.3 | 62 - .../libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3 | 78 - .../docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3 | 64 - .../docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3 | 67 - .../docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3 | 67 - .../docs/libcurl/opts/CURLOPT_DNS_SERVERS.3 | 72 - .../opts/CURLOPT_DNS_SHUFFLE_ADDRESSES.3 | 72 - .../opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3 | 67 - .../libcurl/opts/CURLOPT_DOH_SSL_VERIFYHOST.3 | 91 - .../libcurl/opts/CURLOPT_DOH_SSL_VERIFYPEER.3 | 102 - .../opts/CURLOPT_DOH_SSL_VERIFYSTATUS.3 | 75 - .../curl/docs/libcurl/opts/CURLOPT_DOH_URL.3 | 91 - .../docs/libcurl/opts/CURLOPT_EGDSOCKET.3 | 66 - .../docs/libcurl/opts/CURLOPT_ERRORBUFFER.3 | 97 - .../opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3 | 62 - .../docs/libcurl/opts/CURLOPT_FAILONERROR.3 | 72 - .../curl/docs/libcurl/opts/CURLOPT_FILETIME.3 | 69 - .../docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3 | 67 - .../libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3 | 77 - .../libcurl/opts/CURLOPT_FOLLOWLOCATION.3 | 86 - .../docs/libcurl/opts/CURLOPT_FORBID_REUSE.3 | 65 - .../docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3 | 64 - .../curl/docs/libcurl/opts/CURLOPT_FTPPORT.3 | 88 - .../docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3 | 68 - .../docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3 | 65 - .../opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3 | 67 - .../opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3 | 84 - .../libcurl/opts/CURLOPT_FTP_FILEMETHOD.3 | 76 - .../libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3 | 70 - .../docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3 | 69 - .../docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3 | 68 - .../docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3 | 65 - .../docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3 | 63 - .../libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3 | 65 - .../opts/CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3 | 70 - .../libcurl/opts/CURLOPT_HAPROXYPROTOCOL.3 | 64 - .../curl/docs/libcurl/opts/CURLOPT_HEADER.3 | 76 - .../docs/libcurl/opts/CURLOPT_HEADERDATA.3 | 83 - .../libcurl/opts/CURLOPT_HEADERFUNCTION.3 | 124 - .../docs/libcurl/opts/CURLOPT_HEADEROPT.3 | 81 - .../lib/curl/docs/libcurl/opts/CURLOPT_HSTS.3 | 79 - .../docs/libcurl/opts/CURLOPT_HSTSREADDATA.3 | 66 - .../libcurl/opts/CURLOPT_HSTSREADFUNCTION.3 | 90 - .../docs/libcurl/opts/CURLOPT_HSTSWRITEDATA.3 | 66 - .../libcurl/opts/CURLOPT_HSTSWRITEFUNCTION.3 | 94 - .../docs/libcurl/opts/CURLOPT_HSTS_CTRL.3 | 71 - .../libcurl/opts/CURLOPT_HTTP09_ALLOWED.3 | 63 - .../libcurl/opts/CURLOPT_HTTP200ALIASES.3 | 74 - .../curl/docs/libcurl/opts/CURLOPT_HTTPAUTH.3 | 140 - .../curl/docs/libcurl/opts/CURLOPT_HTTPGET.3 | 69 - .../docs/libcurl/opts/CURLOPT_HTTPHEADER.3 | 140 - .../curl/docs/libcurl/opts/CURLOPT_HTTPPOST.3 | 85 - .../libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3 | 73 - .../opts/CURLOPT_HTTP_CONTENT_DECODING.3 | 60 - .../opts/CURLOPT_HTTP_TRANSFER_DECODING.3 | 60 - .../docs/libcurl/opts/CURLOPT_HTTP_VERSION.3 | 102 - .../opts/CURLOPT_IGNORE_CONTENT_LENGTH.3 | 71 - .../docs/libcurl/opts/CURLOPT_INFILESIZE.3 | 76 - .../libcurl/opts/CURLOPT_INFILESIZE_LARGE.3 | 75 - .../docs/libcurl/opts/CURLOPT_INTERFACE.3 | 77 - .../libcurl/opts/CURLOPT_INTERLEAVEDATA.3 | 63 - .../libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3 | 87 - .../docs/libcurl/opts/CURLOPT_IOCTLDATA.3 | 65 - .../docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3 | 95 - .../docs/libcurl/opts/CURLOPT_IPRESOLVE.3 | 70 - .../docs/libcurl/opts/CURLOPT_ISSUERCERT.3 | 74 - .../libcurl/opts/CURLOPT_ISSUERCERT_BLOB.3 | 85 - .../opts/CURLOPT_KEEP_SENDING_ON_ERROR.3 | 66 - .../docs/libcurl/opts/CURLOPT_KEYPASSWD.3 | 66 - .../curl/docs/libcurl/opts/CURLOPT_KRBLEVEL.3 | 64 - .../docs/libcurl/opts/CURLOPT_LOCALPORT.3 | 61 - .../libcurl/opts/CURLOPT_LOCALPORTRANGE.3 | 65 - .../docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3 | 69 - .../libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3 | 66 - .../libcurl/opts/CURLOPT_LOW_SPEED_TIME.3 | 65 - .../docs/libcurl/opts/CURLOPT_MAIL_AUTH.3 | 74 - .../docs/libcurl/opts/CURLOPT_MAIL_FROM.3 | 67 - .../docs/libcurl/opts/CURLOPT_MAIL_RCPT.3 | 76 - .../opts/CURLOPT_MAIL_RCPT_ALLLOWFAILS.3 | 75 - .../docs/libcurl/opts/CURLOPT_MAXAGE_CONN.3 | 70 - .../docs/libcurl/opts/CURLOPT_MAXCONNECTS.3 | 73 - .../docs/libcurl/opts/CURLOPT_MAXFILESIZE.3 | 66 - .../libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3 | 65 - .../libcurl/opts/CURLOPT_MAXLIFETIME_CONN.3 | 72 - .../docs/libcurl/opts/CURLOPT_MAXREDIRS.3 | 69 - .../opts/CURLOPT_MAX_RECV_SPEED_LARGE.3 | 67 - .../opts/CURLOPT_MAX_SEND_SPEED_LARGE.3 | 70 - .../curl/docs/libcurl/opts/CURLOPT_MIMEPOST.3 | 55 - .../docs/libcurl/opts/CURLOPT_MIME_OPTIONS.3 | 94 - .../curl/docs/libcurl/opts/CURLOPT_NETRC.3 | 122 - .../docs/libcurl/opts/CURLOPT_NETRC_FILE.3 | 65 - .../opts/CURLOPT_NEW_DIRECTORY_PERMS.3 | 60 - .../libcurl/opts/CURLOPT_NEW_FILE_PERMS.3 | 59 - .../curl/docs/libcurl/opts/CURLOPT_NOBODY.3 | 75 - .../docs/libcurl/opts/CURLOPT_NOPROGRESS.3 | 64 - .../curl/docs/libcurl/opts/CURLOPT_NOPROXY.3 | 90 - .../curl/docs/libcurl/opts/CURLOPT_NOSIGNAL.3 | 77 - .../libcurl/opts/CURLOPT_OPENSOCKETDATA.3 | 86 - .../libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3 | 128 - .../curl/docs/libcurl/opts/CURLOPT_PASSWORD.3 | 68 - .../docs/libcurl/opts/CURLOPT_PATH_AS_IS.3 | 69 - .../libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3 | 134 - .../curl/docs/libcurl/opts/CURLOPT_PIPEWAIT.3 | 77 - .../lib/curl/docs/libcurl/opts/CURLOPT_PORT.3 | 69 - .../lib/curl/docs/libcurl/opts/CURLOPT_POST.3 | 95 - .../docs/libcurl/opts/CURLOPT_POSTFIELDS.3 | 98 - .../docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3 | 67 - .../opts/CURLOPT_POSTFIELDSIZE_LARGE.3 | 67 - .../docs/libcurl/opts/CURLOPT_POSTQUOTE.3 | 70 - .../docs/libcurl/opts/CURLOPT_POSTREDIR.3 | 76 - .../curl/docs/libcurl/opts/CURLOPT_PREQUOTE.3 | 74 - .../docs/libcurl/opts/CURLOPT_PREREQDATA.3 | 66 - .../libcurl/opts/CURLOPT_PREREQFUNCTION.3 | 106 - .../docs/libcurl/opts/CURLOPT_PRE_PROXY.3 | 84 - .../curl/docs/libcurl/opts/CURLOPT_PRIVATE.3 | 66 - .../docs/libcurl/opts/CURLOPT_PROGRESSDATA.3 | 74 - .../libcurl/opts/CURLOPT_PROGRESSFUNCTION.3 | 118 - .../docs/libcurl/opts/CURLOPT_PROTOCOLS.3 | 102 - .../docs/libcurl/opts/CURLOPT_PROTOCOLS_STR.3 | 83 - .../curl/docs/libcurl/opts/CURLOPT_PROXY.3 | 124 - .../docs/libcurl/opts/CURLOPT_PROXYAUTH.3 | 74 - .../docs/libcurl/opts/CURLOPT_PROXYHEADER.3 | 78 - .../docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3 | 67 - .../docs/libcurl/opts/CURLOPT_PROXYPORT.3 | 62 - .../docs/libcurl/opts/CURLOPT_PROXYTYPE.3 | 81 - .../docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3 | 69 - .../docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3 | 67 - .../docs/libcurl/opts/CURLOPT_PROXY_CAINFO.3 | 91 - .../libcurl/opts/CURLOPT_PROXY_CAINFO_BLOB.3 | 81 - .../docs/libcurl/opts/CURLOPT_PROXY_CAPATH.3 | 78 - .../docs/libcurl/opts/CURLOPT_PROXY_CRLFILE.3 | 80 - .../libcurl/opts/CURLOPT_PROXY_ISSUERCERT.3 | 78 - .../opts/CURLOPT_PROXY_ISSUERCERT_BLOB.3 | 88 - .../libcurl/opts/CURLOPT_PROXY_KEYPASSWD.3 | 67 - .../opts/CURLOPT_PROXY_PINNEDPUBLICKEY.3 | 116 - .../libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3 | 63 - .../docs/libcurl/opts/CURLOPT_PROXY_SSLCERT.3 | 77 - .../libcurl/opts/CURLOPT_PROXY_SSLCERTTYPE.3 | 73 - .../libcurl/opts/CURLOPT_PROXY_SSLCERT_BLOB.3 | 78 - .../docs/libcurl/opts/CURLOPT_PROXY_SSLKEY.3 | 73 - .../libcurl/opts/CURLOPT_PROXY_SSLKEYTYPE.3 | 66 - .../libcurl/opts/CURLOPT_PROXY_SSLKEY_BLOB.3 | 76 - .../libcurl/opts/CURLOPT_PROXY_SSLVERSION.3 | 106 - .../opts/CURLOPT_PROXY_SSL_CIPHER_LIST.3 | 93 - .../libcurl/opts/CURLOPT_PROXY_SSL_OPTIONS.3 | 95 - .../opts/CURLOPT_PROXY_SSL_VERIFYHOST.3 | 95 - .../opts/CURLOPT_PROXY_SSL_VERIFYPEER.3 | 95 - .../opts/CURLOPT_PROXY_TLS13_CIPHERS.3 | 75 - .../opts/CURLOPT_PROXY_TLSAUTH_PASSWORD.3 | 68 - .../libcurl/opts/CURLOPT_PROXY_TLSAUTH_TYPE.3 | 76 - .../opts/CURLOPT_PROXY_TLSAUTH_USERNAME.3 | 68 - .../opts/CURLOPT_PROXY_TRANSFER_MODE.3 | 64 - .../lib/curl/docs/libcurl/opts/CURLOPT_PUT.3 | 74 - .../curl/docs/libcurl/opts/CURLOPT_QUOTE.3 | 126 - .../docs/libcurl/opts/CURLOPT_RANDOM_FILE.3 | 66 - .../curl/docs/libcurl/opts/CURLOPT_RANGE.3 | 81 - .../curl/docs/libcurl/opts/CURLOPT_READDATA.3 | 70 - .../docs/libcurl/opts/CURLOPT_READFUNCTION.3 | 120 - .../libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3 | 113 - .../opts/CURLOPT_REDIR_PROTOCOLS_STR.3 | 90 - .../curl/docs/libcurl/opts/CURLOPT_REFERER.3 | 66 - .../libcurl/opts/CURLOPT_REQUEST_TARGET.3 | 61 - .../curl/docs/libcurl/opts/CURLOPT_RESOLVE.3 | 113 - .../opts/CURLOPT_RESOLVER_START_DATA.3 | 69 - .../opts/CURLOPT_RESOLVER_START_FUNCTION.3 | 86 - .../docs/libcurl/opts/CURLOPT_RESUME_FROM.3 | 77 - .../libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3 | 77 - .../libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3 | 58 - .../docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3 | 116 - .../libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3 | 58 - .../libcurl/opts/CURLOPT_RTSP_SESSION_ID.3 | 66 - .../libcurl/opts/CURLOPT_RTSP_STREAM_URI.3 | 71 - .../libcurl/opts/CURLOPT_RTSP_TRANSPORT.3 | 65 - .../docs/libcurl/opts/CURLOPT_SASL_AUTHZID.3 | 69 - .../curl/docs/libcurl/opts/CURLOPT_SASL_IR.3 | 69 - .../curl/docs/libcurl/opts/CURLOPT_SEEKDATA.3 | 62 - .../docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3 | 92 - .../opts/CURLOPT_SERVER_RESPONSE_TIMEOUT.3 | 70 - .../docs/libcurl/opts/CURLOPT_SERVICE_NAME.3 | 64 - .../curl/docs/libcurl/opts/CURLOPT_SHARE.3 | 86 - .../docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3 | 72 - .../libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3 | 127 - .../docs/libcurl/opts/CURLOPT_SOCKS5_AUTH.3 | 68 - .../libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3 | 61 - .../opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3 | 66 - .../libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3 | 64 - .../libcurl/opts/CURLOPT_SSH_COMPRESSION.3 | 63 - .../libcurl/opts/CURLOPT_SSH_HOSTKEYDATA.3 | 66 - .../opts/CURLOPT_SSH_HOSTKEYFUNCTION.3 | 88 - .../opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3 | 63 - .../opts/CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256.3 | 63 - .../docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3 | 68 - .../libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3 | 134 - .../libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3 | 66 - .../opts/CURLOPT_SSH_PRIVATE_KEYFILE.3 | 67 - .../libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3 | 68 - .../curl/docs/libcurl/opts/CURLOPT_SSLCERT.3 | 85 - .../docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3 | 69 - .../docs/libcurl/opts/CURLOPT_SSLCERT_BLOB.3 | 76 - .../docs/libcurl/opts/CURLOPT_SSLENGINE.3 | 71 - .../libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3 | 68 - .../curl/docs/libcurl/opts/CURLOPT_SSLKEY.3 | 68 - .../docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3 | 69 - .../docs/libcurl/opts/CURLOPT_SSLKEY_BLOB.3 | 78 - .../docs/libcurl/opts/CURLOPT_SSLVERSION.3 | 120 - .../libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3 | 91 - .../docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3 | 130 - .../libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3 | 169 - .../docs/libcurl/opts/CURLOPT_SSL_EC_CURVES.3 | 59 - .../libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3 | 58 - .../libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3 | 58 - .../libcurl/opts/CURLOPT_SSL_FALSESTART.3 | 62 - .../docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3 | 97 - .../opts/CURLOPT_SSL_SESSIONID_CACHE.3 | 61 - .../libcurl/opts/CURLOPT_SSL_VERIFYHOST.3 | 103 - .../libcurl/opts/CURLOPT_SSL_VERIFYPEER.3 | 98 - .../libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3 | 67 - .../curl/docs/libcurl/opts/CURLOPT_STDERR.3 | 64 - .../libcurl/opts/CURLOPT_STREAM_DEPENDS.3 | 74 - .../libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3 | 77 - .../docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3 | 81 - .../opts/CURLOPT_SUPPRESS_CONNECT_HEADERS.3 | 98 - .../docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.3 | 61 - .../docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3 | 68 - .../docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3 | 69 - .../docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3 | 69 - .../docs/libcurl/opts/CURLOPT_TCP_NODELAY.3 | 69 - .../docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3 | 64 - .../docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3 | 62 - .../libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.3 | 78 - .../docs/libcurl/opts/CURLOPT_TIMECONDITION.3 | 70 - .../curl/docs/libcurl/opts/CURLOPT_TIMEOUT.3 | 77 - .../docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3 | 79 - .../docs/libcurl/opts/CURLOPT_TIMEVALUE.3 | 67 - .../libcurl/opts/CURLOPT_TIMEVALUE_LARGE.3 | 70 - .../docs/libcurl/opts/CURLOPT_TLS13_CIPHERS.3 | 74 - .../libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3 | 67 - .../docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3 | 72 - .../libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3 | 67 - .../docs/libcurl/opts/CURLOPT_TRAILERDATA.3 | 56 - .../libcurl/opts/CURLOPT_TRAILERFUNCTION.3 | 109 - .../docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3 | 64 - .../libcurl/opts/CURLOPT_TRANSFER_ENCODING.3 | 67 - .../libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3 | 85 - .../libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3 | 73 - .../libcurl/opts/CURLOPT_UPKEEP_INTERVAL_MS.3 | 84 - .../curl/docs/libcurl/opts/CURLOPT_UPLOAD.3 | 83 - .../libcurl/opts/CURLOPT_UPLOAD_BUFFERSIZE.3 | 77 - .../lib/curl/docs/libcurl/opts/CURLOPT_URL.3 | 134 - .../docs/libcurl/opts/CURLOPT_USERAGENT.3 | 64 - .../curl/docs/libcurl/opts/CURLOPT_USERNAME.3 | 88 - .../curl/docs/libcurl/opts/CURLOPT_USERPWD.3 | 96 - .../curl/docs/libcurl/opts/CURLOPT_USE_SSL.3 | 77 - .../curl/docs/libcurl/opts/CURLOPT_VERBOSE.3 | 69 - .../docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3 | 104 - .../docs/libcurl/opts/CURLOPT_WRITEDATA.3 | 65 - .../docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3 | 118 - .../docs/libcurl/opts/CURLOPT_XFERINFODATA.3 | 76 - .../libcurl/opts/CURLOPT_XFERINFOFUNCTION.3 | 115 - .../libcurl/opts/CURLOPT_XOAUTH2_BEARER.3 | 65 - .../docs/libcurl/opts/CURLSHOPT_LOCKFUNC.3 | 73 - .../curl/docs/libcurl/opts/CURLSHOPT_SHARE.3 | 100 - .../docs/libcurl/opts/CURLSHOPT_UNLOCKFUNC.3 | 71 - .../docs/libcurl/opts/CURLSHOPT_UNSHARE.3 | 73 - .../docs/libcurl/opts/CURLSHOPT_USERDATA.3 | 57 - Engine/lib/curl/docs/libcurl/opts/Makefile.am | 63 - Engine/lib/curl/docs/libcurl/opts/Makefile.in | 1108 - .../lib/curl/docs/libcurl/opts/Makefile.inc | 414 - .../lib/curl/docs/libcurl/symbols-in-versions | 1101 - Engine/lib/curl/docs/libcurl/symbols.pl | 102 - Engine/lib/curl/docs/mk-ca-bundle.1 | 121 - Engine/lib/curl/docs/options-in-versions | 260 - Engine/lib/curl/include/Makefile.am | 28 - Engine/lib/curl/include/Makefile.in | 765 - Engine/lib/curl/include/README.md | 20 - Engine/lib/curl/include/curl/Makefile.am | 41 - Engine/lib/curl/include/curl/Makefile.in | 716 - Engine/lib/curl/include/curl/curl.h | 3130 - Engine/lib/curl/include/curl/curlver.h | 79 - Engine/lib/curl/include/curl/easy.h | 125 - Engine/lib/curl/include/curl/header.h | 66 - Engine/lib/curl/include/curl/mprintf.h | 52 - Engine/lib/curl/include/curl/multi.h | 460 - Engine/lib/curl/include/curl/options.h | 70 - Engine/lib/curl/include/curl/stdcheaders.h | 35 - Engine/lib/curl/include/curl/system.h | 490 - Engine/lib/curl/include/curl/typecheck-gcc.h | 712 - Engine/lib/curl/include/curl/urlapi.h | 147 - Engine/lib/curl/install-sh | 541 - Engine/lib/curl/lib/.checksrc | 1 - Engine/lib/curl/lib/CMakeLists.txt | 144 - Engine/lib/curl/lib/Makefile.am | 150 - Engine/lib/curl/lib/Makefile.in | 5070 -- Engine/lib/curl/lib/Makefile.inc | 351 - Engine/lib/curl/lib/Makefile.m32 | 463 - Engine/lib/curl/lib/altsvc.c | 661 - Engine/lib/curl/lib/altsvc.h | 81 - Engine/lib/curl/lib/amigaos.c | 244 - Engine/lib/curl/lib/amigaos.h | 42 - Engine/lib/curl/lib/arpa_telnet.h | 110 - Engine/lib/curl/lib/asyn-ares.c | 934 - Engine/lib/curl/lib/asyn-thread.c | 767 - Engine/lib/curl/lib/asyn.h | 184 - Engine/lib/curl/lib/base64.c | 300 - Engine/lib/curl/lib/bufref.c | 129 - Engine/lib/curl/lib/bufref.h | 48 - Engine/lib/curl/lib/c-hyper.c | 1207 - Engine/lib/curl/lib/c-hyper.h | 60 - Engine/lib/curl/lib/config-amigaos.h | 131 - Engine/lib/curl/lib/config-dos.h | 147 - Engine/lib/curl/lib/config-mac.h | 99 - Engine/lib/curl/lib/config-os400.h | 374 - Engine/lib/curl/lib/config-plan9.h | 162 - Engine/lib/curl/lib/config-riscos.h | 311 - Engine/lib/curl/lib/config-win32.h | 619 - Engine/lib/curl/lib/config-win32ce.h | 336 - Engine/lib/curl/lib/conncache.c | 594 - Engine/lib/curl/lib/conncache.h | 120 - Engine/lib/curl/lib/connect.c | 1734 - Engine/lib/curl/lib/connect.h | 158 - Engine/lib/curl/lib/content_encoding.c | 1123 - Engine/lib/curl/lib/content_encoding.h | 57 - Engine/lib/curl/lib/cookie.c | 1823 - Engine/lib/curl/lib/cookie.h | 141 - Engine/lib/curl/lib/curl_addrinfo.c | 597 - Engine/lib/curl/lib/curl_addrinfo.h | 108 - Engine/lib/curl/lib/curl_base64.h | 34 - Engine/lib/curl/lib/curl_config.h.cmake | 854 - Engine/lib/curl/lib/curl_config.h.in | 1029 - Engine/lib/curl/lib/curl_ctype.c | 132 - Engine/lib/curl/lib/curl_ctype.h | 55 - Engine/lib/curl/lib/curl_des.c | 70 - Engine/lib/curl/lib/curl_des.h | 41 - Engine/lib/curl/lib/curl_endian.c | 84 - Engine/lib/curl/lib/curl_endian.h | 45 - Engine/lib/curl/lib/curl_fnmatch.c | 391 - Engine/lib/curl/lib/curl_fnmatch.h | 46 - Engine/lib/curl/lib/curl_get_line.c | 62 - Engine/lib/curl/lib/curl_get_line.h | 31 - Engine/lib/curl/lib/curl_gethostname.c | 102 - Engine/lib/curl/lib/curl_gethostname.h | 33 - Engine/lib/curl/lib/curl_gssapi.c | 146 - Engine/lib/curl/lib/curl_gssapi.h | 63 - Engine/lib/curl/lib/curl_hmac.h | 74 - Engine/lib/curl/lib/curl_krb5.h | 52 - Engine/lib/curl/lib/curl_ldap.h | 36 - Engine/lib/curl/lib/curl_md4.h | 38 - Engine/lib/curl/lib/curl_md5.h | 65 - Engine/lib/curl/lib/curl_memory.h | 158 - Engine/lib/curl/lib/curl_memrchr.c | 64 - Engine/lib/curl/lib/curl_memrchr.h | 46 - Engine/lib/curl/lib/curl_multibyte.c | 179 - Engine/lib/curl/lib/curl_multibyte.h | 91 - Engine/lib/curl/lib/curl_ntlm_core.c | 722 - Engine/lib/curl/lib/curl_ntlm_core.h | 88 - Engine/lib/curl/lib/curl_ntlm_wb.c | 500 - Engine/lib/curl/lib/curl_ntlm_wb.h | 45 - Engine/lib/curl/lib/curl_path.c | 200 - Engine/lib/curl/lib/curl_path.h | 49 - Engine/lib/curl/lib/curl_printf.h | 50 - Engine/lib/curl/lib/curl_range.c | 96 - Engine/lib/curl/lib/curl_range.h | 31 - Engine/lib/curl/lib/curl_rtmp.c | 338 - Engine/lib/curl/lib/curl_rtmp.h | 35 - Engine/lib/curl/lib/curl_sasl.c | 748 - Engine/lib/curl/lib/curl_sasl.h | 165 - Engine/lib/curl/lib/curl_setup.h | 852 - Engine/lib/curl/lib/curl_setup_once.h | 434 - Engine/lib/curl/lib/curl_sha256.h | 47 - Engine/lib/curl/lib/curl_sspi.c | 239 - Engine/lib/curl/lib/curl_sspi.h | 352 - Engine/lib/curl/lib/curl_threads.c | 157 - Engine/lib/curl/lib/curl_threads.h | 66 - Engine/lib/curl/lib/curlx.h | 118 - Engine/lib/curl/lib/dict.c | 322 - Engine/lib/curl/lib/dict.h | 31 - Engine/lib/curl/lib/doh.c | 982 - Engine/lib/curl/lib/doh.h | 128 - Engine/lib/curl/lib/dotdot.c | 184 - Engine/lib/curl/lib/dotdot.h | 27 - Engine/lib/curl/lib/dynbuf.c | 257 - Engine/lib/curl/lib/dynbuf.h | 90 - Engine/lib/curl/lib/easy.c | 1327 - Engine/lib/curl/lib/easy_lock.h | 105 - Engine/lib/curl/lib/easygetopt.c | 98 - Engine/lib/curl/lib/easyif.h | 34 - Engine/lib/curl/lib/easyoptions.c | 372 - Engine/lib/curl/lib/easyoptions.h | 37 - Engine/lib/curl/lib/escape.c | 229 - Engine/lib/curl/lib/escape.h | 41 - Engine/lib/curl/lib/file.c | 576 - Engine/lib/curl/lib/file.h | 42 - Engine/lib/curl/lib/fileinfo.c | 46 - Engine/lib/curl/lib/fileinfo.h | 38 - Engine/lib/curl/lib/fopen.c | 113 - Engine/lib/curl/lib/fopen.h | 30 - Engine/lib/curl/lib/formdata.c | 947 - Engine/lib/curl/lib/formdata.h | 62 - Engine/lib/curl/lib/ftp.c | 4421 -- Engine/lib/curl/lib/ftp.h | 161 - Engine/lib/curl/lib/ftplistparser.c | 1020 - Engine/lib/curl/lib/ftplistparser.h | 43 - Engine/lib/curl/lib/getenv.c | 79 - Engine/lib/curl/lib/getinfo.c | 624 - Engine/lib/curl/lib/getinfo.h | 29 - Engine/lib/curl/lib/gopher.c | 239 - Engine/lib/curl/lib/gopher.h | 34 - Engine/lib/curl/lib/h2h3.c | 309 - Engine/lib/curl/lib/h2h3.h | 61 - Engine/lib/curl/lib/hash.c | 371 - Engine/lib/curl/lib/hash.h | 102 - Engine/lib/curl/lib/headers.c | 386 - Engine/lib/curl/lib/headers.h | 55 - Engine/lib/curl/lib/hmac.c | 172 - Engine/lib/curl/lib/hostasyn.c | 127 - Engine/lib/curl/lib/hostip.c | 1321 - Engine/lib/curl/lib/hostip.h | 244 - Engine/lib/curl/lib/hostip4.c | 302 - Engine/lib/curl/lib/hostip6.c | 162 - Engine/lib/curl/lib/hostsyn.c | 108 - Engine/lib/curl/lib/hsts.c | 555 - Engine/lib/curl/lib/hsts.h | 67 - Engine/lib/curl/lib/http.c | 4375 -- Engine/lib/curl/lib/http.h | 376 - Engine/lib/curl/lib/http2.c | 2316 - Engine/lib/curl/lib/http2.h | 84 - Engine/lib/curl/lib/http_aws_sigv4.c | 405 - Engine/lib/curl/lib/http_aws_sigv4.h | 31 - Engine/lib/curl/lib/http_chunks.c | 319 - Engine/lib/curl/lib/http_chunks.h | 100 - Engine/lib/curl/lib/http_digest.c | 185 - Engine/lib/curl/lib/http_digest.h | 44 - Engine/lib/curl/lib/http_negotiate.c | 224 - Engine/lib/curl/lib/http_negotiate.h | 43 - Engine/lib/curl/lib/http_ntlm.c | 275 - Engine/lib/curl/lib/http_ntlm.h | 44 - Engine/lib/curl/lib/http_proxy.c | 1079 - Engine/lib/curl/lib/http_proxy.h | 81 - Engine/lib/curl/lib/idn_win32.c | 121 - Engine/lib/curl/lib/if2ip.c | 256 - Engine/lib/curl/lib/if2ip.h | 92 - Engine/lib/curl/lib/imap.c | 2131 - Engine/lib/curl/lib/imap.h | 101 - Engine/lib/curl/lib/inet_ntop.c | 199 - Engine/lib/curl/lib/inet_ntop.h | 39 - Engine/lib/curl/lib/inet_pton.c | 239 - Engine/lib/curl/lib/inet_pton.h | 41 - Engine/lib/curl/lib/krb5.c | 899 - Engine/lib/curl/lib/ldap.c | 1105 - Engine/lib/curl/lib/libcurl.plist | 35 - Engine/lib/curl/lib/libcurl.plist.in | 35 - Engine/lib/curl/lib/libcurl.rc | 65 - Engine/lib/curl/lib/libcurl.vers.in | 13 - Engine/lib/curl/lib/llist.c | 146 - Engine/lib/curl/lib/llist.h | 52 - Engine/lib/curl/lib/makefile.amiga | 44 - Engine/lib/curl/lib/makefile.dj | 73 - Engine/lib/curl/lib/md4.c | 520 - Engine/lib/curl/lib/md5.c | 669 - Engine/lib/curl/lib/memdebug.c | 482 - Engine/lib/curl/lib/memdebug.h | 199 - Engine/lib/curl/lib/mime.c | 2031 - Engine/lib/curl/lib/mime.h | 173 - Engine/lib/curl/lib/mprintf.c | 1168 - Engine/lib/curl/lib/mqtt.c | 815 - Engine/lib/curl/lib/mqtt.h | 61 - Engine/lib/curl/lib/multi.c | 3734 -- Engine/lib/curl/lib/multihandle.h | 165 - Engine/lib/curl/lib/multiif.h | 101 - Engine/lib/curl/lib/netrc.c | 361 - Engine/lib/curl/lib/netrc.h | 47 - Engine/lib/curl/lib/nonblock.c | 87 - Engine/lib/curl/lib/nonblock.h | 32 - Engine/lib/curl/lib/openldap.c | 1211 - Engine/lib/curl/lib/parsedate.c | 603 - Engine/lib/curl/lib/parsedate.h | 38 - Engine/lib/curl/lib/pingpong.c | 502 - Engine/lib/curl/lib/pingpong.h | 164 - Engine/lib/curl/lib/pop3.c | 1586 - Engine/lib/curl/lib/pop3.h | 97 - Engine/lib/curl/lib/progress.c | 621 - Engine/lib/curl/lib/progress.h | 66 - Engine/lib/curl/lib/psl.c | 113 - Engine/lib/curl/lib/psl.h | 49 - Engine/lib/curl/lib/quic.h | 68 - Engine/lib/curl/lib/rand.c | 255 - Engine/lib/curl/lib/rand.h | 57 - Engine/lib/curl/lib/rename.c | 73 - Engine/lib/curl/lib/rename.h | 29 - Engine/lib/curl/lib/rtsp.c | 842 - Engine/lib/curl/lib/rtsp.h | 72 - Engine/lib/curl/lib/select.c | 398 - Engine/lib/curl/lib/select.h | 115 - Engine/lib/curl/lib/sendf.c | 743 - Engine/lib/curl/lib/sendf.h | 96 - Engine/lib/curl/lib/setopt.c | 3163 - Engine/lib/curl/lib/setopt.h | 32 - Engine/lib/curl/lib/setup-os400.h | 229 - Engine/lib/curl/lib/setup-vms.h | 445 - Engine/lib/curl/lib/setup-win32.h | 116 - Engine/lib/curl/lib/sha256.c | 549 - Engine/lib/curl/lib/share.c | 262 - Engine/lib/curl/lib/share.h | 72 - Engine/lib/curl/lib/sigpipe.h | 81 - Engine/lib/curl/lib/slist.c | 146 - Engine/lib/curl/lib/slist.h | 41 - Engine/lib/curl/lib/smb.c | 1027 - Engine/lib/curl/lib/smb.h | 257 - Engine/lib/curl/lib/smtp.c | 1927 - Engine/lib/curl/lib/smtp.h | 100 - Engine/lib/curl/lib/sockaddr.h | 44 - Engine/lib/curl/lib/socketpair.c | 139 - Engine/lib/curl/lib/socketpair.h | 35 - Engine/lib/curl/lib/socks.c | 1058 - Engine/lib/curl/lib/socks.h | 82 - Engine/lib/curl/lib/socks_gssapi.c | 534 - Engine/lib/curl/lib/socks_sspi.c | 611 - Engine/lib/curl/lib/speedcheck.c | 79 - Engine/lib/curl/lib/speedcheck.h | 35 - Engine/lib/curl/lib/splay.c | 278 - Engine/lib/curl/lib/splay.h | 58 - Engine/lib/curl/lib/strcase.c | 191 - Engine/lib/curl/lib/strcase.h | 56 - Engine/lib/curl/lib/strdup.c | 123 - Engine/lib/curl/lib/strdup.h | 37 - Engine/lib/curl/lib/strerror.c | 1109 - Engine/lib/curl/lib/strerror.h | 39 - Engine/lib/curl/lib/strtok.c | 68 - Engine/lib/curl/lib/strtok.h | 36 - Engine/lib/curl/lib/strtoofft.c | 244 - Engine/lib/curl/lib/strtoofft.h | 54 - Engine/lib/curl/lib/system_win32.c | 241 - Engine/lib/curl/lib/system_win32.h | 48 - Engine/lib/curl/lib/telnet.c | 1591 - Engine/lib/curl/lib/telnet.h | 30 - Engine/lib/curl/lib/tftp.c | 1411 - Engine/lib/curl/lib/tftp.h | 30 - Engine/lib/curl/lib/timediff.c | 86 - Engine/lib/curl/lib/timediff.h | 52 - Engine/lib/curl/lib/timeval.c | 210 - Engine/lib/curl/lib/timeval.h | 54 - Engine/lib/curl/lib/transfer.c | 2016 - Engine/lib/curl/lib/transfer.h | 74 - Engine/lib/curl/lib/url.c | 4297 -- Engine/lib/curl/lib/url.h | 83 - Engine/lib/curl/lib/urlapi-int.h | 34 - Engine/lib/curl/lib/urlapi.c | 1719 - Engine/lib/curl/lib/urldata.h | 1987 - Engine/lib/curl/lib/vauth/cleartext.c | 138 - Engine/lib/curl/lib/vauth/cram.c | 97 - Engine/lib/curl/lib/vauth/digest.c | 994 - Engine/lib/curl/lib/vauth/digest.h | 40 - Engine/lib/curl/lib/vauth/digest_sspi.c | 668 - Engine/lib/curl/lib/vauth/gsasl.c | 126 - Engine/lib/curl/lib/vauth/krb5_gssapi.c | 323 - Engine/lib/curl/lib/vauth/krb5_sspi.c | 474 - Engine/lib/curl/lib/vauth/ntlm.c | 791 - Engine/lib/curl/lib/vauth/ntlm.h | 145 - Engine/lib/curl/lib/vauth/ntlm_sspi.c | 372 - Engine/lib/curl/lib/vauth/oauth2.c | 107 - Engine/lib/curl/lib/vauth/spnego_gssapi.c | 281 - Engine/lib/curl/lib/vauth/spnego_sspi.c | 364 - Engine/lib/curl/lib/vauth/vauth.c | 146 - Engine/lib/curl/lib/vauth/vauth.h | 232 - Engine/lib/curl/lib/version.c | 591 - Engine/lib/curl/lib/version_win32.c | 319 - Engine/lib/curl/lib/version_win32.h | 56 - Engine/lib/curl/lib/vquic/msh3.c | 527 - Engine/lib/curl/lib/vquic/msh3.h | 40 - Engine/lib/curl/lib/vquic/ngtcp2.c | 2246 - Engine/lib/curl/lib/vquic/ngtcp2.h | 94 - Engine/lib/curl/lib/vquic/quiche.c | 891 - Engine/lib/curl/lib/vquic/quiche.h | 58 - Engine/lib/curl/lib/vquic/vquic.c | 87 - Engine/lib/curl/lib/vquic/vquic.h | 36 - Engine/lib/curl/lib/vssh/libssh.c | 2975 - Engine/lib/curl/lib/vssh/libssh2.c | 3799 -- Engine/lib/curl/lib/vssh/ssh.h | 272 - Engine/lib/curl/lib/vssh/wolfssh.c | 1173 - Engine/lib/curl/lib/vtls/bearssl.c | 1214 - Engine/lib/curl/lib/vtls/bearssl.h | 34 - Engine/lib/curl/lib/vtls/gskit.c | 1329 - Engine/lib/curl/lib/vtls/gskit.h | 40 - Engine/lib/curl/lib/vtls/gtls.c | 1704 - Engine/lib/curl/lib/vtls/gtls.h | 40 - Engine/lib/curl/lib/vtls/hostcheck.c | 142 - Engine/lib/curl/lib/vtls/hostcheck.h | 33 - Engine/lib/curl/lib/vtls/keylog.c | 158 - Engine/lib/curl/lib/vtls/keylog.h | 58 - Engine/lib/curl/lib/vtls/mbedtls.c | 1273 - Engine/lib/curl/lib/vtls/mbedtls.h | 34 - Engine/lib/curl/lib/vtls/mbedtls_threadlock.c | 135 - Engine/lib/curl/lib/vtls/mbedtls_threadlock.h | 50 - Engine/lib/curl/lib/vtls/nss.c | 2543 - Engine/lib/curl/lib/vtls/nssg.h | 41 - Engine/lib/curl/lib/vtls/openssl.c | 4685 -- Engine/lib/curl/lib/vtls/openssl.h | 57 - Engine/lib/curl/lib/vtls/rustls.c | 636 - Engine/lib/curl/lib/vtls/rustls.h | 35 - Engine/lib/curl/lib/vtls/schannel.c | 2770 - Engine/lib/curl/lib/vtls/schannel.h | 190 - Engine/lib/curl/lib/vtls/schannel_verify.c | 744 - Engine/lib/curl/lib/vtls/sectransp.c | 3542 -- Engine/lib/curl/lib/vtls/sectransp.h | 34 - Engine/lib/curl/lib/vtls/vtls.c | 1500 - Engine/lib/curl/lib/vtls/vtls.h | 344 - Engine/lib/curl/lib/vtls/wolfssl.c | 1237 - Engine/lib/curl/lib/vtls/wolfssl.h | 33 - Engine/lib/curl/lib/vtls/x509asn1.c | 1425 - Engine/lib/curl/lib/vtls/x509asn1.h | 80 - Engine/lib/curl/lib/warnless.c | 429 - Engine/lib/curl/lib/warnless.h | 101 - Engine/lib/curl/lib/wildcard.c | 75 - Engine/lib/curl/lib/wildcard.h | 69 - Engine/lib/curl/libcurl.pc.in | 41 - Engine/lib/curl/ltmain.sh | 11448 ---- Engine/lib/curl/m4/curl-amissl.m4 | 74 - Engine/lib/curl/m4/curl-bearssl.m4 | 110 - Engine/lib/curl/m4/curl-compilers.m4 | 1569 - Engine/lib/curl/m4/curl-confopts.m4 | 667 - Engine/lib/curl/m4/curl-functions.m4 | 6000 -- Engine/lib/curl/m4/curl-gnutls.m4 | 167 - Engine/lib/curl/m4/curl-mbedtls.m4 | 111 - Engine/lib/curl/m4/curl-nss.m4 | 144 - Engine/lib/curl/m4/curl-openssl.m4 | 420 - Engine/lib/curl/m4/curl-override.m4 | 98 - Engine/lib/curl/m4/curl-reentrant.m4 | 506 - Engine/lib/curl/m4/curl-rustls.m4 | 103 - Engine/lib/curl/m4/curl-schannel.m4 | 48 - Engine/lib/curl/m4/curl-sectransp.m4 | 45 - Engine/lib/curl/m4/curl-sysconfig.m4 | 54 - Engine/lib/curl/m4/curl-wolfssl.m4 | 165 - Engine/lib/curl/m4/libtool.m4 | 8427 --- Engine/lib/curl/m4/ltoptions.m4 | 437 - Engine/lib/curl/m4/ltsugar.m4 | 124 - Engine/lib/curl/m4/ltversion.m4 | 24 - Engine/lib/curl/m4/lt~obsolete.m4 | 99 - Engine/lib/curl/m4/xc-am-iface.m4 | 254 - Engine/lib/curl/m4/xc-cc-check.m4 | 97 - Engine/lib/curl/m4/xc-lt-iface.m4 | 466 - Engine/lib/curl/m4/xc-translit.m4 | 165 - Engine/lib/curl/m4/xc-val-flgs.m4 | 244 - Engine/lib/curl/m4/zz40-xc-ovr.m4 | 667 - Engine/lib/curl/m4/zz50-xc-ovr.m4 | 61 - Engine/lib/curl/m4/zz60-xc-ovr.m4 | 65 - Engine/lib/curl/maketgz | 221 - Engine/lib/curl/missing | 215 - Engine/lib/curl/packages/Android/Android.mk | 133 - Engine/lib/curl/packages/DOS/README | 17 - Engine/lib/curl/packages/DOS/common.dj | 223 - Engine/lib/curl/packages/Makefile.am | 50 - Engine/lib/curl/packages/Makefile.in | 786 - Engine/lib/curl/packages/OS400/README.OS400 | 352 - Engine/lib/curl/packages/OS400/ccsidcurl.c | 1462 - Engine/lib/curl/packages/OS400/ccsidcurl.h | 100 - Engine/lib/curl/packages/OS400/chkstrings.c | 64 - Engine/lib/curl/packages/OS400/curl.inc.in | 3129 - Engine/lib/curl/packages/OS400/initscript.sh | 288 - .../lib/curl/packages/OS400/make-include.sh | 106 - Engine/lib/curl/packages/OS400/make-lib.sh | 247 - Engine/lib/curl/packages/OS400/make-src.sh | 27 - Engine/lib/curl/packages/OS400/make-tests.sh | 137 - Engine/lib/curl/packages/OS400/makefile.sh | 79 - Engine/lib/curl/packages/OS400/os400sys.c | 1410 - Engine/lib/curl/packages/OS400/os400sys.h | 57 - Engine/lib/curl/packages/README | 27 - Engine/lib/curl/packages/vms/Makefile.am | 59 - Engine/lib/curl/packages/vms/Makefile.in | 619 - .../curl/packages/vms/backup_gnv_curl_src.com | 134 - .../packages/vms/build_curl-config_script.com | 155 - .../lib/curl/packages/vms/build_gnv_curl.com | 39 - .../packages/vms/build_gnv_curl_pcsi_desc.com | 493 - .../packages/vms/build_gnv_curl_pcsi_text.com | 199 - .../vms/build_gnv_curl_release_notes.com | 104 - .../curl/packages/vms/build_libcurl_pc.com | 206 - Engine/lib/curl/packages/vms/build_vms.com | 1038 - .../lib/curl/packages/vms/clean_gnv_curl.com | 245 - .../curl/packages/vms/compare_curl_source.com | 366 - Engine/lib/curl/packages/vms/config_h.com | 2071 - Engine/lib/curl/packages/vms/curl_crtl_init.c | 333 - .../packages/vms/curl_gnv_build_steps.txt | 290 - .../packages/vms/curl_release_note_start.txt | 77 - Engine/lib/curl/packages/vms/curl_startup.com | 102 - Engine/lib/curl/packages/vms/curlmsg.h | 143 - Engine/lib/curl/packages/vms/curlmsg.msg | 134 - Engine/lib/curl/packages/vms/curlmsg.sdl | 116 - Engine/lib/curl/packages/vms/curlmsg_vms.h | 143 - .../vms/generate_config_vms_h_curl.com | 464 - .../packages/vms/generate_vax_transfer.com | 276 - .../curl/packages/vms/gnv_conftest.c_first | 62 - .../curl/packages/vms/gnv_curl_configure.sh | 48 - .../curl/packages/vms/gnv_libcurl_symbols.opt | 183 - .../lib/curl/packages/vms/gnv_link_curl.com | 854 - .../curl/packages/vms/macro32_exactcase.patch | 11 - .../packages/vms/make_gnv_curl_install.sh | 47 - .../packages/vms/make_pcsi_curl_kit_name.com | 192 - .../packages/vms/pcsi_gnv_curl_file_list.txt | 128 - .../packages/vms/pcsi_product_gnv_curl.com | 201 - Engine/lib/curl/packages/vms/readme | 228 - .../packages/vms/report_openssl_version.c | 102 - .../packages/vms/setup_gnv_curl_build.com | 290 - .../curl/packages/vms/stage_curl_install.com | 174 - Engine/lib/curl/packages/vms/vms_eco_level.h | 32 - Engine/lib/curl/plan9/README | 55 - Engine/lib/curl/plan9/include/mkfile | 36 - Engine/lib/curl/plan9/lib/mkfile | 41 - Engine/lib/curl/plan9/lib/mkfile.inc | 27 - Engine/lib/curl/plan9/mkfile | 38 - Engine/lib/curl/plan9/mkfile.proto | 32 - Engine/lib/curl/plan9/src/mkfile | 47 - Engine/lib/curl/plan9/src/mkfile.inc | 27 - Engine/lib/curl/projects/README.md | 160 - Engine/lib/curl/projects/build-openssl.bat | 729 - Engine/lib/curl/projects/build-wolfssl.bat | 429 - Engine/lib/curl/projects/checksrc.bat | 225 - Engine/lib/curl/projects/generate.bat | 404 - Engine/lib/curl/projects/wolfssl_options.h | 308 - .../lib/curl/projects/wolfssl_override.props | 40 - Engine/lib/curl/scripts/Makefile.am | 63 - Engine/lib/curl/scripts/Makefile.in | 609 - Engine/lib/curl/scripts/checksrc.pl | 878 - Engine/lib/curl/scripts/completion.pl | 166 - Engine/lib/curl/scripts/coverage.sh | 39 - Engine/lib/curl/scripts/firefox-db2pem.sh | 55 - Engine/lib/curl/scripts/mk-ca-bundle.pl | 713 - Engine/lib/curl/scripts/updatemanpages.pl | 357 - Engine/lib/curl/src/CMakeLists.txt | 116 - Engine/lib/curl/src/Makefile.am | 155 - Engine/lib/curl/src/Makefile.in | 1996 - Engine/lib/curl/src/Makefile.inc | 144 - Engine/lib/curl/src/Makefile.m32 | 459 - Engine/lib/curl/src/curl.rc | 113 - Engine/lib/curl/src/makefile.amiga | 52 - Engine/lib/curl/src/makefile.dj | 101 - Engine/lib/curl/src/mkhelp.pl | 237 - Engine/lib/curl/src/slist_wc.c | 74 - Engine/lib/curl/src/slist_wc.h | 57 - Engine/lib/curl/src/tool_binmode.c | 53 - Engine/lib/curl/src/tool_binmode.h | 38 - Engine/lib/curl/src/tool_bname.c | 51 - Engine/lib/curl/src/tool_bname.h | 36 - Engine/lib/curl/src/tool_cb_dbg.c | 248 - Engine/lib/curl/src/tool_cb_dbg.h | 36 - Engine/lib/curl/src/tool_cb_hdr.c | 415 - Engine/lib/curl/src/tool_cb_hdr.h | 58 - Engine/lib/curl/src/tool_cb_prg.c | 280 - Engine/lib/curl/src/tool_cb_prg.h | 54 - Engine/lib/curl/src/tool_cb_rea.c | 81 - Engine/lib/curl/src/tool_cb_rea.h | 42 - Engine/lib/curl/src/tool_cb_see.c | 135 - Engine/lib/curl/src/tool_cb_see.h | 46 - Engine/lib/curl/src/tool_cb_wrt.c | 296 - Engine/lib/curl/src/tool_cb_wrt.h | 38 - Engine/lib/curl/src/tool_cfgable.c | 188 - Engine/lib/curl/src/tool_cfgable.h | 338 - Engine/lib/curl/src/tool_dirhie.c | 172 - Engine/lib/curl/src/tool_dirhie.h | 30 - Engine/lib/curl/src/tool_doswin.c | 787 - Engine/lib/curl/src/tool_doswin.h | 72 - Engine/lib/curl/src/tool_easysrc.c | 238 - Engine/lib/curl/src/tool_easysrc.h | 51 - Engine/lib/curl/src/tool_filetime.c | 155 - Engine/lib/curl/src/tool_filetime.h | 41 - Engine/lib/curl/src/tool_findfile.c | 157 - Engine/lib/curl/src/tool_findfile.h | 36 - Engine/lib/curl/src/tool_formparse.c | 913 - Engine/lib/curl/src/tool_formparse.h | 73 - Engine/lib/curl/src/tool_getparam.c | 2525 - Engine/lib/curl/src/tool_getparam.h | 71 - Engine/lib/curl/src/tool_getpass.c | 254 - Engine/lib/curl/src/tool_getpass.h | 38 - Engine/lib/curl/src/tool_help.c | 268 - Engine/lib/curl/src/tool_help.h | 74 - Engine/lib/curl/src/tool_helpers.c | 132 - Engine/lib/curl/src/tool_helpers.h | 36 - Engine/lib/curl/src/tool_hugehelp.c | 11376 ---- Engine/lib/curl/src/tool_hugehelp.h | 30 - Engine/lib/curl/src/tool_libinfo.c | 119 - Engine/lib/curl/src/tool_libinfo.h | 36 - Engine/lib/curl/src/tool_listhelp.c | 781 - Engine/lib/curl/src/tool_main.c | 299 - Engine/lib/curl/src/tool_main.h | 48 - Engine/lib/curl/src/tool_msgs.c | 141 - Engine/lib/curl/src/tool_msgs.h | 33 - Engine/lib/curl/src/tool_operate.c | 2732 - Engine/lib/curl/src/tool_operate.h | 81 - Engine/lib/curl/src/tool_operhlp.c | 197 - Engine/lib/curl/src/tool_operhlp.h | 40 - Engine/lib/curl/src/tool_panykey.c | 47 - Engine/lib/curl/src/tool_panykey.h | 34 - Engine/lib/curl/src/tool_paramhlp.c | 658 - Engine/lib/curl/src/tool_paramhlp.h | 60 - Engine/lib/curl/src/tool_parsecfg.c | 351 - Engine/lib/curl/src/tool_parsecfg.h | 30 - Engine/lib/curl/src/tool_progress.c | 336 - Engine/lib/curl/src/tool_progress.h | 41 - Engine/lib/curl/src/tool_sdecls.h | 144 - Engine/lib/curl/src/tool_setopt.c | 749 - Engine/lib/curl/src/tool_setopt.h | 159 - Engine/lib/curl/src/tool_setup.h | 67 - Engine/lib/curl/src/tool_sleep.c | 61 - Engine/lib/curl/src/tool_sleep.h | 30 - Engine/lib/curl/src/tool_strdup.c | 44 - Engine/lib/curl/src/tool_strdup.h | 32 - Engine/lib/curl/src/tool_urlglob.c | 710 - Engine/lib/curl/src/tool_urlglob.h | 78 - Engine/lib/curl/src/tool_util.c | 137 - Engine/lib/curl/src/tool_util.h | 38 - Engine/lib/curl/src/tool_version.h | 36 - Engine/lib/curl/src/tool_vms.c | 220 - Engine/lib/curl/src/tool_vms.h | 48 - Engine/lib/curl/src/tool_writeout.c | 439 - Engine/lib/curl/src/tool_writeout.h | 88 - Engine/lib/curl/src/tool_writeout_json.c | 145 - Engine/lib/curl/src/tool_writeout_json.h | 34 - Engine/lib/curl/src/tool_xattr.c | 143 - Engine/lib/curl/src/tool_xattr.h | 30 - Engine/lib/curl/test-driver | 153 - Engine/lib/curl/tests/CMakeLists.txt | 53 - Engine/lib/curl/tests/FILEFORMAT.md | 617 - Engine/lib/curl/tests/Makefile.am | 127 - Engine/lib/curl/tests/Makefile.in | 852 - Engine/lib/curl/tests/README.md | 236 - Engine/lib/curl/tests/appveyor.pm | 117 - Engine/lib/curl/tests/azure.pm | 151 - Engine/lib/curl/tests/badsymbols.pl | 156 - .../curl/tests/certs/EdelCurlRoot-ca.cacert | 84 - .../lib/curl/tests/certs/EdelCurlRoot-ca.cnf | 11 - .../lib/curl/tests/certs/EdelCurlRoot-ca.crt | 84 - .../lib/curl/tests/certs/EdelCurlRoot-ca.csr | 17 - .../lib/curl/tests/certs/EdelCurlRoot-ca.der | Bin 918 -> 0 bytes .../lib/curl/tests/certs/EdelCurlRoot-ca.key | 27 - .../lib/curl/tests/certs/EdelCurlRoot-ca.prm | 17 - Engine/lib/curl/tests/certs/Makefile.am | 118 - Engine/lib/curl/tests/certs/Makefile.in | 853 - .../certs/Server-localhost-firstSAN-sv.crl | 15 - .../certs/Server-localhost-firstSAN-sv.crt | 92 - .../certs/Server-localhost-firstSAN-sv.csr | 16 - .../certs/Server-localhost-firstSAN-sv.der | Bin 994 -> 0 bytes .../certs/Server-localhost-firstSAN-sv.dhp | 0 .../certs/Server-localhost-firstSAN-sv.key | 27 - .../certs/Server-localhost-firstSAN-sv.pem | 144 - .../Server-localhost-firstSAN-sv.pub.der | Bin 294 -> 0 bytes .../Server-localhost-firstSAN-sv.pub.pem | 9 - .../certs/Server-localhost-lastSAN-sv.crl | 12 - .../certs/Server-localhost-lastSAN-sv.crt | 93 - .../certs/Server-localhost-lastSAN-sv.csr | 16 - .../certs/Server-localhost-lastSAN-sv.der | Bin 994 -> 0 bytes .../certs/Server-localhost-lastSAN-sv.dhp | 0 .../certs/Server-localhost-lastSAN-sv.key | 27 - .../certs/Server-localhost-lastSAN-sv.pem | 145 - .../certs/Server-localhost-lastSAN-sv.pub.der | Bin 294 -> 0 bytes .../certs/Server-localhost-lastSAN-sv.pub.pem | 9 - .../curl/tests/certs/Server-localhost-sv.crl | 12 - .../curl/tests/certs/Server-localhost-sv.crt | 92 - .../curl/tests/certs/Server-localhost-sv.csr | 16 - .../curl/tests/certs/Server-localhost-sv.der | Bin 967 -> 0 bytes .../curl/tests/certs/Server-localhost-sv.dhp | 0 .../curl/tests/certs/Server-localhost-sv.key | 27 - .../curl/tests/certs/Server-localhost-sv.pem | 144 - .../curl/tests/certs/Server-localhost-sv.prm | 25 - .../tests/certs/Server-localhost-sv.pub.der | Bin 294 -> 0 bytes .../tests/certs/Server-localhost-sv.pub.pem | 9 - .../tests/certs/Server-localhost.nn-sv.crl | 13 - .../tests/certs/Server-localhost.nn-sv.crt | 92 - .../tests/certs/Server-localhost.nn-sv.csr | 16 - .../tests/certs/Server-localhost.nn-sv.der | Bin 973 -> 0 bytes .../tests/certs/Server-localhost.nn-sv.dhp | 0 .../tests/certs/Server-localhost.nn-sv.key | 27 - .../tests/certs/Server-localhost.nn-sv.pem | 144 - .../tests/certs/Server-localhost.nn-sv.prm | 25 - .../certs/Server-localhost.nn-sv.pub.der | Bin 294 -> 0 bytes .../certs/Server-localhost.nn-sv.pub.pem | 9 - .../tests/certs/Server-localhost0h-sv.crl | 14 - .../tests/certs/Server-localhost0h-sv.crt | 92 - .../tests/certs/Server-localhost0h-sv.csr | 16 - .../tests/certs/Server-localhost0h-sv.der | Bin 969 -> 0 bytes .../tests/certs/Server-localhost0h-sv.dhp | 0 .../tests/certs/Server-localhost0h-sv.key | 27 - .../tests/certs/Server-localhost0h-sv.pem | 145 - .../tests/certs/Server-localhost0h-sv.prm | 26 - .../tests/certs/Server-localhost0h-sv.pub.der | Bin 294 -> 0 bytes .../tests/certs/Server-localhost0h-sv.pub.pem | 9 - .../lib/curl/tests/certs/scripts/Makefile.am | 30 - .../lib/curl/tests/certs/scripts/Makefile.in | 588 - .../lib/curl/tests/certs/scripts/genroot.sh | 68 - .../lib/curl/tests/certs/scripts/genserv.sh | 118 - Engine/lib/curl/tests/certs/srp-verifier-conf | 3 - Engine/lib/curl/tests/certs/srp-verifier-db | 2 - Engine/lib/curl/tests/data/CMakeLists.txt | 26 - Engine/lib/curl/tests/data/DISABLED | 106 - Engine/lib/curl/tests/data/Makefile.am | 31 - Engine/lib/curl/tests/data/Makefile.in | 838 - Engine/lib/curl/tests/data/Makefile.inc | 248 - Engine/lib/curl/tests/data/test1 | 53 - Engine/lib/curl/tests/data/test10 | 65 - Engine/lib/curl/tests/data/test100 | 57 - Engine/lib/curl/tests/data/test1000 | 42 - Engine/lib/curl/tests/data/test1001 | 106 - Engine/lib/curl/tests/data/test1002 | 124 - Engine/lib/curl/tests/data/test1003 | 48 - Engine/lib/curl/tests/data/test1004 | 60 - Engine/lib/curl/tests/data/test1005 | 48 - Engine/lib/curl/tests/data/test1006 | 49 - Engine/lib/curl/tests/data/test1007 | 42 - Engine/lib/curl/tests/data/test1008 | 125 - Engine/lib/curl/tests/data/test1009 | 47 - Engine/lib/curl/tests/data/test101 | 58 - Engine/lib/curl/tests/data/test1010 | 58 - Engine/lib/curl/tests/data/test1011 | 74 - Engine/lib/curl/tests/data/test1012 | 77 - Engine/lib/curl/tests/data/test1013 | 37 - Engine/lib/curl/tests/data/test1014 | 37 - Engine/lib/curl/tests/data/test1015 | 52 - Engine/lib/curl/tests/data/test1016 | 39 - Engine/lib/curl/tests/data/test1017 | 40 - Engine/lib/curl/tests/data/test1018 | 39 - Engine/lib/curl/tests/data/test1019 | 42 - Engine/lib/curl/tests/data/test102 | 52 - Engine/lib/curl/tests/data/test1020 | 41 - Engine/lib/curl/tests/data/test1021 | 134 - Engine/lib/curl/tests/data/test1022 | 37 - Engine/lib/curl/tests/data/test1023 | 37 - Engine/lib/curl/tests/data/test1024 | 103 - Engine/lib/curl/tests/data/test1025 | 105 - Engine/lib/curl/tests/data/test1026 | 42 - Engine/lib/curl/tests/data/test1027 | 39 - Engine/lib/curl/tests/data/test1028 | 88 - Engine/lib/curl/tests/data/test1029 | 56 - Engine/lib/curl/tests/data/test103 | 54 - Engine/lib/curl/tests/data/test1030 | 108 - Engine/lib/curl/tests/data/test1031 | 75 - Engine/lib/curl/tests/data/test1032 | 54 - Engine/lib/curl/tests/data/test1033 | 58 - Engine/lib/curl/tests/data/test1034 | 57 - Engine/lib/curl/tests/data/test1035 | 50 - Engine/lib/curl/tests/data/test1036 | 61 - Engine/lib/curl/tests/data/test1037 | 54 - Engine/lib/curl/tests/data/test1038 | 53 - Engine/lib/curl/tests/data/test1039 | 53 - Engine/lib/curl/tests/data/test104 | 43 - Engine/lib/curl/tests/data/test1040 | 77 - Engine/lib/curl/tests/data/test1041 | 76 - Engine/lib/curl/tests/data/test1042 | 92 - Engine/lib/curl/tests/data/test1043 | 82 - Engine/lib/curl/tests/data/test1044 | 58 - Engine/lib/curl/tests/data/test1045 | 50 - Engine/lib/curl/tests/data/test1046 | 58 - Engine/lib/curl/tests/data/test1047 | 58 - Engine/lib/curl/tests/data/test1048 | 68 - Engine/lib/curl/tests/data/test1049 | 47 - Engine/lib/curl/tests/data/test105 | 51 - Engine/lib/curl/tests/data/test1050 | 66 - Engine/lib/curl/tests/data/test1051 | 117 - Engine/lib/curl/tests/data/test1052 | 110 - Engine/lib/curl/tests/data/test1053 | 127 - Engine/lib/curl/tests/data/test1054 | 79 - Engine/lib/curl/tests/data/test1055 | 94 - Engine/lib/curl/tests/data/test1056 | 76 - Engine/lib/curl/tests/data/test1057 | 52 - Engine/lib/curl/tests/data/test1058 | 51 - Engine/lib/curl/tests/data/test1059 | 57 - Engine/lib/curl/tests/data/test106 | 51 - Engine/lib/curl/tests/data/test1060 | 903 - Engine/lib/curl/tests/data/test1061 | 908 - Engine/lib/curl/tests/data/test1062 | 49 - Engine/lib/curl/tests/data/test1063 | 45 - Engine/lib/curl/tests/data/test1064 | 78 - Engine/lib/curl/tests/data/test1065 | 77 - Engine/lib/curl/tests/data/test1066 | 81 - Engine/lib/curl/tests/data/test1067 | 80 - Engine/lib/curl/tests/data/test1068 | 56 - Engine/lib/curl/tests/data/test1069 | 36 - Engine/lib/curl/tests/data/test107 | 51 - Engine/lib/curl/tests/data/test1070 | 63 - Engine/lib/curl/tests/data/test1071 | 113 - Engine/lib/curl/tests/data/test1072 | 80 - Engine/lib/curl/tests/data/test1073 | 74 - Engine/lib/curl/tests/data/test1074 | 75 - Engine/lib/curl/tests/data/test1075 | 93 - Engine/lib/curl/tests/data/test1076 | 77 - Engine/lib/curl/tests/data/test1077 | 75 - Engine/lib/curl/tests/data/test1078 | 99 - Engine/lib/curl/tests/data/test1079 | 75 - Engine/lib/curl/tests/data/test108 | 56 - Engine/lib/curl/tests/data/test1080 | 68 - Engine/lib/curl/tests/data/test1081 | 76 - Engine/lib/curl/tests/data/test1082 | 53 - Engine/lib/curl/tests/data/test1083 | 57 - Engine/lib/curl/tests/data/test1084 | 41 - Engine/lib/curl/tests/data/test1085 | 48 - Engine/lib/curl/tests/data/test1086 | 110 - Engine/lib/curl/tests/data/test1087 | 113 - Engine/lib/curl/tests/data/test1088 | 115 - Engine/lib/curl/tests/data/test1089 | 90 - Engine/lib/curl/tests/data/test109 | 48 - Engine/lib/curl/tests/data/test1090 | 97 - Engine/lib/curl/tests/data/test1091 | 47 - Engine/lib/curl/tests/data/test1092 | 55 - Engine/lib/curl/tests/data/test1093 | 47 - Engine/lib/curl/tests/data/test1094 | 53 - Engine/lib/curl/tests/data/test1095 | 82 - Engine/lib/curl/tests/data/test1096 | 51 - Engine/lib/curl/tests/data/test1097 | 80 - Engine/lib/curl/tests/data/test1098 | 73 - Engine/lib/curl/tests/data/test1099 | 51 - Engine/lib/curl/tests/data/test11 | 75 - Engine/lib/curl/tests/data/test110 | 52 - Engine/lib/curl/tests/data/test1100 | 114 - Engine/lib/curl/tests/data/test1101 | 52 - Engine/lib/curl/tests/data/test1102 | 51 - Engine/lib/curl/tests/data/test1103 | 48 - Engine/lib/curl/tests/data/test1104 | 87 - Engine/lib/curl/tests/data/test1105 | 63 - Engine/lib/curl/tests/data/test1106 | 56 - Engine/lib/curl/tests/data/test1107 | 53 - Engine/lib/curl/tests/data/test1108 | 45 - Engine/lib/curl/tests/data/test1109 | 44 - Engine/lib/curl/tests/data/test111 | 45 - Engine/lib/curl/tests/data/test1110 | 45 - Engine/lib/curl/tests/data/test1111 | 45 - Engine/lib/curl/tests/data/test1112 | 114 - Engine/lib/curl/tests/data/test1113 | 99 - Engine/lib/curl/tests/data/test1114 | 136 - Engine/lib/curl/tests/data/test1115 | 50 - Engine/lib/curl/tests/data/test1116 | 86 - Engine/lib/curl/tests/data/test1117 | 86 - Engine/lib/curl/tests/data/test1118 | 53 - Engine/lib/curl/tests/data/test1119 | 30 - Engine/lib/curl/tests/data/test112 | 49 - Engine/lib/curl/tests/data/test1120 | 44 - Engine/lib/curl/tests/data/test1121 | 45 - Engine/lib/curl/tests/data/test1122 | 69 - Engine/lib/curl/tests/data/test1123 | 198 - Engine/lib/curl/tests/data/test1124 | 67 - Engine/lib/curl/tests/data/test1125 | 67 - Engine/lib/curl/tests/data/test1126 | 50 - Engine/lib/curl/tests/data/test1127 | 59 - Engine/lib/curl/tests/data/test1128 | 84 - Engine/lib/curl/tests/data/test1129 | 96 - Engine/lib/curl/tests/data/test113 | 37 - Engine/lib/curl/tests/data/test1130 | 96 - Engine/lib/curl/tests/data/test1131 | 94 - Engine/lib/curl/tests/data/test1132 | 25 - Engine/lib/curl/tests/data/test1133 | 102 - Engine/lib/curl/tests/data/test1134 | 64 - Engine/lib/curl/tests/data/test1135 | 122 - Engine/lib/curl/tests/data/test1136 | 65 - Engine/lib/curl/tests/data/test1137 | 52 - Engine/lib/curl/tests/data/test1138 | 72 - Engine/lib/curl/tests/data/test1139 | 33 - Engine/lib/curl/tests/data/test114 | 38 - Engine/lib/curl/tests/data/test1140 | 32 - Engine/lib/curl/tests/data/test1141 | 72 - Engine/lib/curl/tests/data/test1142 | 65 - Engine/lib/curl/tests/data/test1143 | 48 - Engine/lib/curl/tests/data/test1144 | 72 - Engine/lib/curl/tests/data/test1145 | 40 - Engine/lib/curl/tests/data/test1146 | 45 - Engine/lib/curl/tests/data/test1147 | 68 - Engine/lib/curl/tests/data/test1148 | 67 - Engine/lib/curl/tests/data/test1149 | 64 - Engine/lib/curl/tests/data/test115 | 44 - Engine/lib/curl/tests/data/test1150 | 57 - Engine/lib/curl/tests/data/test1151 | 65 - Engine/lib/curl/tests/data/test1152 | 61 - Engine/lib/curl/tests/data/test1153 | 61 - Engine/lib/curl/tests/data/test1154 | 55 - Engine/lib/curl/tests/data/test1155 | 52 - Engine/lib/curl/tests/data/test1156 | 71 - Engine/lib/curl/tests/data/test1157 | 56 - Engine/lib/curl/tests/data/test1158 | 98 - Engine/lib/curl/tests/data/test1159 | 56 - Engine/lib/curl/tests/data/test116 | 55 - Engine/lib/curl/tests/data/test1160 | 52 - Engine/lib/curl/tests/data/test1161 | 52 - Engine/lib/curl/tests/data/test1162 | 56 - Engine/lib/curl/tests/data/test1163 | 52 - Engine/lib/curl/tests/data/test1164 | 54 - Engine/lib/curl/tests/data/test1165 | 25 - Engine/lib/curl/tests/data/test1166 | 52 - Engine/lib/curl/tests/data/test1167 | 24 - Engine/lib/curl/tests/data/test1168 | 77 - Engine/lib/curl/tests/data/test1169 | 35 - Engine/lib/curl/tests/data/test117 | 44 - Engine/lib/curl/tests/data/test1170 | 67 - Engine/lib/curl/tests/data/test1171 | 67 - Engine/lib/curl/tests/data/test1172 | 48 - Engine/lib/curl/tests/data/test1173 | 32 - Engine/lib/curl/tests/data/test1174 | 48 - Engine/lib/curl/tests/data/test1175 | 25 - Engine/lib/curl/tests/data/test1176 | 66 - Engine/lib/curl/tests/data/test1177 | 25 - Engine/lib/curl/tests/data/test1178 | 53 - Engine/lib/curl/tests/data/test1179 | 43 - Engine/lib/curl/tests/data/test118 | 49 - Engine/lib/curl/tests/data/test1180 | 48 - Engine/lib/curl/tests/data/test1181 | 48 - Engine/lib/curl/tests/data/test1182 | 36 - Engine/lib/curl/tests/data/test1183 | 48 - Engine/lib/curl/tests/data/test1184 | 108 - Engine/lib/curl/tests/data/test1185 | 184 - Engine/lib/curl/tests/data/test1186 | 98 - Engine/lib/curl/tests/data/test1187 | 63 - Engine/lib/curl/tests/data/test1188 | 56 - Engine/lib/curl/tests/data/test1189 | 108 - Engine/lib/curl/tests/data/test119 | 51 - Engine/lib/curl/tests/data/test1190 | 56 - Engine/lib/curl/tests/data/test1191 | 50 - Engine/lib/curl/tests/data/test1192 | 56 - Engine/lib/curl/tests/data/test1193 | 72 - Engine/lib/curl/tests/data/test1194 | 59 - Engine/lib/curl/tests/data/test1195 | 63 - Engine/lib/curl/tests/data/test1196 | 62 - Engine/lib/curl/tests/data/test1197 | 87 - Engine/lib/curl/tests/data/test1198 | 54 - Engine/lib/curl/tests/data/test1199 | 55 - Engine/lib/curl/tests/data/test12 | 54 - Engine/lib/curl/tests/data/test120 | 53 - Engine/lib/curl/tests/data/test1200 | 39 - Engine/lib/curl/tests/data/test1201 | 39 - Engine/lib/curl/tests/data/test1202 | 40 - Engine/lib/curl/tests/data/test1203 | 43 - Engine/lib/curl/tests/data/test1204 | 78 - Engine/lib/curl/tests/data/test1205 | 48 - Engine/lib/curl/tests/data/test1206 | 53 - Engine/lib/curl/tests/data/test1207 | 53 - Engine/lib/curl/tests/data/test1208 | 58 - Engine/lib/curl/tests/data/test1209 | 58 - Engine/lib/curl/tests/data/test121 | 51 - Engine/lib/curl/tests/data/test1210 | 61 - Engine/lib/curl/tests/data/test1211 | 53 - Engine/lib/curl/tests/data/test1212 | 52 - Engine/lib/curl/tests/data/test1213 | 54 - Engine/lib/curl/tests/data/test1214 | 54 - Engine/lib/curl/tests/data/test1215 | 96 - Engine/lib/curl/tests/data/test1216 | 65 - Engine/lib/curl/tests/data/test1217 | 57 - Engine/lib/curl/tests/data/test1218 | 64 - Engine/lib/curl/tests/data/test1219 | 49 - Engine/lib/curl/tests/data/test122 | 45 - Engine/lib/curl/tests/data/test1220 | 37 - Engine/lib/curl/tests/data/test1223 | 58 - Engine/lib/curl/tests/data/test1224 | 49 - Engine/lib/curl/tests/data/test1225 | 56 - Engine/lib/curl/tests/data/test1226 | 49 - Engine/lib/curl/tests/data/test1227 | 48 - Engine/lib/curl/tests/data/test1228 | 57 - Engine/lib/curl/tests/data/test1229 | 82 - Engine/lib/curl/tests/data/test123 | 40 - Engine/lib/curl/tests/data/test1230 | 78 - Engine/lib/curl/tests/data/test1231 | 60 - Engine/lib/curl/tests/data/test1232 | 67 - Engine/lib/curl/tests/data/test1233 | 47 - Engine/lib/curl/tests/data/test1234 | 33 - Engine/lib/curl/tests/data/test1235 | 88 - Engine/lib/curl/tests/data/test1236 | 33 - Engine/lib/curl/tests/data/test1237 | 45 - Engine/lib/curl/tests/data/test1238 | 60 - Engine/lib/curl/tests/data/test1239 | 66 - Engine/lib/curl/tests/data/test124 | 47 - Engine/lib/curl/tests/data/test1240 | 47 - Engine/lib/curl/tests/data/test1241 | 66 - Engine/lib/curl/tests/data/test1242 | 43 - Engine/lib/curl/tests/data/test1243 | 44 - Engine/lib/curl/tests/data/test1244 | 62 - Engine/lib/curl/tests/data/test1245 | 57 - Engine/lib/curl/tests/data/test1246 | 66 - Engine/lib/curl/tests/data/test1247 | 38 - Engine/lib/curl/tests/data/test1248 | 50 - Engine/lib/curl/tests/data/test1249 | 53 - Engine/lib/curl/tests/data/test125 | 41 - Engine/lib/curl/tests/data/test1250 | 51 - Engine/lib/curl/tests/data/test1251 | 52 - Engine/lib/curl/tests/data/test1252 | 53 - Engine/lib/curl/tests/data/test1253 | 54 - Engine/lib/curl/tests/data/test1254 | 54 - Engine/lib/curl/tests/data/test1255 | 51 - Engine/lib/curl/tests/data/test1256 | 55 - Engine/lib/curl/tests/data/test1257 | 55 - Engine/lib/curl/tests/data/test1258 | 53 - Engine/lib/curl/tests/data/test1259 | 45 - Engine/lib/curl/tests/data/test126 | 48 - Engine/lib/curl/tests/data/test1260 | 36 - Engine/lib/curl/tests/data/test1261 | 59 - Engine/lib/curl/tests/data/test1262 | 40 - Engine/lib/curl/tests/data/test1263 | 37 - Engine/lib/curl/tests/data/test1264 | 36 - Engine/lib/curl/tests/data/test1265 | 51 - Engine/lib/curl/tests/data/test1266 | 48 - Engine/lib/curl/tests/data/test1267 | 48 - Engine/lib/curl/tests/data/test1268 | 41 - Engine/lib/curl/tests/data/test1269 | 34 - Engine/lib/curl/tests/data/test127 | 46 - Engine/lib/curl/tests/data/test1270 | 67 - Engine/lib/curl/tests/data/test1271 | 46 - Engine/lib/curl/tests/data/test1272 | 43 - Engine/lib/curl/tests/data/test1273 | 81 - Engine/lib/curl/tests/data/test1274 | 75 - Engine/lib/curl/tests/data/test128 | 57 - Engine/lib/curl/tests/data/test1280 | 59 - Engine/lib/curl/tests/data/test1281 | 38 - Engine/lib/curl/tests/data/test1282 | 45 - Engine/lib/curl/tests/data/test1283 | 55 - Engine/lib/curl/tests/data/test1284 | 88 - Engine/lib/curl/tests/data/test1285 | 96 - Engine/lib/curl/tests/data/test1286 | 111 - Engine/lib/curl/tests/data/test1287 | 95 - Engine/lib/curl/tests/data/test1288 | 98 - Engine/lib/curl/tests/data/test1289 | 35 - Engine/lib/curl/tests/data/test129 | 57 - Engine/lib/curl/tests/data/test1290 | 46 - Engine/lib/curl/tests/data/test1291 | 44 - Engine/lib/curl/tests/data/test1292 | 48 - Engine/lib/curl/tests/data/test1293 | 65 - Engine/lib/curl/tests/data/test1294 | 65 - Engine/lib/curl/tests/data/test1295 | 81 - Engine/lib/curl/tests/data/test1296 | 54 - Engine/lib/curl/tests/data/test1297 | 65 - Engine/lib/curl/tests/data/test1298 | 54 - Engine/lib/curl/tests/data/test1299 | 53 - Engine/lib/curl/tests/data/test13 | 42 - Engine/lib/curl/tests/data/test130 | 64 - Engine/lib/curl/tests/data/test1300 | 22 - Engine/lib/curl/tests/data/test1301 | 22 - Engine/lib/curl/tests/data/test1302 | 22 - Engine/lib/curl/tests/data/test1303 | 22 - Engine/lib/curl/tests/data/test1304 | 26 - Engine/lib/curl/tests/data/test1305 | 26 - Engine/lib/curl/tests/data/test1306 | 30 - Engine/lib/curl/tests/data/test1307 | 24 - Engine/lib/curl/tests/data/test1308 | 27 - Engine/lib/curl/tests/data/test1309 | 1564 - Engine/lib/curl/tests/data/test131 | 63 - Engine/lib/curl/tests/data/test1310 | 122 - Engine/lib/curl/tests/data/test1311 | 62 - Engine/lib/curl/tests/data/test1312 | 62 - Engine/lib/curl/tests/data/test1313 | 62 - Engine/lib/curl/tests/data/test1314 | 81 - Engine/lib/curl/tests/data/test1315 | 83 - Engine/lib/curl/tests/data/test1316 | 81 - Engine/lib/curl/tests/data/test1317 | 54 - Engine/lib/curl/tests/data/test1318 | 59 - Engine/lib/curl/tests/data/test1319 | 81 - Engine/lib/curl/tests/data/test132 | 62 - Engine/lib/curl/tests/data/test1320 | 71 - Engine/lib/curl/tests/data/test1321 | 77 - Engine/lib/curl/tests/data/test1322 | 55 - Engine/lib/curl/tests/data/test1323 | 32 - Engine/lib/curl/tests/data/test1324 | 54 - Engine/lib/curl/tests/data/test1325 | 79 - Engine/lib/curl/tests/data/test1326 | 48 - Engine/lib/curl/tests/data/test1327 | 47 - Engine/lib/curl/tests/data/test1328 | 70 - Engine/lib/curl/tests/data/test1329 | 33 - Engine/lib/curl/tests/data/test133 | 62 - Engine/lib/curl/tests/data/test1330 | 48 - Engine/lib/curl/tests/data/test1331 | 91 - Engine/lib/curl/tests/data/test1332 | 78 - Engine/lib/curl/tests/data/test1333 | 53 - Engine/lib/curl/tests/data/test1334 | 74 - Engine/lib/curl/tests/data/test1335 | 71 - Engine/lib/curl/tests/data/test1336 | 79 - Engine/lib/curl/tests/data/test1337 | 76 - Engine/lib/curl/tests/data/test1338 | 75 - Engine/lib/curl/tests/data/test1339 | 72 - Engine/lib/curl/tests/data/test134 | 64 - Engine/lib/curl/tests/data/test1340 | 78 - Engine/lib/curl/tests/data/test1341 | 75 - Engine/lib/curl/tests/data/test1342 | 81 - Engine/lib/curl/tests/data/test1343 | 78 - Engine/lib/curl/tests/data/test1344 | 87 - Engine/lib/curl/tests/data/test1345 | 84 - Engine/lib/curl/tests/data/test1346 | 71 - Engine/lib/curl/tests/data/test1347 | 76 - Engine/lib/curl/tests/data/test1348 | 61 - Engine/lib/curl/tests/data/test1349 | 83 - Engine/lib/curl/tests/data/test135 | 54 - Engine/lib/curl/tests/data/test1350 | 80 - Engine/lib/curl/tests/data/test1351 | 84 - Engine/lib/curl/tests/data/test1352 | 81 - Engine/lib/curl/tests/data/test1353 | 83 - Engine/lib/curl/tests/data/test1354 | 78 - Engine/lib/curl/tests/data/test1355 | 61 - Engine/lib/curl/tests/data/test1356 | 79 - Engine/lib/curl/tests/data/test1357 | 99 - Engine/lib/curl/tests/data/test1358 | 96 - Engine/lib/curl/tests/data/test1359 | 100 - Engine/lib/curl/tests/data/test136 | 42 - Engine/lib/curl/tests/data/test1360 | 97 - Engine/lib/curl/tests/data/test1361 | 99 - Engine/lib/curl/tests/data/test1362 | 96 - Engine/lib/curl/tests/data/test1363 | 79 - Engine/lib/curl/tests/data/test1364 | 69 - Engine/lib/curl/tests/data/test1365 | 66 - Engine/lib/curl/tests/data/test1366 | 71 - Engine/lib/curl/tests/data/test1367 | 68 - Engine/lib/curl/tests/data/test1368 | 70 - Engine/lib/curl/tests/data/test1369 | 67 - Engine/lib/curl/tests/data/test137 | 47 - Engine/lib/curl/tests/data/test1370 | 72 - Engine/lib/curl/tests/data/test1371 | 69 - Engine/lib/curl/tests/data/test1372 | 76 - Engine/lib/curl/tests/data/test1373 | 73 - Engine/lib/curl/tests/data/test1374 | 79 - Engine/lib/curl/tests/data/test1375 | 76 - Engine/lib/curl/tests/data/test1376 | 66 - Engine/lib/curl/tests/data/test1377 | 68 - Engine/lib/curl/tests/data/test1378 | 56 - Engine/lib/curl/tests/data/test1379 | 76 - Engine/lib/curl/tests/data/test138 | 50 - Engine/lib/curl/tests/data/test1380 | 73 - Engine/lib/curl/tests/data/test1381 | 77 - Engine/lib/curl/tests/data/test1382 | 74 - Engine/lib/curl/tests/data/test1383 | 76 - Engine/lib/curl/tests/data/test1384 | 73 - Engine/lib/curl/tests/data/test1385 | 56 - Engine/lib/curl/tests/data/test1386 | 71 - Engine/lib/curl/tests/data/test1387 | 91 - Engine/lib/curl/tests/data/test1388 | 88 - Engine/lib/curl/tests/data/test1389 | 92 - Engine/lib/curl/tests/data/test139 | 47 - Engine/lib/curl/tests/data/test1390 | 89 - Engine/lib/curl/tests/data/test1391 | 91 - Engine/lib/curl/tests/data/test1392 | 88 - Engine/lib/curl/tests/data/test1393 | 71 - Engine/lib/curl/tests/data/test1394 | 26 - Engine/lib/curl/tests/data/test1395 | 21 - Engine/lib/curl/tests/data/test1396 | 24 - Engine/lib/curl/tests/data/test1397 | 24 - Engine/lib/curl/tests/data/test1398 | 23 - Engine/lib/curl/tests/data/test1399 | 22 - Engine/lib/curl/tests/data/test14 | 41 - Engine/lib/curl/tests/data/test140 | 42 - Engine/lib/curl/tests/data/test1400 | 110 - Engine/lib/curl/tests/data/test1401 | 127 - Engine/lib/curl/tests/data/test1402 | 115 - Engine/lib/curl/tests/data/test1403 | 110 - Engine/lib/curl/tests/data/test1404 | 190 - Engine/lib/curl/tests/data/test1405 | 144 - Engine/lib/curl/tests/data/test1406 | 130 - Engine/lib/curl/tests/data/test1407 | 108 - Engine/lib/curl/tests/data/test1408 | 72 - Engine/lib/curl/tests/data/test1409 | 31 - Engine/lib/curl/tests/data/test141 | 52 - Engine/lib/curl/tests/data/test1410 | 31 - Engine/lib/curl/tests/data/test1411 | 58 - Engine/lib/curl/tests/data/test1412 | 134 - Engine/lib/curl/tests/data/test1413 | 72 - Engine/lib/curl/tests/data/test1414 | 57 - Engine/lib/curl/tests/data/test1415 | 76 - Engine/lib/curl/tests/data/test1416 | 61 - Engine/lib/curl/tests/data/test1417 | 77 - Engine/lib/curl/tests/data/test1418 | 122 - Engine/lib/curl/tests/data/test1419 | 68 - Engine/lib/curl/tests/data/test142 | 190 - Engine/lib/curl/tests/data/test1420 | 112 - Engine/lib/curl/tests/data/test1421 | 74 - Engine/lib/curl/tests/data/test1422 | 62 - Engine/lib/curl/tests/data/test1423 | 55 - Engine/lib/curl/tests/data/test1424 | 74 - Engine/lib/curl/tests/data/test1425 | Bin 1735 -> 0 bytes Engine/lib/curl/tests/data/test1426 | Bin 1672 -> 0 bytes Engine/lib/curl/tests/data/test1427 | 29 - Engine/lib/curl/tests/data/test1428 | 81 - Engine/lib/curl/tests/data/test1429 | 68 - Engine/lib/curl/tests/data/test143 | 44 - Engine/lib/curl/tests/data/test1430 | 56 - Engine/lib/curl/tests/data/test1431 | 54 - Engine/lib/curl/tests/data/test1432 | 55 - Engine/lib/curl/tests/data/test1433 | 55 - Engine/lib/curl/tests/data/test1434 | 88 - Engine/lib/curl/tests/data/test1435 | 44 - Engine/lib/curl/tests/data/test1436 | 85 - Engine/lib/curl/tests/data/test1437 | 82 - Engine/lib/curl/tests/data/test1438 | 57 - Engine/lib/curl/tests/data/test1439 | 56 - Engine/lib/curl/tests/data/test144 | 49 - Engine/lib/curl/tests/data/test1440 | 35 - Engine/lib/curl/tests/data/test1441 | 35 - Engine/lib/curl/tests/data/test1442 | 35 - Engine/lib/curl/tests/data/test1443 | 66 - Engine/lib/curl/tests/data/test1444 | 52 - Engine/lib/curl/tests/data/test1445 | 35 - Engine/lib/curl/tests/data/test1446 | 42 - Engine/lib/curl/tests/data/test1447 | 39 - Engine/lib/curl/tests/data/test1448 | 92 - Engine/lib/curl/tests/data/test1449 | 38 - Engine/lib/curl/tests/data/test145 | 51 - Engine/lib/curl/tests/data/test1450 | 34 - Engine/lib/curl/tests/data/test1451 | 43 - Engine/lib/curl/tests/data/test1452 | 43 - Engine/lib/curl/tests/data/test1453 | 38 - Engine/lib/curl/tests/data/test1454 | 38 - Engine/lib/curl/tests/data/test1455 | 63 - Engine/lib/curl/tests/data/test1456 | 67 - Engine/lib/curl/tests/data/test1457 | 60 - Engine/lib/curl/tests/data/test1458 | 54 - Engine/lib/curl/tests/data/test1459 | 48 - Engine/lib/curl/tests/data/test146 | 55 - Engine/lib/curl/tests/data/test1460 | 59 - Engine/lib/curl/tests/data/test1461 | 53 - Engine/lib/curl/tests/data/test1462 | 61 - Engine/lib/curl/tests/data/test1463 | 45 - Engine/lib/curl/tests/data/test1464 | 45 - Engine/lib/curl/tests/data/test1465 | Bin 3028 -> 0 bytes Engine/lib/curl/tests/data/test1466 | 45 - Engine/lib/curl/tests/data/test1467 | 59 - Engine/lib/curl/tests/data/test1468 | 63 - Engine/lib/curl/tests/data/test147 | 55 - Engine/lib/curl/tests/data/test148 | 49 - Engine/lib/curl/tests/data/test149 | 53 - Engine/lib/curl/tests/data/test15 | 55 - Engine/lib/curl/tests/data/test150 | 92 - Engine/lib/curl/tests/data/test1500 | 44 - Engine/lib/curl/tests/data/test1501 | 56 - Engine/lib/curl/tests/data/test1502 | 55 - Engine/lib/curl/tests/data/test1503 | 55 - Engine/lib/curl/tests/data/test1504 | 55 - Engine/lib/curl/tests/data/test1505 | 55 - Engine/lib/curl/tests/data/test1506 | 96 - Engine/lib/curl/tests/data/test1507 | 51 - Engine/lib/curl/tests/data/test1508 | 31 - Engine/lib/curl/tests/data/test1509 | 90 - Engine/lib/curl/tests/data/test151 | 45 - Engine/lib/curl/tests/data/test1510 | 96 - Engine/lib/curl/tests/data/test1511 | 71 - Engine/lib/curl/tests/data/test1512 | 80 - Engine/lib/curl/tests/data/test1513 | 49 - Engine/lib/curl/tests/data/test1514 | 64 - Engine/lib/curl/tests/data/test1515 | 62 - Engine/lib/curl/tests/data/test1516 | 58 - Engine/lib/curl/tests/data/test1517 | 69 - Engine/lib/curl/tests/data/test1518 | 62 - Engine/lib/curl/tests/data/test1519 | 62 - Engine/lib/curl/tests/data/test152 | 49 - Engine/lib/curl/tests/data/test1520 | 63 - Engine/lib/curl/tests/data/test1521 | 30 - Engine/lib/curl/tests/data/test1522 | 53 - Engine/lib/curl/tests/data/test1523 | 49 - Engine/lib/curl/tests/data/test1524 | 75 - Engine/lib/curl/tests/data/test1525 | 79 - Engine/lib/curl/tests/data/test1526 | 81 - Engine/lib/curl/tests/data/test1527 | 81 - Engine/lib/curl/tests/data/test1528 | 63 - Engine/lib/curl/tests/data/test1529 | 46 - Engine/lib/curl/tests/data/test153 | 156 - Engine/lib/curl/tests/data/test1530 | 30 - Engine/lib/curl/tests/data/test1531 | Bin 573 -> 0 bytes Engine/lib/curl/tests/data/test1532 | 49 - Engine/lib/curl/tests/data/test1533 | 74 - Engine/lib/curl/tests/data/test1534 | 51 - Engine/lib/curl/tests/data/test1535 | 50 - Engine/lib/curl/tests/data/test1536 | 50 - Engine/lib/curl/tests/data/test1537 | 45 - Engine/lib/curl/tests/data/test1538 | 192 - Engine/lib/curl/tests/data/test1539 | 43 - Engine/lib/curl/tests/data/test154 | 107 - Engine/lib/curl/tests/data/test1540 | 66 - Engine/lib/curl/tests/data/test1542 | 68 - Engine/lib/curl/tests/data/test1543 | 76 - Engine/lib/curl/tests/data/test155 | 131 - Engine/lib/curl/tests/data/test1550 | 29 - Engine/lib/curl/tests/data/test1551 | 69 - Engine/lib/curl/tests/data/test1552 | 52 - Engine/lib/curl/tests/data/test1553 | 54 - Engine/lib/curl/tests/data/test1554 | 111 - Engine/lib/curl/tests/data/test1555 | 50 - Engine/lib/curl/tests/data/test1556 | 60 - Engine/lib/curl/tests/data/test1557 | 36 - Engine/lib/curl/tests/data/test1558 | 46 - Engine/lib/curl/tests/data/test1559 | 45 - Engine/lib/curl/tests/data/test156 | 57 - Engine/lib/curl/tests/data/test1560 | 47 - Engine/lib/curl/tests/data/test1561 | 107 - Engine/lib/curl/tests/data/test1562 | 72 - Engine/lib/curl/tests/data/test1563 | 49 - Engine/lib/curl/tests/data/test1564 | 34 - Engine/lib/curl/tests/data/test1565 | 44 - Engine/lib/curl/tests/data/test1566 | 63 - Engine/lib/curl/tests/data/test1567 | 70 - Engine/lib/curl/tests/data/test1568 | 87 - Engine/lib/curl/tests/data/test1569 | 73 - Engine/lib/curl/tests/data/test157 | 45 - Engine/lib/curl/tests/data/test1570 | 73 - Engine/lib/curl/tests/data/test158 | 55 - Engine/lib/curl/tests/data/test159 | 81 - Engine/lib/curl/tests/data/test1590 | 54 - Engine/lib/curl/tests/data/test1591 | 64 - Engine/lib/curl/tests/data/test1592 | 37 - Engine/lib/curl/tests/data/test1593 | 46 - Engine/lib/curl/tests/data/test1594 | 49 - Engine/lib/curl/tests/data/test1595 | 48 - Engine/lib/curl/tests/data/test1596 | 49 - Engine/lib/curl/tests/data/test1597 | 32 - Engine/lib/curl/tests/data/test16 | 53 - Engine/lib/curl/tests/data/test160 | 72 - Engine/lib/curl/tests/data/test1600 | 23 - Engine/lib/curl/tests/data/test1601 | 22 - Engine/lib/curl/tests/data/test1602 | 22 - Engine/lib/curl/tests/data/test1603 | 22 - Engine/lib/curl/tests/data/test1604 | 21 - Engine/lib/curl/tests/data/test1605 | 21 - Engine/lib/curl/tests/data/test1606 | 22 - Engine/lib/curl/tests/data/test1607 | 22 - Engine/lib/curl/tests/data/test1608 | 22 - Engine/lib/curl/tests/data/test1609 | 22 - Engine/lib/curl/tests/data/test161 | 51 - Engine/lib/curl/tests/data/test1610 | 22 - Engine/lib/curl/tests/data/test1611 | 22 - Engine/lib/curl/tests/data/test1612 | 22 - Engine/lib/curl/tests/data/test1613 | 53 - Engine/lib/curl/tests/data/test162 | 60 - Engine/lib/curl/tests/data/test1620 | 22 - Engine/lib/curl/tests/data/test1621 | 23 - Engine/lib/curl/tests/data/test163 | 79 - Engine/lib/curl/tests/data/test1630 | 54 - Engine/lib/curl/tests/data/test1631 | 86 - Engine/lib/curl/tests/data/test1632 | 104 - Engine/lib/curl/tests/data/test1633 | 99 - Engine/lib/curl/tests/data/test1634 | 71 - Engine/lib/curl/tests/data/test1635 | 64 - Engine/lib/curl/tests/data/test164 | 66 - Engine/lib/curl/tests/data/test165 | 67 - Engine/lib/curl/tests/data/test1650 | 23 - Engine/lib/curl/tests/data/test1651 | 22 - Engine/lib/curl/tests/data/test1652 | 20 - Engine/lib/curl/tests/data/test1653 | 20 - Engine/lib/curl/tests/data/test1654 | 56 - Engine/lib/curl/tests/data/test1655 | 23 - Engine/lib/curl/tests/data/test166 | 60 - Engine/lib/curl/tests/data/test1660 | 83 - Engine/lib/curl/tests/data/test1661 | 22 - Engine/lib/curl/tests/data/test167 | 78 - Engine/lib/curl/tests/data/test1670 | 61 - Engine/lib/curl/tests/data/test1671 | 73 - Engine/lib/curl/tests/data/test168 | 98 - Engine/lib/curl/tests/data/test1680 | 55 - Engine/lib/curl/tests/data/test1681 | 61 - Engine/lib/curl/tests/data/test1682 | 58 - Engine/lib/curl/tests/data/test1683 | 61 - Engine/lib/curl/tests/data/test169 | 119 - Engine/lib/curl/tests/data/test17 | 54 - Engine/lib/curl/tests/data/test170 | 51 - Engine/lib/curl/tests/data/test1700 | 103 - Engine/lib/curl/tests/data/test1701 | 85 - Engine/lib/curl/tests/data/test1702 | 80 - Engine/lib/curl/tests/data/test1703 | 45 - Engine/lib/curl/tests/data/test171 | 59 - Engine/lib/curl/tests/data/test172 | 54 - Engine/lib/curl/tests/data/test173 | 79 - Engine/lib/curl/tests/data/test174 | 49 - Engine/lib/curl/tests/data/test175 | 83 - Engine/lib/curl/tests/data/test176 | 86 - Engine/lib/curl/tests/data/test177 | 51 - Engine/lib/curl/tests/data/test178 | 65 - Engine/lib/curl/tests/data/test179 | 58 - Engine/lib/curl/tests/data/test18 | 85 - Engine/lib/curl/tests/data/test180 | 65 - Engine/lib/curl/tests/data/test1800 | 56 - Engine/lib/curl/tests/data/test1801 | 67 - Engine/lib/curl/tests/data/test181 | 66 - Engine/lib/curl/tests/data/test182 | 43 - Engine/lib/curl/tests/data/test183 | 56 - Engine/lib/curl/tests/data/test184 | 76 - Engine/lib/curl/tests/data/test185 | 76 - Engine/lib/curl/tests/data/test186 | 62 - Engine/lib/curl/tests/data/test187 | 76 - Engine/lib/curl/tests/data/test188 | 75 - Engine/lib/curl/tests/data/test189 | 73 - Engine/lib/curl/tests/data/test19 | 37 - Engine/lib/curl/tests/data/test190 | 44 - Engine/lib/curl/tests/data/test1904 | 79 - Engine/lib/curl/tests/data/test1905 | 57 - Engine/lib/curl/tests/data/test1906 | 49 - Engine/lib/curl/tests/data/test1907 | 50 - Engine/lib/curl/tests/data/test1908 | 81 - Engine/lib/curl/tests/data/test1909 | 64 - Engine/lib/curl/tests/data/test191 | 41 - Engine/lib/curl/tests/data/test1910 | 65 - Engine/lib/curl/tests/data/test1911 | 29 - Engine/lib/curl/tests/data/test1912 | 30 - Engine/lib/curl/tests/data/test1913 | 41 - Engine/lib/curl/tests/data/test1914 | 42 - Engine/lib/curl/tests/data/test1915 | 53 - Engine/lib/curl/tests/data/test1916 | 57 - Engine/lib/curl/tests/data/test1917 | 61 - Engine/lib/curl/tests/data/test1918 | 33 - Engine/lib/curl/tests/data/test1919 | 51 - Engine/lib/curl/tests/data/test192 | 57 - Engine/lib/curl/tests/data/test193 | 81 - Engine/lib/curl/tests/data/test1933 | 69 - Engine/lib/curl/tests/data/test1934 | 69 - Engine/lib/curl/tests/data/test1935 | 69 - Engine/lib/curl/tests/data/test1936 | 69 - Engine/lib/curl/tests/data/test1937 | 72 - Engine/lib/curl/tests/data/test1938 | Bin 1281 -> 0 bytes Engine/lib/curl/tests/data/test1939 | 55 - Engine/lib/curl/tests/data/test194 | 72 - Engine/lib/curl/tests/data/test1940 | 62 - Engine/lib/curl/tests/data/test1941 | 76 - Engine/lib/curl/tests/data/test1942 | 66 - Engine/lib/curl/tests/data/test1943 | 62 - Engine/lib/curl/tests/data/test1944 | 66 - Engine/lib/curl/tests/data/test1945 | 76 - Engine/lib/curl/tests/data/test1946 | 68 - Engine/lib/curl/tests/data/test195 | 38 - Engine/lib/curl/tests/data/test196 | 42 - Engine/lib/curl/tests/data/test197 | 75 - Engine/lib/curl/tests/data/test198 | 70 - Engine/lib/curl/tests/data/test199 | 58 - Engine/lib/curl/tests/data/test2 | 48 - Engine/lib/curl/tests/data/test20 | 38 - Engine/lib/curl/tests/data/test200 | 41 - Engine/lib/curl/tests/data/test2000 | 73 - Engine/lib/curl/tests/data/test2001 | 96 - Engine/lib/curl/tests/data/test2002 | 115 - Engine/lib/curl/tests/data/test2003 | 145 - Engine/lib/curl/tests/data/test2004 | 78 - Engine/lib/curl/tests/data/test201 | 34 - Engine/lib/curl/tests/data/test202 | 37 - Engine/lib/curl/tests/data/test2023 | 159 - Engine/lib/curl/tests/data/test2024 | 173 - Engine/lib/curl/tests/data/test2025 | 262 - Engine/lib/curl/tests/data/test2026 | 217 - Engine/lib/curl/tests/data/test2027 | 245 - Engine/lib/curl/tests/data/test2028 | 306 - Engine/lib/curl/tests/data/test2029 | 230 - Engine/lib/curl/tests/data/test203 | 46 - Engine/lib/curl/tests/data/test2030 | 287 - Engine/lib/curl/tests/data/test2031 | 311 - Engine/lib/curl/tests/data/test2032 | 113 - Engine/lib/curl/tests/data/test2033 | 61 - Engine/lib/curl/tests/data/test2034 | 57 - Engine/lib/curl/tests/data/test2035 | 44 - Engine/lib/curl/tests/data/test2036 | 36 - Engine/lib/curl/tests/data/test2037 | 57 - Engine/lib/curl/tests/data/test2038 | 44 - Engine/lib/curl/tests/data/test2039 | 63 - Engine/lib/curl/tests/data/test204 | 40 - Engine/lib/curl/tests/data/test2040 | 68 - Engine/lib/curl/tests/data/test2041 | 57 - Engine/lib/curl/tests/data/test2042 | 44 - Engine/lib/curl/tests/data/test2043 | 33 - Engine/lib/curl/tests/data/test2044 | 33 - Engine/lib/curl/tests/data/test2045 | 54 - Engine/lib/curl/tests/data/test2046 | 98 - Engine/lib/curl/tests/data/test2047 | 101 - Engine/lib/curl/tests/data/test2048 | 40 - Engine/lib/curl/tests/data/test2049 | 65 - Engine/lib/curl/tests/data/test205 | 38 - Engine/lib/curl/tests/data/test2050 | 80 - Engine/lib/curl/tests/data/test2051 | 74 - Engine/lib/curl/tests/data/test2052 | 68 - Engine/lib/curl/tests/data/test2053 | 55 - Engine/lib/curl/tests/data/test2054 | 65 - Engine/lib/curl/tests/data/test2055 | 81 - Engine/lib/curl/tests/data/test2056 | 65 - Engine/lib/curl/tests/data/test2057 | 87 - Engine/lib/curl/tests/data/test2058 | 106 - Engine/lib/curl/tests/data/test2059 | 106 - Engine/lib/curl/tests/data/test206 | 108 - Engine/lib/curl/tests/data/test2060 | 106 - Engine/lib/curl/tests/data/test2061 | 82 - Engine/lib/curl/tests/data/test2062 | 82 - Engine/lib/curl/tests/data/test2063 | 82 - Engine/lib/curl/tests/data/test2064 | 82 - Engine/lib/curl/tests/data/test2065 | 82 - Engine/lib/curl/tests/data/test2066 | 82 - Engine/lib/curl/tests/data/test2067 | 88 - Engine/lib/curl/tests/data/test2068 | 88 - Engine/lib/curl/tests/data/test2069 | 88 - Engine/lib/curl/tests/data/test207 | 70 - Engine/lib/curl/tests/data/test2070 | 60 - Engine/lib/curl/tests/data/test2071 | 41 - Engine/lib/curl/tests/data/test2072 | 44 - Engine/lib/curl/tests/data/test2073 | 70 - Engine/lib/curl/tests/data/test2074 | 55 - Engine/lib/curl/tests/data/test2075 | 34 - Engine/lib/curl/tests/data/test2076 | 74 - Engine/lib/curl/tests/data/test2077 | 42 - Engine/lib/curl/tests/data/test2078 | 52 - Engine/lib/curl/tests/data/test2079 | 61 - Engine/lib/curl/tests/data/test208 | 74 - Engine/lib/curl/tests/data/test2080 | Bin 20675 -> 0 bytes Engine/lib/curl/tests/data/test2081 | 73 - Engine/lib/curl/tests/data/test2082 | 51 - Engine/lib/curl/tests/data/test2083 | 45 - Engine/lib/curl/tests/data/test2084 | 54 - Engine/lib/curl/tests/data/test2085 | 64 - Engine/lib/curl/tests/data/test2086 | 52 - Engine/lib/curl/tests/data/test2087 | 61 - Engine/lib/curl/tests/data/test209 | 115 - Engine/lib/curl/tests/data/test21 | 33 - Engine/lib/curl/tests/data/test210 | 52 - Engine/lib/curl/tests/data/test2100 | 92 - Engine/lib/curl/tests/data/test211 | 54 - Engine/lib/curl/tests/data/test212 | 64 - Engine/lib/curl/tests/data/test213 | 118 - Engine/lib/curl/tests/data/test214 | 52 - Engine/lib/curl/tests/data/test215 | 58 - Engine/lib/curl/tests/data/test216 | 45 - Engine/lib/curl/tests/data/test217 | 61 - Engine/lib/curl/tests/data/test218 | 61 - Engine/lib/curl/tests/data/test219 | 38 - Engine/lib/curl/tests/data/test22 | 43 - Engine/lib/curl/tests/data/test220 | 69 - Engine/lib/curl/tests/data/test2200 | 62 - Engine/lib/curl/tests/data/test2201 | 50 - Engine/lib/curl/tests/data/test2202 | 59 - Engine/lib/curl/tests/data/test2203 | 62 - Engine/lib/curl/tests/data/test2204 | 56 - Engine/lib/curl/tests/data/test2205 | 51 - Engine/lib/curl/tests/data/test221 | 72 - Engine/lib/curl/tests/data/test222 | 200 - Engine/lib/curl/tests/data/test223 | 93 - Engine/lib/curl/tests/data/test224 | 105 - Engine/lib/curl/tests/data/test225 | 28 - Engine/lib/curl/tests/data/test226 | 29 - Engine/lib/curl/tests/data/test227 | 57 - Engine/lib/curl/tests/data/test228 | 52 - Engine/lib/curl/tests/data/test229 | 41 - Engine/lib/curl/tests/data/test23 | 33 - Engine/lib/curl/tests/data/test230 | 201 - Engine/lib/curl/tests/data/test231 | 38 - Engine/lib/curl/tests/data/test232 | 200 - Engine/lib/curl/tests/data/test233 | 96 - Engine/lib/curl/tests/data/test234 | 99 - Engine/lib/curl/tests/data/test235 | 51 - Engine/lib/curl/tests/data/test236 | 53 - Engine/lib/curl/tests/data/test237 | 44 - Engine/lib/curl/tests/data/test238 | 42 - Engine/lib/curl/tests/data/test239 | 92 - Engine/lib/curl/tests/data/test24 | 48 - Engine/lib/curl/tests/data/test240 | 56 - Engine/lib/curl/tests/data/test241 | 54 - Engine/lib/curl/tests/data/test242 | 52 - Engine/lib/curl/tests/data/test243 | 121 - Engine/lib/curl/tests/data/test244 | 54 - Engine/lib/curl/tests/data/test245 | 85 - Engine/lib/curl/tests/data/test246 | 95 - Engine/lib/curl/tests/data/test247 | 47 - Engine/lib/curl/tests/data/test248 | 56 - Engine/lib/curl/tests/data/test249 | 52 - Engine/lib/curl/tests/data/test25 | 113 - Engine/lib/curl/tests/data/test250 | 58 - Engine/lib/curl/tests/data/test251 | 60 - Engine/lib/curl/tests/data/test252 | 60 - Engine/lib/curl/tests/data/test253 | 63 - Engine/lib/curl/tests/data/test254 | 61 - Engine/lib/curl/tests/data/test255 | 64 - Engine/lib/curl/tests/data/test256 | 65 - Engine/lib/curl/tests/data/test257 | 111 - Engine/lib/curl/tests/data/test258 | 136 - Engine/lib/curl/tests/data/test259 | 134 - Engine/lib/curl/tests/data/test26 | 42 - Engine/lib/curl/tests/data/test260 | 53 - Engine/lib/curl/tests/data/test261 | 48 - Engine/lib/curl/tests/data/test262 | Bin 1228 -> 0 bytes Engine/lib/curl/tests/data/test263 | 53 - Engine/lib/curl/tests/data/test264 | 50 - Engine/lib/curl/tests/data/test265 | 119 - Engine/lib/curl/tests/data/test266 | 80 - Engine/lib/curl/tests/data/test267 | 100 - Engine/lib/curl/tests/data/test268 | 55 - Engine/lib/curl/tests/data/test269 | 54 - Engine/lib/curl/tests/data/test27 | 56 - Engine/lib/curl/tests/data/test270 | 50 - Engine/lib/curl/tests/data/test271 | 46 - Engine/lib/curl/tests/data/test272 | 40 - Engine/lib/curl/tests/data/test273 | 82 - Engine/lib/curl/tests/data/test274 | 49 - Engine/lib/curl/tests/data/test275 | 90 - Engine/lib/curl/tests/data/test276 | 75 - Engine/lib/curl/tests/data/test277 | 55 - Engine/lib/curl/tests/data/test278 | 50 - Engine/lib/curl/tests/data/test279 | 51 - Engine/lib/curl/tests/data/test28 | 78 - Engine/lib/curl/tests/data/test280 | 63 - Engine/lib/curl/tests/data/test281 | 60 - Engine/lib/curl/tests/data/test282 | 43 - Engine/lib/curl/tests/data/test283 | 39 - Engine/lib/curl/tests/data/test284 | 70 - Engine/lib/curl/tests/data/test285 | 47 - Engine/lib/curl/tests/data/test286 | 95 - Engine/lib/curl/tests/data/test287 | 56 - Engine/lib/curl/tests/data/test288 | 48 - Engine/lib/curl/tests/data/test289 | 30 - Engine/lib/curl/tests/data/test29 | 50 - Engine/lib/curl/tests/data/test290 | 43 - Engine/lib/curl/tests/data/test291 | 47 - Engine/lib/curl/tests/data/test292 | 54 - Engine/lib/curl/tests/data/test293 | 58 - Engine/lib/curl/tests/data/test294 | 64 - Engine/lib/curl/tests/data/test295 | 45 - Engine/lib/curl/tests/data/test296 | 48 - Engine/lib/curl/tests/data/test297 | 46 - Engine/lib/curl/tests/data/test298 | 45 - Engine/lib/curl/tests/data/test299 | 52 - Engine/lib/curl/tests/data/test3 | 58 - Engine/lib/curl/tests/data/test30 | 41 - Engine/lib/curl/tests/data/test300 | 50 - Engine/lib/curl/tests/data/test3000 | 56 - Engine/lib/curl/tests/data/test3001 | 56 - Engine/lib/curl/tests/data/test3002 | 55 - Engine/lib/curl/tests/data/test3003 | 55 - Engine/lib/curl/tests/data/test3004 | 55 - Engine/lib/curl/tests/data/test3005 | 55 - Engine/lib/curl/tests/data/test3006 | 51 - Engine/lib/curl/tests/data/test3007 | 47 - Engine/lib/curl/tests/data/test3008 | 57 - Engine/lib/curl/tests/data/test3009 | 57 - Engine/lib/curl/tests/data/test301 | 55 - Engine/lib/curl/tests/data/test3010 | 57 - Engine/lib/curl/tests/data/test3011 | 57 - Engine/lib/curl/tests/data/test3012 | 60 - Engine/lib/curl/tests/data/test3013 | 68 - Engine/lib/curl/tests/data/test3014 | 56 - Engine/lib/curl/tests/data/test3015 | 78 - Engine/lib/curl/tests/data/test3016 | 35 - Engine/lib/curl/tests/data/test3017 | 67 - Engine/lib/curl/tests/data/test3018 | 65 - Engine/lib/curl/tests/data/test3019 | 36 - Engine/lib/curl/tests/data/test302 | 49 - Engine/lib/curl/tests/data/test3020 | 36 - Engine/lib/curl/tests/data/test3021 | 53 - Engine/lib/curl/tests/data/test3022 | 53 - Engine/lib/curl/tests/data/test3023 | 60 - Engine/lib/curl/tests/data/test3024 | 60 - Engine/lib/curl/tests/data/test3025 | 47 - Engine/lib/curl/tests/data/test3026 | 45 - Engine/lib/curl/tests/data/test303 | 53 - Engine/lib/curl/tests/data/test304 | 71 - Engine/lib/curl/tests/data/test305 | 32 - Engine/lib/curl/tests/data/test306 | 64 - Engine/lib/curl/tests/data/test307 | 54 - Engine/lib/curl/tests/data/test308 | 35 - Engine/lib/curl/tests/data/test309 | 81 - Engine/lib/curl/tests/data/test31 | 169 - Engine/lib/curl/tests/data/test310 | 56 - Engine/lib/curl/tests/data/test311 | 43 - Engine/lib/curl/tests/data/test312 | 43 - Engine/lib/curl/tests/data/test313 | 39 - Engine/lib/curl/tests/data/test314 | 196 - Engine/lib/curl/tests/data/test315 | 89 - Engine/lib/curl/tests/data/test316 | 196 - Engine/lib/curl/tests/data/test317 | 96 - Engine/lib/curl/tests/data/test318 | 97 - Engine/lib/curl/tests/data/test319 | 56 - Engine/lib/curl/tests/data/test32 | 53 - Engine/lib/curl/tests/data/test320 | 80 - Engine/lib/curl/tests/data/test321 | 33 - Engine/lib/curl/tests/data/test322 | 33 - Engine/lib/curl/tests/data/test323 | 33 - Engine/lib/curl/tests/data/test324 | 33 - Engine/lib/curl/tests/data/test325 | 64 - Engine/lib/curl/tests/data/test326 | 67 - Engine/lib/curl/tests/data/test327 | 72 - Engine/lib/curl/tests/data/test328 | 55 - Engine/lib/curl/tests/data/test329 | 73 - Engine/lib/curl/tests/data/test33 | 61 - Engine/lib/curl/tests/data/test330 | 93 - Engine/lib/curl/tests/data/test331 | 68 - Engine/lib/curl/tests/data/test332 | 45 - Engine/lib/curl/tests/data/test333 | 35 - Engine/lib/curl/tests/data/test334 | 42 - Engine/lib/curl/tests/data/test335 | 100 - Engine/lib/curl/tests/data/test336 | 58 - Engine/lib/curl/tests/data/test337 | 58 - Engine/lib/curl/tests/data/test338 | 62 - Engine/lib/curl/tests/data/test339 | 61 - Engine/lib/curl/tests/data/test34 | 64 - Engine/lib/curl/tests/data/test340 | 40 - Engine/lib/curl/tests/data/test341 | 54 - Engine/lib/curl/tests/data/test342 | 56 - Engine/lib/curl/tests/data/test343 | 59 - Engine/lib/curl/tests/data/test344 | 56 - Engine/lib/curl/tests/data/test345 | 59 - Engine/lib/curl/tests/data/test346 | 58 - Engine/lib/curl/tests/data/test347 | 60 - Engine/lib/curl/tests/data/test348 | 61 - Engine/lib/curl/tests/data/test349 | 45 - Engine/lib/curl/tests/data/test35 | Bin 841 -> 0 bytes Engine/lib/curl/tests/data/test350 | 57 - Engine/lib/curl/tests/data/test351 | 56 - Engine/lib/curl/tests/data/test352 | 57 - Engine/lib/curl/tests/data/test353 | 56 - Engine/lib/curl/tests/data/test354 | 50 - Engine/lib/curl/tests/data/test355 | 55 - Engine/lib/curl/tests/data/test356 | 68 - Engine/lib/curl/tests/data/test357 | 96 - Engine/lib/curl/tests/data/test358 | 94 - Engine/lib/curl/tests/data/test359 | 94 - Engine/lib/curl/tests/data/test36 | 64 - Engine/lib/curl/tests/data/test360 | 28 - Engine/lib/curl/tests/data/test361 | 50 - Engine/lib/curl/tests/data/test362 | 51 - Engine/lib/curl/tests/data/test363 | 88 - Engine/lib/curl/tests/data/test364 | 51 - Engine/lib/curl/tests/data/test365 | 65 - Engine/lib/curl/tests/data/test366 | 49 - Engine/lib/curl/tests/data/test367 | 48 - Engine/lib/curl/tests/data/test368 | 49 - Engine/lib/curl/tests/data/test369 | 47 - Engine/lib/curl/tests/data/test37 | 45 - Engine/lib/curl/tests/data/test370 | 36 - Engine/lib/curl/tests/data/test371 | 56 - Engine/lib/curl/tests/data/test372 | 49 - Engine/lib/curl/tests/data/test373 | 78 - Engine/lib/curl/tests/data/test374 | 49 - Engine/lib/curl/tests/data/test375 | 33 - Engine/lib/curl/tests/data/test376 | 64 - Engine/lib/curl/tests/data/test378 | 39 - Engine/lib/curl/tests/data/test379 | 71 - Engine/lib/curl/tests/data/test38 | 59 - Engine/lib/curl/tests/data/test380 | 63 - Engine/lib/curl/tests/data/test381 | 67 - Engine/lib/curl/tests/data/test383 | 56 - Engine/lib/curl/tests/data/test384 | 59 - Engine/lib/curl/tests/data/test385 | 56 - Engine/lib/curl/tests/data/test386 | 74 - Engine/lib/curl/tests/data/test387 | 53 - Engine/lib/curl/tests/data/test388 | 156 - Engine/lib/curl/tests/data/test389 | 57 - Engine/lib/curl/tests/data/test39 | 108 - Engine/lib/curl/tests/data/test390 | 48 - Engine/lib/curl/tests/data/test391 | 72 - Engine/lib/curl/tests/data/test392 | 61 - Engine/lib/curl/tests/data/test393 | 62 - Engine/lib/curl/tests/data/test394 | 61 - Engine/lib/curl/tests/data/test395 | 60 - Engine/lib/curl/tests/data/test396 | 200 - Engine/lib/curl/tests/data/test397 | 196 - Engine/lib/curl/tests/data/test398 | 64 - Engine/lib/curl/tests/data/test399 | 32 - Engine/lib/curl/tests/data/test4 | 61 - Engine/lib/curl/tests/data/test40 | 76 - Engine/lib/curl/tests/data/test400 | 62 - Engine/lib/curl/tests/data/test401 | 57 - Engine/lib/curl/tests/data/test402 | 36 - Engine/lib/curl/tests/data/test403 | 65 - Engine/lib/curl/tests/data/test404 | 32 - Engine/lib/curl/tests/data/test405 | 35 - Engine/lib/curl/tests/data/test406 | 67 - Engine/lib/curl/tests/data/test407 | 60 - Engine/lib/curl/tests/data/test408 | 62 - Engine/lib/curl/tests/data/test409 | 57 - Engine/lib/curl/tests/data/test41 | 32 - Engine/lib/curl/tests/data/test410 | 55 - Engine/lib/curl/tests/data/test411 | 43 - Engine/lib/curl/tests/data/test412 | 64 - Engine/lib/curl/tests/data/test413 | 64 - Engine/lib/curl/tests/data/test414 | 84 - Engine/lib/curl/tests/data/test42 | 76 - Engine/lib/curl/tests/data/test43 | 81 - Engine/lib/curl/tests/data/test430 | 101 - Engine/lib/curl/tests/data/test431 | 95 - Engine/lib/curl/tests/data/test432 | 100 - Engine/lib/curl/tests/data/test433 | 59 - Engine/lib/curl/tests/data/test434 | 46 - Engine/lib/curl/tests/data/test435 | 71 - Engine/lib/curl/tests/data/test436 | 58 - Engine/lib/curl/tests/data/test44 | 72 - Engine/lib/curl/tests/data/test440 | 73 - Engine/lib/curl/tests/data/test441 | 73 - Engine/lib/curl/tests/data/test442 | 210 - Engine/lib/curl/tests/data/test443 | 79 - Engine/lib/curl/tests/data/test444 | 190 - Engine/lib/curl/tests/data/test45 | 75 - Engine/lib/curl/tests/data/test46 | 88 - Engine/lib/curl/tests/data/test47 | 47 - Engine/lib/curl/tests/data/test48 | 53 - Engine/lib/curl/tests/data/test49 | 72 - Engine/lib/curl/tests/data/test490 | 67 - Engine/lib/curl/tests/data/test491 | 62 - Engine/lib/curl/tests/data/test492 | 90 - Engine/lib/curl/tests/data/test493 | 72 - Engine/lib/curl/tests/data/test494 | 60 - Engine/lib/curl/tests/data/test5 | 51 - Engine/lib/curl/tests/data/test50 | 72 - Engine/lib/curl/tests/data/test500 | 58 - Engine/lib/curl/tests/data/test501 | 40 - Engine/lib/curl/tests/data/test502 | 47 - Engine/lib/curl/tests/data/test503 | 89 - Engine/lib/curl/tests/data/test504 | 46 - Engine/lib/curl/tests/data/test505 | 66 - Engine/lib/curl/tests/data/test506 | 251 - Engine/lib/curl/tests/data/test507 | 37 - Engine/lib/curl/tests/data/test508 | 58 - Engine/lib/curl/tests/data/test509 | 41 - Engine/lib/curl/tests/data/test51 | 72 - Engine/lib/curl/tests/data/test510 | 69 - Engine/lib/curl/tests/data/test511 | 50 - Engine/lib/curl/tests/data/test512 | 50 - Engine/lib/curl/tests/data/test513 | 51 - Engine/lib/curl/tests/data/test514 | 54 - Engine/lib/curl/tests/data/test515 | 51 - Engine/lib/curl/tests/data/test516 | 51 - Engine/lib/curl/tests/data/test517 | 45 - Engine/lib/curl/tests/data/test518 | 67 - Engine/lib/curl/tests/data/test519 | 78 - Engine/lib/curl/tests/data/test52 | 72 - Engine/lib/curl/tests/data/test520 | 53 - Engine/lib/curl/tests/data/test521 | 60 - Engine/lib/curl/tests/data/test522 | 57 - Engine/lib/curl/tests/data/test523 | 64 - Engine/lib/curl/tests/data/test524 | 46 - Engine/lib/curl/tests/data/test525 | 59 - Engine/lib/curl/tests/data/test526 | 63 - Engine/lib/curl/tests/data/test527 | 63 - Engine/lib/curl/tests/data/test528 | 65 - Engine/lib/curl/tests/data/test529 | 59 - Engine/lib/curl/tests/data/test53 | 52 - Engine/lib/curl/tests/data/test530 | 49 - Engine/lib/curl/tests/data/test531 | 59 - Engine/lib/curl/tests/data/test532 | 63 - Engine/lib/curl/tests/data/test533 | 55 - Engine/lib/curl/tests/data/test534 | 53 - Engine/lib/curl/tests/data/test535 | 69 - Engine/lib/curl/tests/data/test537 | 64 - Engine/lib/curl/tests/data/test538 | 45 - Engine/lib/curl/tests/data/test539 | 71 - Engine/lib/curl/tests/data/test54 | 43 - Engine/lib/curl/tests/data/test540 | 108 - Engine/lib/curl/tests/data/test541 | 57 - Engine/lib/curl/tests/data/test542 | 57 - Engine/lib/curl/tests/data/test543 | 37 - Engine/lib/curl/tests/data/test544 | 53 - Engine/lib/curl/tests/data/test545 | Bin 822 -> 0 bytes Engine/lib/curl/tests/data/test546 | 70 - Engine/lib/curl/tests/data/test547 | 122 - Engine/lib/curl/tests/data/test548 | 122 - Engine/lib/curl/tests/data/test549 | 63 - Engine/lib/curl/tests/data/test55 | 64 - Engine/lib/curl/tests/data/test550 | 63 - Engine/lib/curl/tests/data/test551 | 98 - Engine/lib/curl/tests/data/test552 | 90 - Engine/lib/curl/tests/data/test553 | 62 - Engine/lib/curl/tests/data/test554 | 132 - Engine/lib/curl/tests/data/test555 | 127 - Engine/lib/curl/tests/data/test556 | 47 - Engine/lib/curl/tests/data/test557 | 47 - Engine/lib/curl/tests/data/test558 | 59 - Engine/lib/curl/tests/data/test559 | 51 - Engine/lib/curl/tests/data/test56 | 65 - Engine/lib/curl/tests/data/test560 | 53 - Engine/lib/curl/tests/data/test561 | 64 - Engine/lib/curl/tests/data/test562 | 52 - Engine/lib/curl/tests/data/test563 | 59 - Engine/lib/curl/tests/data/test564 | 68 - Engine/lib/curl/tests/data/test565 | 113 - Engine/lib/curl/tests/data/test566 | 57 - Engine/lib/curl/tests/data/test567 | 49 - Engine/lib/curl/tests/data/test568 | 116 - Engine/lib/curl/tests/data/test569 | 110 - Engine/lib/curl/tests/data/test57 | 46 - Engine/lib/curl/tests/data/test570 | 76 - Engine/lib/curl/tests/data/test571 | 107 - Engine/lib/curl/tests/data/test572 | 121 - Engine/lib/curl/tests/data/test573 | 55 - Engine/lib/curl/tests/data/test574 | 98 - Engine/lib/curl/tests/data/test575 | 121 - Engine/lib/curl/tests/data/test576 | 192 - Engine/lib/curl/tests/data/test577 | 55 - Engine/lib/curl/tests/data/test578 | 52 - Engine/lib/curl/tests/data/test579 | 87 - Engine/lib/curl/tests/data/test58 | 49 - Engine/lib/curl/tests/data/test580 | 55 - Engine/lib/curl/tests/data/test581 | 55 - Engine/lib/curl/tests/data/test582 | 49 - Engine/lib/curl/tests/data/test583 | 45 - Engine/lib/curl/tests/data/test584 | 81 - Engine/lib/curl/tests/data/test585 | 66 - Engine/lib/curl/tests/data/test586 | 59 - Engine/lib/curl/tests/data/test587 | 58 - Engine/lib/curl/tests/data/test588 | 69 - Engine/lib/curl/tests/data/test589 | 52 - Engine/lib/curl/tests/data/test59 | 45 - Engine/lib/curl/tests/data/test590 | 113 - Engine/lib/curl/tests/data/test591 | 73 - Engine/lib/curl/tests/data/test592 | 74 - Engine/lib/curl/tests/data/test593 | 72 - Engine/lib/curl/tests/data/test594 | 72 - Engine/lib/curl/tests/data/test595 | 57 - Engine/lib/curl/tests/data/test596 | 60 - Engine/lib/curl/tests/data/test597 | 36 - Engine/lib/curl/tests/data/test598 | 80 - Engine/lib/curl/tests/data/test599 | 86 - Engine/lib/curl/tests/data/test6 | 47 - Engine/lib/curl/tests/data/test60 | 58 - Engine/lib/curl/tests/data/test600 | 42 - Engine/lib/curl/tests/data/test601 | 42 - Engine/lib/curl/tests/data/test602 | 43 - Engine/lib/curl/tests/data/test603 | 43 - Engine/lib/curl/tests/data/test604 | 33 - Engine/lib/curl/tests/data/test605 | 33 - Engine/lib/curl/tests/data/test606 | 33 - Engine/lib/curl/tests/data/test607 | 33 - Engine/lib/curl/tests/data/test608 | 49 - Engine/lib/curl/tests/data/test609 | 45 - Engine/lib/curl/tests/data/test61 | 70 - Engine/lib/curl/tests/data/test610 | 47 - Engine/lib/curl/tests/data/test611 | 47 - Engine/lib/curl/tests/data/test612 | 47 - Engine/lib/curl/tests/data/test613 | 46 - Engine/lib/curl/tests/data/test614 | 47 - Engine/lib/curl/tests/data/test615 | 44 - Engine/lib/curl/tests/data/test616 | 39 - Engine/lib/curl/tests/data/test617 | 39 - Engine/lib/curl/tests/data/test618 | 39 - Engine/lib/curl/tests/data/test619 | 39 - Engine/lib/curl/tests/data/test62 | 64 - Engine/lib/curl/tests/data/test620 | 38 - Engine/lib/curl/tests/data/test621 | 38 - Engine/lib/curl/tests/data/test622 | 43 - Engine/lib/curl/tests/data/test623 | 44 - Engine/lib/curl/tests/data/test624 | 47 - Engine/lib/curl/tests/data/test625 | 47 - Engine/lib/curl/tests/data/test626 | 42 - Engine/lib/curl/tests/data/test627 | 46 - Engine/lib/curl/tests/data/test628 | 33 - Engine/lib/curl/tests/data/test629 | 33 - Engine/lib/curl/tests/data/test63 | 53 - Engine/lib/curl/tests/data/test630 | 34 - Engine/lib/curl/tests/data/test631 | 34 - Engine/lib/curl/tests/data/test632 | 34 - Engine/lib/curl/tests/data/test633 | 42 - Engine/lib/curl/tests/data/test634 | 43 - Engine/lib/curl/tests/data/test635 | 42 - Engine/lib/curl/tests/data/test636 | 43 - Engine/lib/curl/tests/data/test637 | 44 - Engine/lib/curl/tests/data/test638 | 49 - Engine/lib/curl/tests/data/test639 | 49 - Engine/lib/curl/tests/data/test64 | 82 - Engine/lib/curl/tests/data/test640 | 41 - Engine/lib/curl/tests/data/test641 | 41 - Engine/lib/curl/tests/data/test642 | 42 - Engine/lib/curl/tests/data/test643 | 131 - Engine/lib/curl/tests/data/test645 | 201 - Engine/lib/curl/tests/data/test646 | 98 - Engine/lib/curl/tests/data/test647 | 79 - Engine/lib/curl/tests/data/test648 | 75 - Engine/lib/curl/tests/data/test649 | 72 - Engine/lib/curl/tests/data/test65 | 82 - Engine/lib/curl/tests/data/test650 | 145 - Engine/lib/curl/tests/data/test651 | 72 - Engine/lib/curl/tests/data/test652 | 358 - Engine/lib/curl/tests/data/test653 | 93 - Engine/lib/curl/tests/data/test654 | 127 - Engine/lib/curl/tests/data/test655 | 50 - Engine/lib/curl/tests/data/test656 | 33 - Engine/lib/curl/tests/data/test658 | 49 - Engine/lib/curl/tests/data/test659 | 54 - Engine/lib/curl/tests/data/test66 | 43 - Engine/lib/curl/tests/data/test660 | 34 - Engine/lib/curl/tests/data/test661 | 73 - Engine/lib/curl/tests/data/test662 | 78 - Engine/lib/curl/tests/data/test663 | 82 - Engine/lib/curl/tests/data/test664 | 44 - Engine/lib/curl/tests/data/test665 | 44 - Engine/lib/curl/tests/data/test666 | 293 - Engine/lib/curl/tests/data/test667 | 89 - Engine/lib/curl/tests/data/test668 | 103 - Engine/lib/curl/tests/data/test669 | 60 - Engine/lib/curl/tests/data/test67 | 91 - Engine/lib/curl/tests/data/test670 | 72 - Engine/lib/curl/tests/data/test671 | 72 - Engine/lib/curl/tests/data/test672 | 72 - Engine/lib/curl/tests/data/test673 | 72 - Engine/lib/curl/tests/data/test674 | 54 - Engine/lib/curl/tests/data/test675 | 55 - Engine/lib/curl/tests/data/test676 | 83 - Engine/lib/curl/tests/data/test677 | 43 - Engine/lib/curl/tests/data/test678 | 59 - Engine/lib/curl/tests/data/test679 | 56 - Engine/lib/curl/tests/data/test68 | 90 - Engine/lib/curl/tests/data/test680 | 40 - Engine/lib/curl/tests/data/test681 | 51 - Engine/lib/curl/tests/data/test682 | 53 - Engine/lib/curl/tests/data/test683 | 53 - Engine/lib/curl/tests/data/test684 | 52 - Engine/lib/curl/tests/data/test685 | 52 - Engine/lib/curl/tests/data/test69 | 112 - Engine/lib/curl/tests/data/test7 | 60 - Engine/lib/curl/tests/data/test70 | 85 - Engine/lib/curl/tests/data/test700 | 58 - Engine/lib/curl/tests/data/test701 | 58 - Engine/lib/curl/tests/data/test702 | 47 - Engine/lib/curl/tests/data/test703 | 44 - Engine/lib/curl/tests/data/test704 | 39 - Engine/lib/curl/tests/data/test705 | 39 - Engine/lib/curl/tests/data/test706 | 62 - Engine/lib/curl/tests/data/test707 | 62 - Engine/lib/curl/tests/data/test708 | 61 - Engine/lib/curl/tests/data/test709 | 61 - Engine/lib/curl/tests/data/test71 | 78 - Engine/lib/curl/tests/data/test710 | 58 - Engine/lib/curl/tests/data/test711 | 57 - Engine/lib/curl/tests/data/test712 | 51 - Engine/lib/curl/tests/data/test713 | 52 - Engine/lib/curl/tests/data/test714 | 71 - Engine/lib/curl/tests/data/test715 | 73 - Engine/lib/curl/tests/data/test716 | 45 - Engine/lib/curl/tests/data/test717 | 66 - Engine/lib/curl/tests/data/test718 | 61 - Engine/lib/curl/tests/data/test719 | 63 - Engine/lib/curl/tests/data/test72 | 84 - Engine/lib/curl/tests/data/test720 | 62 - Engine/lib/curl/tests/data/test721 | 62 - Engine/lib/curl/tests/data/test73 | 53 - Engine/lib/curl/tests/data/test74 | 74 - Engine/lib/curl/tests/data/test75 | 44 - Engine/lib/curl/tests/data/test76 | 36 - Engine/lib/curl/tests/data/test77 | 54 - Engine/lib/curl/tests/data/test78 | 66 - Engine/lib/curl/tests/data/test79 | 54 - Engine/lib/curl/tests/data/test8 | 97 - Engine/lib/curl/tests/data/test80 | 83 - Engine/lib/curl/tests/data/test800 | 49 - Engine/lib/curl/tests/data/test801 | 46 - Engine/lib/curl/tests/data/test802 | 47 - Engine/lib/curl/tests/data/test803 | 45 - Engine/lib/curl/tests/data/test804 | 47 - Engine/lib/curl/tests/data/test805 | 62 - Engine/lib/curl/tests/data/test806 | 44 - Engine/lib/curl/tests/data/test807 | 45 - Engine/lib/curl/tests/data/test808 | 49 - Engine/lib/curl/tests/data/test809 | 43 - Engine/lib/curl/tests/data/test81 | 93 - Engine/lib/curl/tests/data/test810 | 43 - Engine/lib/curl/tests/data/test811 | 40 - Engine/lib/curl/tests/data/test812 | 40 - Engine/lib/curl/tests/data/test813 | 40 - Engine/lib/curl/tests/data/test814 | 41 - Engine/lib/curl/tests/data/test815 | 46 - Engine/lib/curl/tests/data/test816 | 49 - Engine/lib/curl/tests/data/test817 | 40 - Engine/lib/curl/tests/data/test818 | 46 - Engine/lib/curl/tests/data/test819 | 56 - Engine/lib/curl/tests/data/test82 | 54 - Engine/lib/curl/tests/data/test820 | 57 - Engine/lib/curl/tests/data/test821 | 59 - Engine/lib/curl/tests/data/test822 | 63 - Engine/lib/curl/tests/data/test823 | 63 - Engine/lib/curl/tests/data/test824 | 56 - Engine/lib/curl/tests/data/test825 | 56 - Engine/lib/curl/tests/data/test826 | 57 - Engine/lib/curl/tests/data/test827 | 63 - Engine/lib/curl/tests/data/test828 | 56 - Engine/lib/curl/tests/data/test829 | 29 - Engine/lib/curl/tests/data/test83 | 79 - Engine/lib/curl/tests/data/test830 | 56 - Engine/lib/curl/tests/data/test831 | 68 - Engine/lib/curl/tests/data/test832 | 58 - Engine/lib/curl/tests/data/test833 | 65 - Engine/lib/curl/tests/data/test834 | 77 - Engine/lib/curl/tests/data/test835 | 67 - Engine/lib/curl/tests/data/test836 | 59 - Engine/lib/curl/tests/data/test837 | 56 - Engine/lib/curl/tests/data/test838 | 56 - Engine/lib/curl/tests/data/test839 | 56 - Engine/lib/curl/tests/data/test84 | 54 - Engine/lib/curl/tests/data/test840 | 56 - Engine/lib/curl/tests/data/test841 | 51 - Engine/lib/curl/tests/data/test842 | 59 - Engine/lib/curl/tests/data/test843 | 57 - Engine/lib/curl/tests/data/test844 | 52 - Engine/lib/curl/tests/data/test845 | 54 - Engine/lib/curl/tests/data/test846 | 50 - Engine/lib/curl/tests/data/test847 | 49 - Engine/lib/curl/tests/data/test848 | 56 - Engine/lib/curl/tests/data/test849 | 51 - Engine/lib/curl/tests/data/test85 | 58 - Engine/lib/curl/tests/data/test850 | 49 - Engine/lib/curl/tests/data/test851 | 44 - Engine/lib/curl/tests/data/test852 | 47 - Engine/lib/curl/tests/data/test853 | 52 - Engine/lib/curl/tests/data/test854 | 45 - Engine/lib/curl/tests/data/test855 | 47 - Engine/lib/curl/tests/data/test856 | 48 - Engine/lib/curl/tests/data/test857 | 60 - Engine/lib/curl/tests/data/test858 | 41 - Engine/lib/curl/tests/data/test859 | 41 - Engine/lib/curl/tests/data/test86 | 94 - Engine/lib/curl/tests/data/test860 | 41 - Engine/lib/curl/tests/data/test861 | 52 - Engine/lib/curl/tests/data/test862 | 50 - Engine/lib/curl/tests/data/test863 | 41 - Engine/lib/curl/tests/data/test864 | 54 - Engine/lib/curl/tests/data/test865 | 57 - Engine/lib/curl/tests/data/test866 | 58 - Engine/lib/curl/tests/data/test867 | 60 - Engine/lib/curl/tests/data/test868 | 64 - Engine/lib/curl/tests/data/test869 | 64 - Engine/lib/curl/tests/data/test87 | 61 - Engine/lib/curl/tests/data/test870 | 57 - Engine/lib/curl/tests/data/test871 | 56 - Engine/lib/curl/tests/data/test872 | 57 - Engine/lib/curl/tests/data/test873 | 63 - Engine/lib/curl/tests/data/test874 | 56 - Engine/lib/curl/tests/data/test875 | 29 - Engine/lib/curl/tests/data/test876 | 57 - Engine/lib/curl/tests/data/test877 | 69 - Engine/lib/curl/tests/data/test878 | 59 - Engine/lib/curl/tests/data/test879 | 66 - Engine/lib/curl/tests/data/test88 | 99 - Engine/lib/curl/tests/data/test880 | 78 - Engine/lib/curl/tests/data/test881 | 68 - Engine/lib/curl/tests/data/test882 | 58 - Engine/lib/curl/tests/data/test883 | 57 - Engine/lib/curl/tests/data/test884 | 57 - Engine/lib/curl/tests/data/test885 | 56 - Engine/lib/curl/tests/data/test886 | 56 - Engine/lib/curl/tests/data/test887 | 58 - Engine/lib/curl/tests/data/test888 | 57 - Engine/lib/curl/tests/data/test889 | 56 - Engine/lib/curl/tests/data/test89 | 136 - Engine/lib/curl/tests/data/test890 | 55 - Engine/lib/curl/tests/data/test891 | 47 - Engine/lib/curl/tests/data/test892 | 57 - Engine/lib/curl/tests/data/test893 | 53 - Engine/lib/curl/tests/data/test894 | 37 - Engine/lib/curl/tests/data/test895 | 50 - Engine/lib/curl/tests/data/test896 | 38 - Engine/lib/curl/tests/data/test897 | 70 - Engine/lib/curl/tests/data/test898 | 94 - Engine/lib/curl/tests/data/test9 | 72 - Engine/lib/curl/tests/data/test90 | 184 - Engine/lib/curl/tests/data/test900 | 51 - Engine/lib/curl/tests/data/test901 | 63 - Engine/lib/curl/tests/data/test902 | 57 - Engine/lib/curl/tests/data/test903 | 56 - Engine/lib/curl/tests/data/test904 | 57 - Engine/lib/curl/tests/data/test905 | 59 - Engine/lib/curl/tests/data/test906 | 63 - Engine/lib/curl/tests/data/test907 | 63 - Engine/lib/curl/tests/data/test908 | 56 - Engine/lib/curl/tests/data/test909 | 51 - Engine/lib/curl/tests/data/test91 | 113 - Engine/lib/curl/tests/data/test910 | 51 - Engine/lib/curl/tests/data/test911 | 46 - Engine/lib/curl/tests/data/test912 | 55 - Engine/lib/curl/tests/data/test913 | 50 - Engine/lib/curl/tests/data/test914 | 49 - Engine/lib/curl/tests/data/test915 | 51 - Engine/lib/curl/tests/data/test916 | 47 - Engine/lib/curl/tests/data/test917 | 55 - Engine/lib/curl/tests/data/test918 | 48 - Engine/lib/curl/tests/data/test919 | 55 - Engine/lib/curl/tests/data/test92 | 67 - Engine/lib/curl/tests/data/test920 | 56 - Engine/lib/curl/tests/data/test921 | 62 - Engine/lib/curl/tests/data/test922 | 55 - Engine/lib/curl/tests/data/test923 | 37 - Engine/lib/curl/tests/data/test924 | 43 - Engine/lib/curl/tests/data/test925 | 40 - Engine/lib/curl/tests/data/test926 | 44 - Engine/lib/curl/tests/data/test927 | 43 - Engine/lib/curl/tests/data/test928 | 41 - Engine/lib/curl/tests/data/test929 | 38 - Engine/lib/curl/tests/data/test93 | 51 - Engine/lib/curl/tests/data/test930 | 38 - Engine/lib/curl/tests/data/test931 | 29 - Engine/lib/curl/tests/data/test932 | 56 - Engine/lib/curl/tests/data/test933 | 68 - Engine/lib/curl/tests/data/test934 | 58 - Engine/lib/curl/tests/data/test935 | 65 - Engine/lib/curl/tests/data/test936 | 77 - Engine/lib/curl/tests/data/test937 | 67 - Engine/lib/curl/tests/data/test938 | 65 - Engine/lib/curl/tests/data/test939 | 50 - Engine/lib/curl/tests/data/test94 | 56 - Engine/lib/curl/tests/data/test940 | 45 - Engine/lib/curl/tests/data/test941 | 66 - Engine/lib/curl/tests/data/test942 | 56 - Engine/lib/curl/tests/data/test943 | 56 - Engine/lib/curl/tests/data/test944 | 55 - Engine/lib/curl/tests/data/test945 | 55 - Engine/lib/curl/tests/data/test946 | 57 - Engine/lib/curl/tests/data/test947 | 56 - Engine/lib/curl/tests/data/test948 | 58 - Engine/lib/curl/tests/data/test949 | 57 - Engine/lib/curl/tests/data/test95 | 81 - Engine/lib/curl/tests/data/test950 | 43 - Engine/lib/curl/tests/data/test951 | 45 - Engine/lib/curl/tests/data/test952 | 45 - Engine/lib/curl/tests/data/test953 | 56 - Engine/lib/curl/tests/data/test954 | 55 - Engine/lib/curl/tests/data/test955 | 59 - Engine/lib/curl/tests/data/test956 | 57 - Engine/lib/curl/tests/data/test957 | 51 - Engine/lib/curl/tests/data/test958 | 51 - Engine/lib/curl/tests/data/test959 | 60 - Engine/lib/curl/tests/data/test96 | 46 - Engine/lib/curl/tests/data/test960 | 58 - Engine/lib/curl/tests/data/test961 | 52 - Engine/lib/curl/tests/data/test962 | 63 - Engine/lib/curl/tests/data/test963 | 63 - Engine/lib/curl/tests/data/test964 | 49 - Engine/lib/curl/tests/data/test965 | 66 - Engine/lib/curl/tests/data/test966 | 66 - Engine/lib/curl/tests/data/test967 | 55 - Engine/lib/curl/tests/data/test968 | 52 - Engine/lib/curl/tests/data/test969 | 51 - Engine/lib/curl/tests/data/test97 | 50 - Engine/lib/curl/tests/data/test970 | 65 - Engine/lib/curl/tests/data/test971 | 30 - Engine/lib/curl/tests/data/test972 | 65 - Engine/lib/curl/tests/data/test973 | 88 - Engine/lib/curl/tests/data/test974 | 91 - Engine/lib/curl/tests/data/test975 | 88 - Engine/lib/curl/tests/data/test976 | 92 - Engine/lib/curl/tests/data/test977 | 61 - Engine/lib/curl/tests/data/test98 | 53 - Engine/lib/curl/tests/data/test980 | 52 - Engine/lib/curl/tests/data/test981 | 59 - Engine/lib/curl/tests/data/test982 | 57 - Engine/lib/curl/tests/data/test983 | 52 - Engine/lib/curl/tests/data/test984 | 56 - Engine/lib/curl/tests/data/test985 | 54 - Engine/lib/curl/tests/data/test986 | 53 - Engine/lib/curl/tests/data/test99 | 67 - Engine/lib/curl/tests/dictserver.py | 197 - Engine/lib/curl/tests/directories.pm | 289 - Engine/lib/curl/tests/disable-scan.pl | 148 - Engine/lib/curl/tests/error-codes.pl | 82 - Engine/lib/curl/tests/extern-scan.pl | 83 - Engine/lib/curl/tests/ftp.pm | 400 - Engine/lib/curl/tests/ftpserver.pl | 3332 -- Engine/lib/curl/tests/getpart.pm | 344 - Engine/lib/curl/tests/http2-server.pl | 85 - Engine/lib/curl/tests/httpserver.pl | 158 - Engine/lib/curl/tests/libtest/.checksrc | 2 - Engine/lib/curl/tests/libtest/CMakeLists.txt | 85 - Engine/lib/curl/tests/libtest/Makefile.am | 140 - Engine/lib/curl/tests/libtest/Makefile.in | 18441 ------ Engine/lib/curl/tests/libtest/Makefile.inc | 761 - .../lib/curl/tests/libtest/chkdecimalpoint.c | 43 - Engine/lib/curl/tests/libtest/chkhostname.c | 49 - Engine/lib/curl/tests/libtest/first.c | 194 - Engine/lib/curl/tests/libtest/lib1156.c | 173 - Engine/lib/curl/tests/libtest/lib1500.c | 92 - Engine/lib/curl/tests/libtest/lib1501.c | 113 - Engine/lib/curl/tests/libtest/lib1502.c | 159 - Engine/lib/curl/tests/libtest/lib1506.c | 139 - Engine/lib/curl/tests/libtest/lib1507.c | 152 - Engine/lib/curl/tests/libtest/lib1508.c | 51 - Engine/lib/curl/tests/libtest/lib1509.c | 99 - Engine/lib/curl/tests/libtest/lib1510.c | 101 - Engine/lib/curl/tests/libtest/lib1511.c | 77 - Engine/lib/curl/tests/libtest/lib1512.c | 92 - Engine/lib/curl/tests/libtest/lib1513.c | 76 - Engine/lib/curl/tests/libtest/lib1514.c | 86 - Engine/lib/curl/tests/libtest/lib1515.c | 156 - Engine/lib/curl/tests/libtest/lib1517.c | 113 - Engine/lib/curl/tests/libtest/lib1518.c | 106 - Engine/lib/curl/tests/libtest/lib1520.c | 115 - Engine/lib/curl/tests/libtest/lib1522.c | 101 - Engine/lib/curl/tests/libtest/lib1523.c | 87 - Engine/lib/curl/tests/libtest/lib1525.c | 100 - Engine/lib/curl/tests/libtest/lib1526.c | 105 - Engine/lib/curl/tests/libtest/lib1527.c | 102 - Engine/lib/curl/tests/libtest/lib1528.c | 75 - Engine/lib/curl/tests/libtest/lib1529.c | 63 - Engine/lib/curl/tests/libtest/lib1530.c | 70 - Engine/lib/curl/tests/libtest/lib1531.c | 160 - Engine/lib/curl/tests/libtest/lib1532.c | 82 - Engine/lib/curl/tests/libtest/lib1533.c | 201 - Engine/lib/curl/tests/libtest/lib1534.c | 131 - Engine/lib/curl/tests/libtest/lib1535.c | 130 - Engine/lib/curl/tests/libtest/lib1536.c | 131 - Engine/lib/curl/tests/libtest/lib1537.c | 91 - Engine/lib/curl/tests/libtest/lib1538.c | 60 - Engine/lib/curl/tests/libtest/lib1540.c | 121 - Engine/lib/curl/tests/libtest/lib1542.c | 88 - Engine/lib/curl/tests/libtest/lib1550.c | 48 - Engine/lib/curl/tests/libtest/lib1551.c | 49 - Engine/lib/curl/tests/libtest/lib1552.c | 95 - Engine/lib/curl/tests/libtest/lib1553.c | 111 - Engine/lib/curl/tests/libtest/lib1554.c | 92 - Engine/lib/curl/tests/libtest/lib1555.c | 81 - Engine/lib/curl/tests/libtest/lib1556.c | 80 - Engine/lib/curl/tests/libtest/lib1557.c | 64 - Engine/lib/curl/tests/libtest/lib1558.c | 67 - Engine/lib/curl/tests/libtest/lib1559.c | 76 - Engine/lib/curl/tests/libtest/lib1560.c | 1323 - Engine/lib/curl/tests/libtest/lib1564.c | 135 - Engine/lib/curl/tests/libtest/lib1565.c | 209 - Engine/lib/curl/tests/libtest/lib1567.c | 54 - Engine/lib/curl/tests/libtest/lib1568.c | 52 - Engine/lib/curl/tests/libtest/lib1569.c | 48 - Engine/lib/curl/tests/libtest/lib1591.c | 120 - Engine/lib/curl/tests/libtest/lib1592.c | 123 - Engine/lib/curl/tests/libtest/lib1593.c | 81 - Engine/lib/curl/tests/libtest/lib1594.c | 68 - Engine/lib/curl/tests/libtest/lib1597.c | 85 - Engine/lib/curl/tests/libtest/lib1905.c | 100 - Engine/lib/curl/tests/libtest/lib1906.c | 74 - Engine/lib/curl/tests/libtest/lib1907.c | 56 - Engine/lib/curl/tests/libtest/lib1908.c | 64 - Engine/lib/curl/tests/libtest/lib1910.c | 49 - Engine/lib/curl/tests/libtest/lib1911.c | 95 - Engine/lib/curl/tests/libtest/lib1912.c | 82 - Engine/lib/curl/tests/libtest/lib1913.c | 50 - Engine/lib/curl/tests/libtest/lib1915.c | 128 - Engine/lib/curl/tests/libtest/lib1916.c | 56 - Engine/lib/curl/tests/libtest/lib1918.c | 57 - Engine/lib/curl/tests/libtest/lib1919.c | 53 - Engine/lib/curl/tests/libtest/lib1933.c | 62 - Engine/lib/curl/tests/libtest/lib1934.c | 63 - Engine/lib/curl/tests/libtest/lib1935.c | 63 - Engine/lib/curl/tests/libtest/lib1936.c | 63 - Engine/lib/curl/tests/libtest/lib1937.c | 66 - Engine/lib/curl/tests/libtest/lib1938.c | 68 - Engine/lib/curl/tests/libtest/lib1939.c | 72 - Engine/lib/curl/tests/libtest/lib1940.c | 119 - Engine/lib/curl/tests/libtest/lib1945.c | 81 - Engine/lib/curl/tests/libtest/lib3010.c | 68 - Engine/lib/curl/tests/libtest/lib3025.c | 61 - Engine/lib/curl/tests/libtest/lib3026.c | 163 - Engine/lib/curl/tests/libtest/lib500.c | 158 - Engine/lib/curl/tests/libtest/lib501.c | 60 - Engine/lib/curl/tests/libtest/lib502.c | 93 - Engine/lib/curl/tests/libtest/lib503.c | 103 - Engine/lib/curl/tests/libtest/lib504.c | 115 - Engine/lib/curl/tests/libtest/lib505.c | 152 - Engine/lib/curl/tests/libtest/lib506.c | 382 - Engine/lib/curl/tests/libtest/lib507.c | 102 - Engine/lib/curl/tests/libtest/lib508.c | 105 - Engine/lib/curl/tests/libtest/lib509.c | 117 - Engine/lib/curl/tests/libtest/lib510.c | 132 - Engine/lib/curl/tests/libtest/lib511.c | 58 - Engine/lib/curl/tests/libtest/lib512.c | 76 - Engine/lib/curl/tests/libtest/lib513.c | 85 - Engine/lib/curl/tests/libtest/lib514.c | 81 - Engine/lib/curl/tests/libtest/lib515.c | 62 - Engine/lib/curl/tests/libtest/lib516.c | 61 - Engine/lib/curl/tests/libtest/lib517.c | 166 - Engine/lib/curl/tests/libtest/lib518.c | 521 - Engine/lib/curl/tests/libtest/lib519.c | 64 - Engine/lib/curl/tests/libtest/lib520.c | 57 - Engine/lib/curl/tests/libtest/lib521.c | 58 - Engine/lib/curl/tests/libtest/lib523.c | 59 - Engine/lib/curl/tests/libtest/lib524.c | 57 - Engine/lib/curl/tests/libtest/lib525.c | 164 - Engine/lib/curl/tests/libtest/lib526.c | 186 - Engine/lib/curl/tests/libtest/lib530.c | 391 - Engine/lib/curl/tests/libtest/lib533.c | 114 - Engine/lib/curl/tests/libtest/lib537.c | 522 - Engine/lib/curl/tests/libtest/lib539.c | 93 - Engine/lib/curl/tests/libtest/lib540.c | 251 - Engine/lib/curl/tests/libtest/lib541.c | 117 - Engine/lib/curl/tests/libtest/lib542.c | 75 - Engine/lib/curl/tests/libtest/lib543.c | 72 - Engine/lib/curl/tests/libtest/lib544.c | 86 - Engine/lib/curl/tests/libtest/lib547.c | 125 - Engine/lib/curl/tests/libtest/lib549.c | 67 - Engine/lib/curl/tests/libtest/lib552.c | 221 - Engine/lib/curl/tests/libtest/lib553.c | 113 - Engine/lib/curl/tests/libtest/lib554.c | 207 - Engine/lib/curl/tests/libtest/lib555.c | 154 - Engine/lib/curl/tests/libtest/lib556.c | 99 - Engine/lib/curl/tests/libtest/lib557.c | 1592 - Engine/lib/curl/tests/libtest/lib558.c | 54 - Engine/lib/curl/tests/libtest/lib559.c | 57 - Engine/lib/curl/tests/libtest/lib560.c | 115 - Engine/lib/curl/tests/libtest/lib562.c | 76 - Engine/lib/curl/tests/libtest/lib564.c | 95 - Engine/lib/curl/tests/libtest/lib566.c | 69 - Engine/lib/curl/tests/libtest/lib567.c | 71 - Engine/lib/curl/tests/libtest/lib568.c | 179 - Engine/lib/curl/tests/libtest/lib569.c | 128 - Engine/lib/curl/tests/libtest/lib570.c | 121 - Engine/lib/curl/tests/libtest/lib571.c | 215 - Engine/lib/curl/tests/libtest/lib572.c | 185 - Engine/lib/curl/tests/libtest/lib573.c | 115 - Engine/lib/curl/tests/libtest/lib574.c | 73 - Engine/lib/curl/tests/libtest/lib575.c | 116 - Engine/lib/curl/tests/libtest/lib576.c | 127 - Engine/lib/curl/tests/libtest/lib578.c | 102 - Engine/lib/curl/tests/libtest/lib579.c | 158 - Engine/lib/curl/tests/libtest/lib582.c | 361 - Engine/lib/curl/tests/libtest/lib583.c | 89 - Engine/lib/curl/tests/libtest/lib586.c | 248 - Engine/lib/curl/tests/libtest/lib589.c | 74 - Engine/lib/curl/tests/libtest/lib590.c | 73 - Engine/lib/curl/tests/libtest/lib591.c | 147 - Engine/lib/curl/tests/libtest/lib597.c | 128 - Engine/lib/curl/tests/libtest/lib598.c | 74 - Engine/lib/curl/tests/libtest/lib599.c | 99 - Engine/lib/curl/tests/libtest/lib643.c | 287 - Engine/lib/curl/tests/libtest/lib650.c | 209 - Engine/lib/curl/tests/libtest/lib651.c | 96 - Engine/lib/curl/tests/libtest/lib652.c | 133 - Engine/lib/curl/tests/libtest/lib653.c | 65 - Engine/lib/curl/tests/libtest/lib654.c | 169 - Engine/lib/curl/tests/libtest/lib655.c | 114 - Engine/lib/curl/tests/libtest/lib658.c | 79 - Engine/lib/curl/tests/libtest/lib659.c | 77 - Engine/lib/curl/tests/libtest/lib661.c | 152 - Engine/lib/curl/tests/libtest/lib666.c | 122 - Engine/lib/curl/tests/libtest/lib667.c | 114 - Engine/lib/curl/tests/libtest/lib668.c | 118 - Engine/lib/curl/tests/libtest/lib670.c | 260 - Engine/lib/curl/tests/libtest/lib674.c | 84 - Engine/lib/curl/tests/libtest/lib676.c | 70 - Engine/lib/curl/tests/libtest/lib677.c | 122 - Engine/lib/curl/tests/libtest/lib678.c | 122 - Engine/lib/curl/tests/libtest/libauthretry.c | 149 - .../lib/curl/tests/libtest/libntlmconnect.c | 236 - Engine/lib/curl/tests/libtest/libprereq.c | 99 - Engine/lib/curl/tests/libtest/mk-lib1521.pl | 319 - Engine/lib/curl/tests/libtest/notexists.pl | 38 - Engine/lib/curl/tests/libtest/sethostname.c | 43 - Engine/lib/curl/tests/libtest/sethostname.h | 42 - Engine/lib/curl/tests/libtest/stub_gssapi.c | 451 - Engine/lib/curl/tests/libtest/stub_gssapi.h | 184 - Engine/lib/curl/tests/libtest/test.h | 488 - Engine/lib/curl/tests/libtest/test1013.pl | 74 - Engine/lib/curl/tests/libtest/test1022.pl | 77 - Engine/lib/curl/tests/libtest/test307.pl | 42 - Engine/lib/curl/tests/libtest/test610.pl | 56 - Engine/lib/curl/tests/libtest/test613.pl | 146 - Engine/lib/curl/tests/libtest/testtrace.c | 146 - Engine/lib/curl/tests/libtest/testtrace.h | 38 - Engine/lib/curl/tests/libtest/testutil.c | 132 - Engine/lib/curl/tests/libtest/testutil.h | 46 - Engine/lib/curl/tests/manpage-scan.pl | 303 - Engine/lib/curl/tests/manpage-syntax.pl | 248 - Engine/lib/curl/tests/mem-include-scan.pl | 98 - Engine/lib/curl/tests/memanalyze.pl | 434 - Engine/lib/curl/tests/negtelnetserver.py | 373 - Engine/lib/curl/tests/nroff-scan.pl | 108 - Engine/lib/curl/tests/options-scan.pl | 124 - Engine/lib/curl/tests/pathhelp.pm | 785 - Engine/lib/curl/tests/rtspserver.pl | 125 - Engine/lib/curl/tests/runtests.1 | 177 - Engine/lib/curl/tests/runtests.pl | 6306 -- Engine/lib/curl/tests/secureserver.pl | 369 - Engine/lib/curl/tests/server/CMakeLists.txt | 83 - Engine/lib/curl/tests/server/Makefile.am | 62 - Engine/lib/curl/tests/server/Makefile.in | 3635 -- Engine/lib/curl/tests/server/Makefile.inc | 117 - Engine/lib/curl/tests/server/base64.pl | 32 - Engine/lib/curl/tests/server/disabled.c | 88 - Engine/lib/curl/tests/server/fake_ntlm.c | 280 - Engine/lib/curl/tests/server/getpart.c | 522 - Engine/lib/curl/tests/server/getpart.h | 36 - Engine/lib/curl/tests/server/mqttd.c | 1090 - Engine/lib/curl/tests/server/resolve.c | 158 - Engine/lib/curl/tests/server/rtspd.c | 1393 - Engine/lib/curl/tests/server/server_setup.h | 31 - .../lib/curl/tests/server/server_sockaddr.h | 43 - Engine/lib/curl/tests/server/sockfilt.c | 1510 - Engine/lib/curl/tests/server/socksd.c | 1153 - Engine/lib/curl/tests/server/sws.c | 2333 - Engine/lib/curl/tests/server/testpart.c | 51 - Engine/lib/curl/tests/server/tftp.h | 63 - Engine/lib/curl/tests/server/tftpd.c | 1370 - Engine/lib/curl/tests/server/util.c | 876 - Engine/lib/curl/tests/server/util.h | 94 - Engine/lib/curl/tests/serverhelp.pm | 258 - Engine/lib/curl/tests/smbserver.py | 401 - Engine/lib/curl/tests/sshhelp.pm | 478 - Engine/lib/curl/tests/sshserver.pl | 1162 - Engine/lib/curl/tests/stunnel.pem | 172 - Engine/lib/curl/tests/symbol-scan.pl | 194 - Engine/lib/curl/tests/testcurl.1 | 127 - Engine/lib/curl/tests/testcurl.pl | 787 - Engine/lib/curl/tests/tftpserver.pl | 126 - Engine/lib/curl/tests/unit/CMakeLists.txt | 71 - Engine/lib/curl/tests/unit/Makefile.am | 69 - Engine/lib/curl/tests/unit/Makefile.in | 2852 - Engine/lib/curl/tests/unit/Makefile.inc | 164 - Engine/lib/curl/tests/unit/README.md | 72 - Engine/lib/curl/tests/unit/curlcheck.h | 113 - Engine/lib/curl/tests/unit/unit1300.c | 223 - Engine/lib/curl/tests/unit/unit1301.c | 56 - Engine/lib/curl/tests/unit/unit1302.c | 181 - Engine/lib/curl/tests/unit/unit1303.c | 153 - Engine/lib/curl/tests/unit/unit1304.c | 212 - Engine/lib/curl/tests/unit/unit1305.c | 132 - Engine/lib/curl/tests/unit/unit1307.c | 325 - Engine/lib/curl/tests/unit/unit1308.c | 97 - Engine/lib/curl/tests/unit/unit1309.c | 144 - Engine/lib/curl/tests/unit/unit1323.c | 68 - Engine/lib/curl/tests/unit/unit1330.c | 43 - Engine/lib/curl/tests/unit/unit1394.c | 133 - Engine/lib/curl/tests/unit/unit1395.c | 96 - Engine/lib/curl/tests/unit/unit1396.c | 117 - Engine/lib/curl/tests/unit/unit1397.c | 94 - Engine/lib/curl/tests/unit/unit1398.c | 92 - Engine/lib/curl/tests/unit/unit1399.c | 119 - Engine/lib/curl/tests/unit/unit1600.c | 75 - Engine/lib/curl/tests/unit/unit1601.c | 58 - Engine/lib/curl/tests/unit/unit1602.c | 81 - Engine/lib/curl/tests/unit/unit1603.c | 153 - Engine/lib/curl/tests/unit/unit1604.c | 358 - Engine/lib/curl/tests/unit/unit1605.c | 59 - Engine/lib/curl/tests/unit/unit1606.c | 93 - Engine/lib/curl/tests/unit/unit1607.c | 235 - Engine/lib/curl/tests/unit/unit1608.c | 76 - Engine/lib/curl/tests/unit/unit1609.c | 220 - Engine/lib/curl/tests/unit/unit1610.c | 64 - Engine/lib/curl/tests/unit/unit1611.c | 60 - Engine/lib/curl/tests/unit/unit1612.c | 68 - Engine/lib/curl/tests/unit/unit1620.c | 93 - Engine/lib/curl/tests/unit/unit1621.c | 93 - Engine/lib/curl/tests/unit/unit1650.c | 297 - Engine/lib/curl/tests/unit/unit1651.c | 393 - Engine/lib/curl/tests/unit/unit1652.c | 141 - Engine/lib/curl/tests/unit/unit1653.c | 210 - Engine/lib/curl/tests/unit/unit1654.c | 142 - Engine/lib/curl/tests/unit/unit1655.c | 192 - Engine/lib/curl/tests/unit/unit1660.c | 179 - Engine/lib/curl/tests/unit/unit1661.c | 115 - Engine/lib/curl/tests/util.py | 92 - Engine/lib/curl/tests/valgrind.pm | 36 - Engine/lib/curl/tests/valgrind.supp | 151 - Engine/lib/curl/tests/version-scan.pl | 68 - Engine/lib/curl/winbuild/Makefile.vc | 303 - Engine/lib/curl/winbuild/MakefileBuild.vc | 709 - Engine/lib/curl/winbuild/README.md | 200 - Engine/lib/curl/winbuild/gen_resp_file.bat | 34 - 3418 files changed, 618588 deletions(-) delete mode 100644 Engine/lib/curl/CHANGES delete mode 100644 Engine/lib/curl/CMake/CMakeConfigurableFile.in delete mode 100644 Engine/lib/curl/CMake/CurlSymbolHiding.cmake delete mode 100644 Engine/lib/curl/CMake/CurlTests.c delete mode 100644 Engine/lib/curl/CMake/FindBearSSL.cmake delete mode 100644 Engine/lib/curl/CMake/FindBrotli.cmake delete mode 100644 Engine/lib/curl/CMake/FindCARES.cmake delete mode 100644 Engine/lib/curl/CMake/FindGSS.cmake delete mode 100644 Engine/lib/curl/CMake/FindLibPSL.cmake delete mode 100644 Engine/lib/curl/CMake/FindLibSSH2.cmake delete mode 100644 Engine/lib/curl/CMake/FindMSH3.cmake delete mode 100644 Engine/lib/curl/CMake/FindMbedTLS.cmake delete mode 100644 Engine/lib/curl/CMake/FindNGHTTP2.cmake delete mode 100644 Engine/lib/curl/CMake/FindNGHTTP3.cmake delete mode 100644 Engine/lib/curl/CMake/FindNGTCP2.cmake delete mode 100644 Engine/lib/curl/CMake/FindNSS.cmake delete mode 100644 Engine/lib/curl/CMake/FindQUICHE.cmake delete mode 100644 Engine/lib/curl/CMake/FindWolfSSL.cmake delete mode 100644 Engine/lib/curl/CMake/FindZstd.cmake delete mode 100644 Engine/lib/curl/CMake/Macros.cmake delete mode 100644 Engine/lib/curl/CMake/OtherTests.cmake delete mode 100644 Engine/lib/curl/CMake/Platforms/WindowsCache.cmake delete mode 100644 Engine/lib/curl/CMake/Utilities.cmake delete mode 100644 Engine/lib/curl/CMake/cmake_uninstall.cmake.in delete mode 100644 Engine/lib/curl/CMake/curl-config.cmake.in delete mode 100644 Engine/lib/curl/CMakeLists.txt delete mode 100644 Engine/lib/curl/COPYING delete mode 100755 Engine/lib/curl/MacOSX-Framework delete mode 100644 Engine/lib/curl/Makefile delete mode 100644 Engine/lib/curl/Makefile.am delete mode 100644 Engine/lib/curl/Makefile.in delete mode 100644 Engine/lib/curl/README delete mode 100644 Engine/lib/curl/RELEASE-NOTES delete mode 100644 Engine/lib/curl/acinclude.m4 delete mode 100644 Engine/lib/curl/aclocal.m4 delete mode 100755 Engine/lib/curl/buildconf delete mode 100644 Engine/lib/curl/buildconf.bat delete mode 100755 Engine/lib/curl/compile delete mode 100755 Engine/lib/curl/config.guess delete mode 100755 Engine/lib/curl/config.sub delete mode 100755 Engine/lib/curl/configure delete mode 100644 Engine/lib/curl/configure.ac delete mode 100644 Engine/lib/curl/curl-config.in delete mode 100755 Engine/lib/curl/depcomp delete mode 100644 Engine/lib/curl/docs/ALTSVC.md delete mode 100644 Engine/lib/curl/docs/BINDINGS.md delete mode 100644 Engine/lib/curl/docs/BUFREF.md delete mode 100644 Engine/lib/curl/docs/BUG-BOUNTY.md delete mode 100644 Engine/lib/curl/docs/BUGS.md delete mode 100644 Engine/lib/curl/docs/CHECKSRC.md delete mode 100644 Engine/lib/curl/docs/CIPHERS.md delete mode 100644 Engine/lib/curl/docs/CMakeLists.txt delete mode 100644 Engine/lib/curl/docs/CODE_OF_CONDUCT.md delete mode 100644 Engine/lib/curl/docs/CODE_REVIEW.md delete mode 100644 Engine/lib/curl/docs/CODE_STYLE.md delete mode 100644 Engine/lib/curl/docs/CONTRIBUTE.md delete mode 100644 Engine/lib/curl/docs/CURL-DISABLE.md delete mode 100644 Engine/lib/curl/docs/DEPRECATE.md delete mode 100644 Engine/lib/curl/docs/DYNBUF.md delete mode 100644 Engine/lib/curl/docs/EXPERIMENTAL.md delete mode 100644 Engine/lib/curl/docs/FAQ delete mode 100644 Engine/lib/curl/docs/FEATURES.md delete mode 100644 Engine/lib/curl/docs/GOVERNANCE.md delete mode 100644 Engine/lib/curl/docs/HELP-US.md delete mode 100644 Engine/lib/curl/docs/HISTORY.md delete mode 100644 Engine/lib/curl/docs/HSTS.md delete mode 100644 Engine/lib/curl/docs/HTTP-COOKIES.md delete mode 100644 Engine/lib/curl/docs/HTTP2.md delete mode 100644 Engine/lib/curl/docs/HTTP3.md delete mode 100644 Engine/lib/curl/docs/HYPER.md delete mode 100644 Engine/lib/curl/docs/INSTALL delete mode 100644 Engine/lib/curl/docs/INSTALL.cmake delete mode 100644 Engine/lib/curl/docs/INSTALL.md delete mode 100644 Engine/lib/curl/docs/INTERNALS.md delete mode 100644 Engine/lib/curl/docs/KNOWN_BUGS delete mode 100644 Engine/lib/curl/docs/MAIL-ETIQUETTE delete mode 100644 Engine/lib/curl/docs/MQTT.md delete mode 100644 Engine/lib/curl/docs/Makefile.am delete mode 100644 Engine/lib/curl/docs/Makefile.in delete mode 100644 Engine/lib/curl/docs/NEW-PROTOCOL.md delete mode 100644 Engine/lib/curl/docs/PARALLEL-TRANSFERS.md delete mode 100644 Engine/lib/curl/docs/README.md delete mode 100644 Engine/lib/curl/docs/RELEASE-PROCEDURE.md delete mode 100644 Engine/lib/curl/docs/ROADMAP.md delete mode 100644 Engine/lib/curl/docs/RUSTLS.md delete mode 100644 Engine/lib/curl/docs/SECURITY-PROCESS.md delete mode 100644 Engine/lib/curl/docs/SSL-PROBLEMS.md delete mode 100644 Engine/lib/curl/docs/SSLCERTS.md delete mode 100644 Engine/lib/curl/docs/THANKS delete mode 100644 Engine/lib/curl/docs/TODO delete mode 100644 Engine/lib/curl/docs/TheArtOfHttpScripting.md delete mode 100644 Engine/lib/curl/docs/URL-SYNTAX.md delete mode 100644 Engine/lib/curl/docs/VERSIONS.md delete mode 100644 Engine/lib/curl/docs/cmdline-opts/CMakeLists.txt delete mode 100644 Engine/lib/curl/docs/cmdline-opts/MANPAGE.md delete mode 100644 Engine/lib/curl/docs/cmdline-opts/Makefile.am delete mode 100644 Engine/lib/curl/docs/cmdline-opts/Makefile.in delete mode 100644 Engine/lib/curl/docs/cmdline-opts/Makefile.inc delete mode 100644 Engine/lib/curl/docs/cmdline-opts/abstract-unix-socket.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/alt-svc.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/anyauth.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/append.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/aws-sigv4.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/basic.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/cacert.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/capath.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/cert-status.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/cert-type.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/cert.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/ciphers.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/compressed-ssh.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/compressed.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/config.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/connect-timeout.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/connect-to.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/continue-at.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/cookie-jar.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/cookie.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/create-dirs.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/create-file-mode.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/crlf.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/crlfile.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/curves.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/data-ascii.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/data-binary.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/data-raw.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/data-urlencode.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/data.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/delegation.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/digest.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/disable-eprt.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/disable-epsv.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/disable.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/disallow-username-in-url.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/dns-interface.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/dns-ipv4-addr.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/dns-ipv6-addr.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/dns-servers.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/doh-cert-status.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/doh-insecure.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/doh-url.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/dump-header.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/egd-file.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/engine.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/etag-compare.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/etag-save.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/expect100-timeout.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/fail-early.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/fail-with-body.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/fail.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/false-start.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/form-escape.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/form-string.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/form.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/ftp-account.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/ftp-alternative-to-user.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/ftp-create-dirs.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/ftp-method.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/ftp-pasv.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/ftp-port.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/ftp-pret.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/ftp-skip-pasv-ip.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/ftp-ssl-ccc-mode.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/ftp-ssl-ccc.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/ftp-ssl-control.d delete mode 100755 Engine/lib/curl/docs/cmdline-opts/gen.pl delete mode 100644 Engine/lib/curl/docs/cmdline-opts/get.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/globoff.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/happy-eyeballs-timeout-ms.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/haproxy-protocol.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/head.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/header.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/help.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/hostpubmd5.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/hostpubsha256.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/hsts.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/http0.9.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/http1.0.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/http1.1.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/http2-prior-knowledge.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/http2.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/http3.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/ignore-content-length.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/include.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/insecure.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/interface.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/ipv4.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/ipv6.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/json.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/junk-session-cookies.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/keepalive-time.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/key-type.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/key.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/krb.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/libcurl.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/limit-rate.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/list-only.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/local-port.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/location-trusted.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/location.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/login-options.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/mail-auth.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/mail-from.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/mail-rcpt-allowfails.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/mail-rcpt.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/manual.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/max-filesize.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/max-redirs.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/max-time.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/metalink.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/negotiate.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/netrc-file.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/netrc-optional.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/netrc.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/next.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/no-alpn.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/no-buffer.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/no-clobber.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/no-keepalive.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/no-npn.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/no-progress-meter.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/no-sessionid.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/noproxy.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/ntlm-wb.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/ntlm.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/oauth2-bearer.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/output-dir.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/output.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/page-footer delete mode 100644 Engine/lib/curl/docs/cmdline-opts/page-header delete mode 100644 Engine/lib/curl/docs/cmdline-opts/parallel-immediate.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/parallel-max.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/parallel.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/pass.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/path-as-is.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/pinnedpubkey.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/post301.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/post302.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/post303.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/preproxy.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/progress-bar.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/proto-default.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/proto-redir.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/proto.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/proxy-anyauth.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/proxy-basic.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/proxy-cacert.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/proxy-capath.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/proxy-cert-type.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/proxy-cert.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/proxy-ciphers.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/proxy-crlfile.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/proxy-digest.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/proxy-header.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/proxy-insecure.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/proxy-key-type.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/proxy-key.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/proxy-negotiate.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/proxy-ntlm.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/proxy-pass.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/proxy-pinnedpubkey.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/proxy-service-name.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/proxy-ssl-allow-beast.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/proxy-ssl-auto-client-cert.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/proxy-tls13-ciphers.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/proxy-tlsauthtype.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/proxy-tlspassword.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/proxy-tlsuser.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/proxy-tlsv1.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/proxy-user.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/proxy.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/proxy1.0.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/proxytunnel.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/pubkey.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/quote.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/random-file.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/range.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/rate.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/raw.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/referer.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/remote-header-name.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/remote-name-all.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/remote-name.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/remote-time.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/remove-on-error.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/request-target.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/request.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/resolve.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/retry-all-errors.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/retry-connrefused.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/retry-delay.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/retry-max-time.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/retry.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/sasl-authzid.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/sasl-ir.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/service-name.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/show-error.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/silent.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/socks4.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/socks4a.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/socks5-basic.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/socks5-gssapi-nec.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/socks5-gssapi-service.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/socks5-gssapi.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/socks5-hostname.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/socks5.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/speed-limit.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/speed-time.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/ssl-allow-beast.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/ssl-auto-client-cert.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/ssl-no-revoke.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/ssl-reqd.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/ssl-revoke-best-effort.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/ssl.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/sslv2.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/sslv3.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/stderr.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/styled-output.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/suppress-connect-headers.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/tcp-fastopen.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/tcp-nodelay.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/telnet-option.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/tftp-blksize.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/tftp-no-options.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/time-cond.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/tls-max.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/tls13-ciphers.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/tlsauthtype.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/tlspassword.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/tlsuser.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/tlsv1.0.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/tlsv1.1.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/tlsv1.2.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/tlsv1.3.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/tlsv1.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/tr-encoding.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/trace-ascii.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/trace-time.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/trace.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/unix-socket.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/upload-file.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/url.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/use-ascii.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/user-agent.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/user.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/verbose.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/version.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/write-out.d delete mode 100644 Engine/lib/curl/docs/cmdline-opts/xattr.d delete mode 100644 Engine/lib/curl/docs/curl-config.1 delete mode 100644 Engine/lib/curl/docs/curl.1 delete mode 100644 Engine/lib/curl/docs/examples/.checksrc delete mode 100644 Engine/lib/curl/docs/examples/10-at-a-time.c delete mode 100644 Engine/lib/curl/docs/examples/Makefile.am delete mode 100644 Engine/lib/curl/docs/examples/Makefile.example delete mode 100644 Engine/lib/curl/docs/examples/Makefile.in delete mode 100644 Engine/lib/curl/docs/examples/Makefile.inc delete mode 100644 Engine/lib/curl/docs/examples/Makefile.m32 delete mode 100644 Engine/lib/curl/docs/examples/README.md delete mode 100644 Engine/lib/curl/docs/examples/altsvc.c delete mode 100644 Engine/lib/curl/docs/examples/anyauthput.c delete mode 100644 Engine/lib/curl/docs/examples/cacertinmem.c delete mode 100644 Engine/lib/curl/docs/examples/certinfo.c delete mode 100644 Engine/lib/curl/docs/examples/chkspeed.c delete mode 100644 Engine/lib/curl/docs/examples/cookie_interface.c delete mode 100644 Engine/lib/curl/docs/examples/crawler.c delete mode 100644 Engine/lib/curl/docs/examples/curlgtk.c delete mode 100644 Engine/lib/curl/docs/examples/debug.c delete mode 100644 Engine/lib/curl/docs/examples/ephiperfifo.c delete mode 100644 Engine/lib/curl/docs/examples/evhiperfifo.c delete mode 100644 Engine/lib/curl/docs/examples/externalsocket.c delete mode 100644 Engine/lib/curl/docs/examples/fileupload.c delete mode 100644 Engine/lib/curl/docs/examples/ftp-wildcard.c delete mode 100644 Engine/lib/curl/docs/examples/ftpget.c delete mode 100644 Engine/lib/curl/docs/examples/ftpgetinfo.c delete mode 100644 Engine/lib/curl/docs/examples/ftpgetresp.c delete mode 100644 Engine/lib/curl/docs/examples/ftpsget.c delete mode 100644 Engine/lib/curl/docs/examples/ftpupload.c delete mode 100644 Engine/lib/curl/docs/examples/ftpuploadfrommem.c delete mode 100644 Engine/lib/curl/docs/examples/ftpuploadresume.c delete mode 100644 Engine/lib/curl/docs/examples/getinfo.c delete mode 100644 Engine/lib/curl/docs/examples/getinmemory.c delete mode 100644 Engine/lib/curl/docs/examples/getredirect.c delete mode 100644 Engine/lib/curl/docs/examples/getreferrer.c delete mode 100644 Engine/lib/curl/docs/examples/ghiper.c delete mode 100644 Engine/lib/curl/docs/examples/headerapi.c delete mode 100644 Engine/lib/curl/docs/examples/hiperfifo.c delete mode 100644 Engine/lib/curl/docs/examples/href_extractor.c delete mode 100644 Engine/lib/curl/docs/examples/htmltidy.c delete mode 100644 Engine/lib/curl/docs/examples/htmltitle.cpp delete mode 100644 Engine/lib/curl/docs/examples/http-post.c delete mode 100644 Engine/lib/curl/docs/examples/http2-download.c delete mode 100644 Engine/lib/curl/docs/examples/http2-pushinmemory.c delete mode 100644 Engine/lib/curl/docs/examples/http2-serverpush.c delete mode 100644 Engine/lib/curl/docs/examples/http2-upload.c delete mode 100644 Engine/lib/curl/docs/examples/http3-present.c delete mode 100644 Engine/lib/curl/docs/examples/http3.c delete mode 100644 Engine/lib/curl/docs/examples/httpcustomheader.c delete mode 100644 Engine/lib/curl/docs/examples/httpput-postfields.c delete mode 100644 Engine/lib/curl/docs/examples/httpput.c delete mode 100644 Engine/lib/curl/docs/examples/https.c delete mode 100644 Engine/lib/curl/docs/examples/imap-append.c delete mode 100644 Engine/lib/curl/docs/examples/imap-authzid.c delete mode 100644 Engine/lib/curl/docs/examples/imap-copy.c delete mode 100644 Engine/lib/curl/docs/examples/imap-create.c delete mode 100644 Engine/lib/curl/docs/examples/imap-delete.c delete mode 100644 Engine/lib/curl/docs/examples/imap-examine.c delete mode 100644 Engine/lib/curl/docs/examples/imap-fetch.c delete mode 100644 Engine/lib/curl/docs/examples/imap-list.c delete mode 100644 Engine/lib/curl/docs/examples/imap-lsub.c delete mode 100644 Engine/lib/curl/docs/examples/imap-multi.c delete mode 100644 Engine/lib/curl/docs/examples/imap-noop.c delete mode 100644 Engine/lib/curl/docs/examples/imap-search.c delete mode 100644 Engine/lib/curl/docs/examples/imap-ssl.c delete mode 100644 Engine/lib/curl/docs/examples/imap-store.c delete mode 100644 Engine/lib/curl/docs/examples/imap-tls.c delete mode 100644 Engine/lib/curl/docs/examples/makefile.dj delete mode 100644 Engine/lib/curl/docs/examples/multi-app.c delete mode 100644 Engine/lib/curl/docs/examples/multi-debugcallback.c delete mode 100644 Engine/lib/curl/docs/examples/multi-double.c delete mode 100644 Engine/lib/curl/docs/examples/multi-event.c delete mode 100644 Engine/lib/curl/docs/examples/multi-formadd.c delete mode 100644 Engine/lib/curl/docs/examples/multi-legacy.c delete mode 100644 Engine/lib/curl/docs/examples/multi-post.c delete mode 100644 Engine/lib/curl/docs/examples/multi-single.c delete mode 100644 Engine/lib/curl/docs/examples/multi-uv.c delete mode 100644 Engine/lib/curl/docs/examples/multithread.c delete mode 100644 Engine/lib/curl/docs/examples/opensslthreadlock.c delete mode 100644 Engine/lib/curl/docs/examples/parseurl.c delete mode 100644 Engine/lib/curl/docs/examples/persistent.c delete mode 100644 Engine/lib/curl/docs/examples/pop3-authzid.c delete mode 100644 Engine/lib/curl/docs/examples/pop3-dele.c delete mode 100644 Engine/lib/curl/docs/examples/pop3-list.c delete mode 100644 Engine/lib/curl/docs/examples/pop3-multi.c delete mode 100644 Engine/lib/curl/docs/examples/pop3-noop.c delete mode 100644 Engine/lib/curl/docs/examples/pop3-retr.c delete mode 100644 Engine/lib/curl/docs/examples/pop3-ssl.c delete mode 100644 Engine/lib/curl/docs/examples/pop3-stat.c delete mode 100644 Engine/lib/curl/docs/examples/pop3-tls.c delete mode 100644 Engine/lib/curl/docs/examples/pop3-top.c delete mode 100644 Engine/lib/curl/docs/examples/pop3-uidl.c delete mode 100644 Engine/lib/curl/docs/examples/post-callback.c delete mode 100644 Engine/lib/curl/docs/examples/postinmemory.c delete mode 100644 Engine/lib/curl/docs/examples/postit2-formadd.c delete mode 100644 Engine/lib/curl/docs/examples/postit2.c delete mode 100644 Engine/lib/curl/docs/examples/progressfunc.c delete mode 100644 Engine/lib/curl/docs/examples/resolve.c delete mode 100644 Engine/lib/curl/docs/examples/sendrecv.c delete mode 100644 Engine/lib/curl/docs/examples/sepheaders.c delete mode 100644 Engine/lib/curl/docs/examples/sessioninfo.c delete mode 100644 Engine/lib/curl/docs/examples/sftpget.c delete mode 100644 Engine/lib/curl/docs/examples/sftpuploadresume.c delete mode 100644 Engine/lib/curl/docs/examples/shared-connection-cache.c delete mode 100644 Engine/lib/curl/docs/examples/simple.c delete mode 100644 Engine/lib/curl/docs/examples/simplepost.c delete mode 100644 Engine/lib/curl/docs/examples/simplessl.c delete mode 100644 Engine/lib/curl/docs/examples/smooth-gtk-thread.c delete mode 100644 Engine/lib/curl/docs/examples/smtp-authzid.c delete mode 100644 Engine/lib/curl/docs/examples/smtp-expn.c delete mode 100644 Engine/lib/curl/docs/examples/smtp-mail.c delete mode 100644 Engine/lib/curl/docs/examples/smtp-mime.c delete mode 100644 Engine/lib/curl/docs/examples/smtp-multi.c delete mode 100644 Engine/lib/curl/docs/examples/smtp-ssl.c delete mode 100644 Engine/lib/curl/docs/examples/smtp-tls.c delete mode 100644 Engine/lib/curl/docs/examples/smtp-vrfy.c delete mode 100644 Engine/lib/curl/docs/examples/sslbackend.c delete mode 100644 Engine/lib/curl/docs/examples/synctime.c delete mode 100644 Engine/lib/curl/docs/examples/threaded-ssl.c delete mode 100644 Engine/lib/curl/docs/examples/url2file.c delete mode 100644 Engine/lib/curl/docs/examples/urlapi.c delete mode 100644 Engine/lib/curl/docs/examples/usercertinmem.c delete mode 100755 Engine/lib/curl/docs/examples/version-check.pl delete mode 100644 Engine/lib/curl/docs/examples/xmlstream.c delete mode 100644 Engine/lib/curl/docs/libcurl/ABI.md delete mode 100644 Engine/lib/curl/docs/libcurl/CMakeLists.txt delete mode 100644 Engine/lib/curl/docs/libcurl/Makefile.am delete mode 100644 Engine/lib/curl/docs/libcurl/Makefile.in delete mode 100644 Engine/lib/curl/docs/libcurl/Makefile.inc delete mode 100644 Engine/lib/curl/docs/libcurl/curl_easy_cleanup.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_easy_duphandle.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_easy_escape.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_easy_getinfo.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_easy_header.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_easy_init.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_easy_nextheader.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_easy_option_by_id.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_easy_option_by_name.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_easy_option_next.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_easy_pause.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_easy_perform.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_easy_recv.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_easy_reset.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_easy_send.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_easy_setopt.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_easy_strerror.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_easy_unescape.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_easy_upkeep.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_escape.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_formadd.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_formfree.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_formget.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_free.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_getdate.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_getenv.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_global_cleanup.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_global_init.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_global_init_mem.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_global_sslset.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_mime_addpart.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_mime_data.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_mime_data_cb.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_mime_encoder.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_mime_filedata.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_mime_filename.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_mime_free.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_mime_headers.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_mime_init.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_mime_name.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_mime_subparts.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_mime_type.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_mprintf.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_multi_add_handle.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_multi_assign.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_multi_cleanup.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_multi_fdset.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_multi_info_read.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_multi_init.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_multi_perform.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_multi_poll.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_multi_remove_handle.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_multi_setopt.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_multi_socket.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_multi_socket_action.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_multi_socket_all.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_multi_strerror.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_multi_timeout.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_multi_wait.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_multi_wakeup.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_share_cleanup.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_share_init.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_share_setopt.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_share_strerror.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_slist_append.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_slist_free_all.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_strequal.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_strnequal.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_unescape.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_url.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_url_cleanup.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_url_dup.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_url_get.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_url_set.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_url_strerror.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_version.3 delete mode 100644 Engine/lib/curl/docs/libcurl/curl_version_info.3 delete mode 100644 Engine/lib/curl/docs/libcurl/libcurl-easy.3 delete mode 100644 Engine/lib/curl/docs/libcurl/libcurl-env.3 delete mode 100644 Engine/lib/curl/docs/libcurl/libcurl-errors.3 delete mode 100644 Engine/lib/curl/docs/libcurl/libcurl-multi.3 delete mode 100644 Engine/lib/curl/docs/libcurl/libcurl-security.3 delete mode 100644 Engine/lib/curl/docs/libcurl/libcurl-share.3 delete mode 100644 Engine/lib/curl/docs/libcurl/libcurl-symbols.3 delete mode 100644 Engine/lib/curl/docs/libcurl/libcurl-thread.3 delete mode 100644 Engine/lib/curl/docs/libcurl/libcurl-tutorial.3 delete mode 100644 Engine/lib/curl/docs/libcurl/libcurl-url.3 delete mode 100644 Engine/lib/curl/docs/libcurl/libcurl.3 delete mode 100644 Engine/lib/curl/docs/libcurl/libcurl.m4 delete mode 100755 Engine/lib/curl/docs/libcurl/mksymbolsmanpage.pl delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CMakeLists.txt delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_ACTIVESOCKET.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME_T.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_CAINFO.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_CAPATH.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_CERTINFO.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_CONDITION_UNMET.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_CONNECT_TIME.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_CONNECT_TIME_T.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_CONTENT_LENGTH_UPLOAD_T.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_CONTENT_TYPE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_COOKIELIST.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_EFFECTIVE_METHOD.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_EFFECTIVE_URL.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_FILETIME.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_FILETIME_T.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_FTP_ENTRY_PATH.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_HEADER_SIZE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_HTTPAUTH_AVAIL.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_HTTP_CONNECTCODE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_HTTP_VERSION.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_LASTSOCKET.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_LOCAL_IP.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_LOCAL_PORT.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME_T.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_NUM_CONNECTS.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_OS_ERRNO.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME_T.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_PRIMARY_IP.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_PRIMARY_PORT.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_PRIVATE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_PROTOCOL.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_PROXYAUTH_AVAIL.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_PROXY_ERROR.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_PROXY_SSL_VERIFYRESULT.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_REDIRECT_COUNT.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_REDIRECT_TIME_T.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_REDIRECT_URL.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_REFERER.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_REQUEST_SIZE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_RESPONSE_CODE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_RETRY_AFTER.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_RTSP_CLIENT_CSEQ.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_RTSP_CSEQ_RECV.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_RTSP_SERVER_CSEQ.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_RTSP_SESSION_ID.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_SCHEME.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_SIZE_DOWNLOAD_T.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_SIZE_UPLOAD_T.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_SPEED_DOWNLOAD_T.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_SPEED_UPLOAD_T.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_SSL_ENGINES.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_SSL_VERIFYRESULT.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME_T.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_TLS_SESSION.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_TLS_SSL_PTR.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_TOTAL_TIME.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLINFO_TOTAL_TIME_T.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLMOPT_MAXCONNECTS.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLMOPT_MAX_CONCURRENT_STREAMS.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLMOPT_MAX_HOST_CONNECTIONS.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLMOPT_MAX_PIPELINE_LENGTH.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLMOPT_MAX_TOTAL_CONNECTIONS.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLMOPT_PIPELINING.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLMOPT_PIPELINING_SERVER_BL.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLMOPT_PIPELINING_SITE_BL.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLMOPT_PUSHDATA.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLMOPT_PUSHFUNCTION.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLMOPT_SOCKETDATA.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLMOPT_SOCKETFUNCTION.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLMOPT_TIMERDATA.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLMOPT_TIMERFUNCTION.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_ABSTRACT_UNIX_SOCKET.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_ACCEPTTIMEOUT_MS.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_ACCEPT_ENCODING.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_ADDRESS_SCOPE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_ALTSVC.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_ALTSVC_CTRL.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_APPEND.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_AUTOREFERER.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_AWS_SIGV4.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_BUFFERSIZE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_CAINFO.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_CAINFO_BLOB.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_CAPATH.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_CERTINFO.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_CHUNK_BGN_FUNCTION.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_CHUNK_DATA.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_CHUNK_END_FUNCTION.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_CLOSESOCKETDATA.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_CLOSESOCKETFUNCTION.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_CONNECTTIMEOUT_MS.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_CONNECT_ONLY.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_CONNECT_TO.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_CONV_FROM_NETWORK_FUNCTION.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_CONV_FROM_UTF8_FUNCTION.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_CONV_TO_NETWORK_FUNCTION.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_COOKIE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_COOKIEFILE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_COOKIEJAR.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_COOKIELIST.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_COOKIESESSION.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_COPYPOSTFIELDS.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_CRLF.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_CRLFILE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_CURLU.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_CUSTOMREQUEST.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_DEBUGDATA.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_DEBUGFUNCTION.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_DEFAULT_PROTOCOL.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_DIRLISTONLY.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_DISALLOW_USERNAME_IN_URL.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_DNS_CACHE_TIMEOUT.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_DNS_INTERFACE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP4.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_DNS_LOCAL_IP6.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_DNS_SERVERS.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_DNS_SHUFFLE_ADDRESSES.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_DNS_USE_GLOBAL_CACHE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYHOST.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYPEER.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_DOH_SSL_VERIFYSTATUS.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_DOH_URL.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_EGDSOCKET.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_ERRORBUFFER.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_EXPECT_100_TIMEOUT_MS.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_FAILONERROR.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_FILETIME.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_FNMATCH_DATA.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_FNMATCH_FUNCTION.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_FOLLOWLOCATION.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_FORBID_REUSE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_FRESH_CONNECT.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_FTPPORT.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_FTPSSLAUTH.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_FTP_ACCOUNT.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_FTP_ALTERNATIVE_TO_USER.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_FTP_CREATE_MISSING_DIRS.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_FTP_FILEMETHOD.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_FTP_SKIP_PASV_IP.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_FTP_SSL_CCC.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_FTP_USE_EPRT.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_FTP_USE_EPSV.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_FTP_USE_PRET.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_GSSAPI_DELEGATION.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_HAPROXYPROTOCOL.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_HEADER.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_HEADERDATA.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_HEADERFUNCTION.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_HEADEROPT.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_HSTS.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_HSTSREADDATA.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_HSTSREADFUNCTION.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_HSTSWRITEDATA.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_HSTSWRITEFUNCTION.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_HSTS_CTRL.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_HTTP09_ALLOWED.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_HTTP200ALIASES.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_HTTPAUTH.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_HTTPGET.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_HTTPHEADER.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_HTTPPOST.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_HTTPPROXYTUNNEL.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_HTTP_CONTENT_DECODING.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_HTTP_TRANSFER_DECODING.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_HTTP_VERSION.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_IGNORE_CONTENT_LENGTH.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_INFILESIZE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_INFILESIZE_LARGE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_INTERFACE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_INTERLEAVEDATA.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_INTERLEAVEFUNCTION.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_IOCTLDATA.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_IOCTLFUNCTION.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_IPRESOLVE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_ISSUERCERT.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_ISSUERCERT_BLOB.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_KEEP_SENDING_ON_ERROR.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_KEYPASSWD.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_KRBLEVEL.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_LOCALPORT.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_LOCALPORTRANGE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_LOGIN_OPTIONS.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_LOW_SPEED_LIMIT.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_LOW_SPEED_TIME.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_MAIL_AUTH.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_MAIL_FROM.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_MAIL_RCPT.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_MAIL_RCPT_ALLLOWFAILS.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_MAXAGE_CONN.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_MAXCONNECTS.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_MAXFILESIZE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_MAXFILESIZE_LARGE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_MAXLIFETIME_CONN.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_MAXREDIRS.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_MAX_RECV_SPEED_LARGE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_MAX_SEND_SPEED_LARGE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_MIMEPOST.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_MIME_OPTIONS.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_NETRC.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_NETRC_FILE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_NEW_DIRECTORY_PERMS.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_NEW_FILE_PERMS.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_NOBODY.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_NOPROGRESS.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_NOPROXY.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_NOSIGNAL.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_OPENSOCKETDATA.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_OPENSOCKETFUNCTION.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PASSWORD.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PATH_AS_IS.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PIPEWAIT.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PORT.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_POST.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_POSTFIELDS.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_POSTFIELDSIZE_LARGE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_POSTQUOTE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_POSTREDIR.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PREQUOTE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PREREQDATA.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PREREQFUNCTION.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PRE_PROXY.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PRIVATE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PROGRESSDATA.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PROGRESSFUNCTION.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PROTOCOLS.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PROTOCOLS_STR.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PROXY.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PROXYAUTH.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PROXYHEADER.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PROXYPASSWORD.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PROXYPORT.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PROXYTYPE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PROXYUSERNAME.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PROXYUSERPWD.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PROXY_CAINFO.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PROXY_CAINFO_BLOB.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PROXY_CAPATH.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PROXY_CRLFILE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PROXY_ISSUERCERT.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PROXY_ISSUERCERT_BLOB.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PROXY_KEYPASSWD.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PROXY_PINNEDPUBLICKEY.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PROXY_SERVICE_NAME.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLCERT.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLCERTTYPE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLCERT_BLOB.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLKEY.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLKEYTYPE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLKEY_BLOB.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PROXY_SSLVERSION.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_CIPHER_LIST.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_OPTIONS.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYHOST.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PROXY_SSL_VERIFYPEER.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PROXY_TLS13_CIPHERS.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_PASSWORD.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_TYPE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PROXY_TLSAUTH_USERNAME.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PROXY_TRANSFER_MODE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_PUT.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_QUOTE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_RANDOM_FILE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_RANGE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_READDATA.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_READFUNCTION.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_REDIR_PROTOCOLS_STR.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_REFERER.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_REQUEST_TARGET.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_RESOLVE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_RESOLVER_START_DATA.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_RESOLVER_START_FUNCTION.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_RESUME_FROM.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_RESUME_FROM_LARGE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_RTSP_CLIENT_CSEQ.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_RTSP_REQUEST.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_RTSP_SERVER_CSEQ.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_RTSP_SESSION_ID.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_RTSP_STREAM_URI.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_RTSP_TRANSPORT.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SASL_AUTHZID.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SASL_IR.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SEEKDATA.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SEEKFUNCTION.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SERVER_RESPONSE_TIMEOUT.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SERVICE_NAME.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SHARE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SOCKOPTDATA.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SOCKOPTFUNCTION.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SOCKS5_AUTH.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_NEC.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SOCKS5_GSSAPI_SERVICE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SSH_AUTH_TYPES.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SSH_COMPRESSION.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SSH_HOSTKEYDATA.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SSH_HOSTKEYFUNCTION.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SSH_KEYDATA.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SSH_KEYFUNCTION.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SSH_KNOWNHOSTS.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SSH_PRIVATE_KEYFILE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SSH_PUBLIC_KEYFILE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SSLCERT.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SSLCERTTYPE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SSLCERT_BLOB.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SSLENGINE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SSLENGINE_DEFAULT.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SSLKEY.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SSLKEYTYPE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SSLKEY_BLOB.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SSLVERSION.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SSL_CIPHER_LIST.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SSL_CTX_DATA.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SSL_CTX_FUNCTION.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SSL_EC_CURVES.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SSL_ENABLE_ALPN.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SSL_ENABLE_NPN.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SSL_FALSESTART.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SSL_OPTIONS.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SSL_SESSIONID_CACHE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYHOST.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYPEER.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SSL_VERIFYSTATUS.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_STDERR.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_STREAM_DEPENDS_E.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_STREAM_WEIGHT.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_SUPPRESS_CONNECT_HEADERS.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_TCP_FASTOPEN.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPALIVE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPIDLE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_TCP_KEEPINTVL.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_TCP_NODELAY.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_TELNETOPTIONS.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_TFTP_BLKSIZE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_TFTP_NO_OPTIONS.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_TIMECONDITION.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_TIMEOUT.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_TIMEOUT_MS.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_TIMEVALUE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_TIMEVALUE_LARGE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_TLS13_CIPHERS.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_PASSWORD.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_TYPE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_TLSAUTH_USERNAME.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_TRAILERDATA.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_TRAILERFUNCTION.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_TRANSFERTEXT.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_TRANSFER_ENCODING.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_UNIX_SOCKET_PATH.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_UNRESTRICTED_AUTH.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_UPKEEP_INTERVAL_MS.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_UPLOAD.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_UPLOAD_BUFFERSIZE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_URL.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_USERAGENT.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_USERNAME.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_USERPWD.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_USE_SSL.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_VERBOSE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_WILDCARDMATCH.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_WRITEDATA.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_XFERINFODATA.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_XFERINFOFUNCTION.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLOPT_XOAUTH2_BEARER.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLSHOPT_LOCKFUNC.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLSHOPT_SHARE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLSHOPT_UNLOCKFUNC.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLSHOPT_UNSHARE.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/CURLSHOPT_USERDATA.3 delete mode 100644 Engine/lib/curl/docs/libcurl/opts/Makefile.am delete mode 100644 Engine/lib/curl/docs/libcurl/opts/Makefile.in delete mode 100644 Engine/lib/curl/docs/libcurl/opts/Makefile.inc delete mode 100644 Engine/lib/curl/docs/libcurl/symbols-in-versions delete mode 100755 Engine/lib/curl/docs/libcurl/symbols.pl delete mode 100644 Engine/lib/curl/docs/mk-ca-bundle.1 delete mode 100644 Engine/lib/curl/docs/options-in-versions delete mode 100644 Engine/lib/curl/include/Makefile.am delete mode 100644 Engine/lib/curl/include/Makefile.in delete mode 100644 Engine/lib/curl/include/README.md delete mode 100644 Engine/lib/curl/include/curl/Makefile.am delete mode 100644 Engine/lib/curl/include/curl/Makefile.in delete mode 100644 Engine/lib/curl/include/curl/curl.h delete mode 100644 Engine/lib/curl/include/curl/curlver.h delete mode 100644 Engine/lib/curl/include/curl/easy.h delete mode 100644 Engine/lib/curl/include/curl/header.h delete mode 100644 Engine/lib/curl/include/curl/mprintf.h delete mode 100644 Engine/lib/curl/include/curl/multi.h delete mode 100644 Engine/lib/curl/include/curl/options.h delete mode 100644 Engine/lib/curl/include/curl/stdcheaders.h delete mode 100644 Engine/lib/curl/include/curl/system.h delete mode 100644 Engine/lib/curl/include/curl/typecheck-gcc.h delete mode 100644 Engine/lib/curl/include/curl/urlapi.h delete mode 100755 Engine/lib/curl/install-sh delete mode 100644 Engine/lib/curl/lib/.checksrc delete mode 100644 Engine/lib/curl/lib/CMakeLists.txt delete mode 100644 Engine/lib/curl/lib/Makefile.am delete mode 100644 Engine/lib/curl/lib/Makefile.in delete mode 100644 Engine/lib/curl/lib/Makefile.inc delete mode 100644 Engine/lib/curl/lib/Makefile.m32 delete mode 100644 Engine/lib/curl/lib/altsvc.c delete mode 100644 Engine/lib/curl/lib/altsvc.h delete mode 100644 Engine/lib/curl/lib/amigaos.c delete mode 100644 Engine/lib/curl/lib/amigaos.h delete mode 100644 Engine/lib/curl/lib/arpa_telnet.h delete mode 100644 Engine/lib/curl/lib/asyn-ares.c delete mode 100644 Engine/lib/curl/lib/asyn-thread.c delete mode 100644 Engine/lib/curl/lib/asyn.h delete mode 100644 Engine/lib/curl/lib/base64.c delete mode 100644 Engine/lib/curl/lib/bufref.c delete mode 100644 Engine/lib/curl/lib/bufref.h delete mode 100644 Engine/lib/curl/lib/c-hyper.c delete mode 100644 Engine/lib/curl/lib/c-hyper.h delete mode 100644 Engine/lib/curl/lib/config-amigaos.h delete mode 100644 Engine/lib/curl/lib/config-dos.h delete mode 100644 Engine/lib/curl/lib/config-mac.h delete mode 100644 Engine/lib/curl/lib/config-os400.h delete mode 100644 Engine/lib/curl/lib/config-plan9.h delete mode 100644 Engine/lib/curl/lib/config-riscos.h delete mode 100644 Engine/lib/curl/lib/config-win32.h delete mode 100644 Engine/lib/curl/lib/config-win32ce.h delete mode 100644 Engine/lib/curl/lib/conncache.c delete mode 100644 Engine/lib/curl/lib/conncache.h delete mode 100644 Engine/lib/curl/lib/connect.c delete mode 100644 Engine/lib/curl/lib/connect.h delete mode 100644 Engine/lib/curl/lib/content_encoding.c delete mode 100644 Engine/lib/curl/lib/content_encoding.h delete mode 100644 Engine/lib/curl/lib/cookie.c delete mode 100644 Engine/lib/curl/lib/cookie.h delete mode 100644 Engine/lib/curl/lib/curl_addrinfo.c delete mode 100644 Engine/lib/curl/lib/curl_addrinfo.h delete mode 100644 Engine/lib/curl/lib/curl_base64.h delete mode 100644 Engine/lib/curl/lib/curl_config.h.cmake delete mode 100644 Engine/lib/curl/lib/curl_config.h.in delete mode 100644 Engine/lib/curl/lib/curl_ctype.c delete mode 100644 Engine/lib/curl/lib/curl_ctype.h delete mode 100644 Engine/lib/curl/lib/curl_des.c delete mode 100644 Engine/lib/curl/lib/curl_des.h delete mode 100644 Engine/lib/curl/lib/curl_endian.c delete mode 100644 Engine/lib/curl/lib/curl_endian.h delete mode 100644 Engine/lib/curl/lib/curl_fnmatch.c delete mode 100644 Engine/lib/curl/lib/curl_fnmatch.h delete mode 100644 Engine/lib/curl/lib/curl_get_line.c delete mode 100644 Engine/lib/curl/lib/curl_get_line.h delete mode 100644 Engine/lib/curl/lib/curl_gethostname.c delete mode 100644 Engine/lib/curl/lib/curl_gethostname.h delete mode 100644 Engine/lib/curl/lib/curl_gssapi.c delete mode 100644 Engine/lib/curl/lib/curl_gssapi.h delete mode 100644 Engine/lib/curl/lib/curl_hmac.h delete mode 100644 Engine/lib/curl/lib/curl_krb5.h delete mode 100644 Engine/lib/curl/lib/curl_ldap.h delete mode 100644 Engine/lib/curl/lib/curl_md4.h delete mode 100644 Engine/lib/curl/lib/curl_md5.h delete mode 100644 Engine/lib/curl/lib/curl_memory.h delete mode 100644 Engine/lib/curl/lib/curl_memrchr.c delete mode 100644 Engine/lib/curl/lib/curl_memrchr.h delete mode 100644 Engine/lib/curl/lib/curl_multibyte.c delete mode 100644 Engine/lib/curl/lib/curl_multibyte.h delete mode 100644 Engine/lib/curl/lib/curl_ntlm_core.c delete mode 100644 Engine/lib/curl/lib/curl_ntlm_core.h delete mode 100644 Engine/lib/curl/lib/curl_ntlm_wb.c delete mode 100644 Engine/lib/curl/lib/curl_ntlm_wb.h delete mode 100644 Engine/lib/curl/lib/curl_path.c delete mode 100644 Engine/lib/curl/lib/curl_path.h delete mode 100644 Engine/lib/curl/lib/curl_printf.h delete mode 100644 Engine/lib/curl/lib/curl_range.c delete mode 100644 Engine/lib/curl/lib/curl_range.h delete mode 100644 Engine/lib/curl/lib/curl_rtmp.c delete mode 100644 Engine/lib/curl/lib/curl_rtmp.h delete mode 100644 Engine/lib/curl/lib/curl_sasl.c delete mode 100644 Engine/lib/curl/lib/curl_sasl.h delete mode 100644 Engine/lib/curl/lib/curl_setup.h delete mode 100644 Engine/lib/curl/lib/curl_setup_once.h delete mode 100644 Engine/lib/curl/lib/curl_sha256.h delete mode 100644 Engine/lib/curl/lib/curl_sspi.c delete mode 100644 Engine/lib/curl/lib/curl_sspi.h delete mode 100644 Engine/lib/curl/lib/curl_threads.c delete mode 100644 Engine/lib/curl/lib/curl_threads.h delete mode 100644 Engine/lib/curl/lib/curlx.h delete mode 100644 Engine/lib/curl/lib/dict.c delete mode 100644 Engine/lib/curl/lib/dict.h delete mode 100644 Engine/lib/curl/lib/doh.c delete mode 100644 Engine/lib/curl/lib/doh.h delete mode 100644 Engine/lib/curl/lib/dotdot.c delete mode 100644 Engine/lib/curl/lib/dotdot.h delete mode 100644 Engine/lib/curl/lib/dynbuf.c delete mode 100644 Engine/lib/curl/lib/dynbuf.h delete mode 100644 Engine/lib/curl/lib/easy.c delete mode 100644 Engine/lib/curl/lib/easy_lock.h delete mode 100644 Engine/lib/curl/lib/easygetopt.c delete mode 100644 Engine/lib/curl/lib/easyif.h delete mode 100644 Engine/lib/curl/lib/easyoptions.c delete mode 100644 Engine/lib/curl/lib/easyoptions.h delete mode 100644 Engine/lib/curl/lib/escape.c delete mode 100644 Engine/lib/curl/lib/escape.h delete mode 100644 Engine/lib/curl/lib/file.c delete mode 100644 Engine/lib/curl/lib/file.h delete mode 100644 Engine/lib/curl/lib/fileinfo.c delete mode 100644 Engine/lib/curl/lib/fileinfo.h delete mode 100644 Engine/lib/curl/lib/fopen.c delete mode 100644 Engine/lib/curl/lib/fopen.h delete mode 100644 Engine/lib/curl/lib/formdata.c delete mode 100644 Engine/lib/curl/lib/formdata.h delete mode 100644 Engine/lib/curl/lib/ftp.c delete mode 100644 Engine/lib/curl/lib/ftp.h delete mode 100644 Engine/lib/curl/lib/ftplistparser.c delete mode 100644 Engine/lib/curl/lib/ftplistparser.h delete mode 100644 Engine/lib/curl/lib/getenv.c delete mode 100644 Engine/lib/curl/lib/getinfo.c delete mode 100644 Engine/lib/curl/lib/getinfo.h delete mode 100644 Engine/lib/curl/lib/gopher.c delete mode 100644 Engine/lib/curl/lib/gopher.h delete mode 100644 Engine/lib/curl/lib/h2h3.c delete mode 100644 Engine/lib/curl/lib/h2h3.h delete mode 100644 Engine/lib/curl/lib/hash.c delete mode 100644 Engine/lib/curl/lib/hash.h delete mode 100644 Engine/lib/curl/lib/headers.c delete mode 100644 Engine/lib/curl/lib/headers.h delete mode 100644 Engine/lib/curl/lib/hmac.c delete mode 100644 Engine/lib/curl/lib/hostasyn.c delete mode 100644 Engine/lib/curl/lib/hostip.c delete mode 100644 Engine/lib/curl/lib/hostip.h delete mode 100644 Engine/lib/curl/lib/hostip4.c delete mode 100644 Engine/lib/curl/lib/hostip6.c delete mode 100644 Engine/lib/curl/lib/hostsyn.c delete mode 100644 Engine/lib/curl/lib/hsts.c delete mode 100644 Engine/lib/curl/lib/hsts.h delete mode 100644 Engine/lib/curl/lib/http.c delete mode 100644 Engine/lib/curl/lib/http.h delete mode 100644 Engine/lib/curl/lib/http2.c delete mode 100644 Engine/lib/curl/lib/http2.h delete mode 100644 Engine/lib/curl/lib/http_aws_sigv4.c delete mode 100644 Engine/lib/curl/lib/http_aws_sigv4.h delete mode 100644 Engine/lib/curl/lib/http_chunks.c delete mode 100644 Engine/lib/curl/lib/http_chunks.h delete mode 100644 Engine/lib/curl/lib/http_digest.c delete mode 100644 Engine/lib/curl/lib/http_digest.h delete mode 100644 Engine/lib/curl/lib/http_negotiate.c delete mode 100644 Engine/lib/curl/lib/http_negotiate.h delete mode 100644 Engine/lib/curl/lib/http_ntlm.c delete mode 100644 Engine/lib/curl/lib/http_ntlm.h delete mode 100644 Engine/lib/curl/lib/http_proxy.c delete mode 100644 Engine/lib/curl/lib/http_proxy.h delete mode 100644 Engine/lib/curl/lib/idn_win32.c delete mode 100644 Engine/lib/curl/lib/if2ip.c delete mode 100644 Engine/lib/curl/lib/if2ip.h delete mode 100644 Engine/lib/curl/lib/imap.c delete mode 100644 Engine/lib/curl/lib/imap.h delete mode 100644 Engine/lib/curl/lib/inet_ntop.c delete mode 100644 Engine/lib/curl/lib/inet_ntop.h delete mode 100644 Engine/lib/curl/lib/inet_pton.c delete mode 100644 Engine/lib/curl/lib/inet_pton.h delete mode 100644 Engine/lib/curl/lib/krb5.c delete mode 100644 Engine/lib/curl/lib/ldap.c delete mode 100644 Engine/lib/curl/lib/libcurl.plist delete mode 100644 Engine/lib/curl/lib/libcurl.plist.in delete mode 100644 Engine/lib/curl/lib/libcurl.rc delete mode 100644 Engine/lib/curl/lib/libcurl.vers.in delete mode 100644 Engine/lib/curl/lib/llist.c delete mode 100644 Engine/lib/curl/lib/llist.h delete mode 100644 Engine/lib/curl/lib/makefile.amiga delete mode 100644 Engine/lib/curl/lib/makefile.dj delete mode 100644 Engine/lib/curl/lib/md4.c delete mode 100644 Engine/lib/curl/lib/md5.c delete mode 100644 Engine/lib/curl/lib/memdebug.c delete mode 100644 Engine/lib/curl/lib/memdebug.h delete mode 100644 Engine/lib/curl/lib/mime.c delete mode 100644 Engine/lib/curl/lib/mime.h delete mode 100644 Engine/lib/curl/lib/mprintf.c delete mode 100644 Engine/lib/curl/lib/mqtt.c delete mode 100644 Engine/lib/curl/lib/mqtt.h delete mode 100644 Engine/lib/curl/lib/multi.c delete mode 100644 Engine/lib/curl/lib/multihandle.h delete mode 100644 Engine/lib/curl/lib/multiif.h delete mode 100644 Engine/lib/curl/lib/netrc.c delete mode 100644 Engine/lib/curl/lib/netrc.h delete mode 100644 Engine/lib/curl/lib/nonblock.c delete mode 100644 Engine/lib/curl/lib/nonblock.h delete mode 100644 Engine/lib/curl/lib/openldap.c delete mode 100644 Engine/lib/curl/lib/parsedate.c delete mode 100644 Engine/lib/curl/lib/parsedate.h delete mode 100644 Engine/lib/curl/lib/pingpong.c delete mode 100644 Engine/lib/curl/lib/pingpong.h delete mode 100644 Engine/lib/curl/lib/pop3.c delete mode 100644 Engine/lib/curl/lib/pop3.h delete mode 100644 Engine/lib/curl/lib/progress.c delete mode 100644 Engine/lib/curl/lib/progress.h delete mode 100644 Engine/lib/curl/lib/psl.c delete mode 100644 Engine/lib/curl/lib/psl.h delete mode 100644 Engine/lib/curl/lib/quic.h delete mode 100644 Engine/lib/curl/lib/rand.c delete mode 100644 Engine/lib/curl/lib/rand.h delete mode 100644 Engine/lib/curl/lib/rename.c delete mode 100644 Engine/lib/curl/lib/rename.h delete mode 100644 Engine/lib/curl/lib/rtsp.c delete mode 100644 Engine/lib/curl/lib/rtsp.h delete mode 100644 Engine/lib/curl/lib/select.c delete mode 100644 Engine/lib/curl/lib/select.h delete mode 100644 Engine/lib/curl/lib/sendf.c delete mode 100644 Engine/lib/curl/lib/sendf.h delete mode 100644 Engine/lib/curl/lib/setopt.c delete mode 100644 Engine/lib/curl/lib/setopt.h delete mode 100644 Engine/lib/curl/lib/setup-os400.h delete mode 100644 Engine/lib/curl/lib/setup-vms.h delete mode 100644 Engine/lib/curl/lib/setup-win32.h delete mode 100644 Engine/lib/curl/lib/sha256.c delete mode 100644 Engine/lib/curl/lib/share.c delete mode 100644 Engine/lib/curl/lib/share.h delete mode 100644 Engine/lib/curl/lib/sigpipe.h delete mode 100644 Engine/lib/curl/lib/slist.c delete mode 100644 Engine/lib/curl/lib/slist.h delete mode 100644 Engine/lib/curl/lib/smb.c delete mode 100644 Engine/lib/curl/lib/smb.h delete mode 100644 Engine/lib/curl/lib/smtp.c delete mode 100644 Engine/lib/curl/lib/smtp.h delete mode 100644 Engine/lib/curl/lib/sockaddr.h delete mode 100644 Engine/lib/curl/lib/socketpair.c delete mode 100644 Engine/lib/curl/lib/socketpair.h delete mode 100644 Engine/lib/curl/lib/socks.c delete mode 100644 Engine/lib/curl/lib/socks.h delete mode 100644 Engine/lib/curl/lib/socks_gssapi.c delete mode 100644 Engine/lib/curl/lib/socks_sspi.c delete mode 100644 Engine/lib/curl/lib/speedcheck.c delete mode 100644 Engine/lib/curl/lib/speedcheck.h delete mode 100644 Engine/lib/curl/lib/splay.c delete mode 100644 Engine/lib/curl/lib/splay.h delete mode 100644 Engine/lib/curl/lib/strcase.c delete mode 100644 Engine/lib/curl/lib/strcase.h delete mode 100644 Engine/lib/curl/lib/strdup.c delete mode 100644 Engine/lib/curl/lib/strdup.h delete mode 100644 Engine/lib/curl/lib/strerror.c delete mode 100644 Engine/lib/curl/lib/strerror.h delete mode 100644 Engine/lib/curl/lib/strtok.c delete mode 100644 Engine/lib/curl/lib/strtok.h delete mode 100644 Engine/lib/curl/lib/strtoofft.c delete mode 100644 Engine/lib/curl/lib/strtoofft.h delete mode 100644 Engine/lib/curl/lib/system_win32.c delete mode 100644 Engine/lib/curl/lib/system_win32.h delete mode 100644 Engine/lib/curl/lib/telnet.c delete mode 100644 Engine/lib/curl/lib/telnet.h delete mode 100644 Engine/lib/curl/lib/tftp.c delete mode 100644 Engine/lib/curl/lib/tftp.h delete mode 100644 Engine/lib/curl/lib/timediff.c delete mode 100644 Engine/lib/curl/lib/timediff.h delete mode 100644 Engine/lib/curl/lib/timeval.c delete mode 100644 Engine/lib/curl/lib/timeval.h delete mode 100644 Engine/lib/curl/lib/transfer.c delete mode 100644 Engine/lib/curl/lib/transfer.h delete mode 100644 Engine/lib/curl/lib/url.c delete mode 100644 Engine/lib/curl/lib/url.h delete mode 100644 Engine/lib/curl/lib/urlapi-int.h delete mode 100644 Engine/lib/curl/lib/urlapi.c delete mode 100644 Engine/lib/curl/lib/urldata.h delete mode 100644 Engine/lib/curl/lib/vauth/cleartext.c delete mode 100644 Engine/lib/curl/lib/vauth/cram.c delete mode 100644 Engine/lib/curl/lib/vauth/digest.c delete mode 100644 Engine/lib/curl/lib/vauth/digest.h delete mode 100644 Engine/lib/curl/lib/vauth/digest_sspi.c delete mode 100644 Engine/lib/curl/lib/vauth/gsasl.c delete mode 100644 Engine/lib/curl/lib/vauth/krb5_gssapi.c delete mode 100644 Engine/lib/curl/lib/vauth/krb5_sspi.c delete mode 100644 Engine/lib/curl/lib/vauth/ntlm.c delete mode 100644 Engine/lib/curl/lib/vauth/ntlm.h delete mode 100644 Engine/lib/curl/lib/vauth/ntlm_sspi.c delete mode 100644 Engine/lib/curl/lib/vauth/oauth2.c delete mode 100644 Engine/lib/curl/lib/vauth/spnego_gssapi.c delete mode 100644 Engine/lib/curl/lib/vauth/spnego_sspi.c delete mode 100644 Engine/lib/curl/lib/vauth/vauth.c delete mode 100644 Engine/lib/curl/lib/vauth/vauth.h delete mode 100644 Engine/lib/curl/lib/version.c delete mode 100644 Engine/lib/curl/lib/version_win32.c delete mode 100644 Engine/lib/curl/lib/version_win32.h delete mode 100644 Engine/lib/curl/lib/vquic/msh3.c delete mode 100644 Engine/lib/curl/lib/vquic/msh3.h delete mode 100644 Engine/lib/curl/lib/vquic/ngtcp2.c delete mode 100644 Engine/lib/curl/lib/vquic/ngtcp2.h delete mode 100644 Engine/lib/curl/lib/vquic/quiche.c delete mode 100644 Engine/lib/curl/lib/vquic/quiche.h delete mode 100644 Engine/lib/curl/lib/vquic/vquic.c delete mode 100644 Engine/lib/curl/lib/vquic/vquic.h delete mode 100644 Engine/lib/curl/lib/vssh/libssh.c delete mode 100644 Engine/lib/curl/lib/vssh/libssh2.c delete mode 100644 Engine/lib/curl/lib/vssh/ssh.h delete mode 100644 Engine/lib/curl/lib/vssh/wolfssh.c delete mode 100644 Engine/lib/curl/lib/vtls/bearssl.c delete mode 100644 Engine/lib/curl/lib/vtls/bearssl.h delete mode 100644 Engine/lib/curl/lib/vtls/gskit.c delete mode 100644 Engine/lib/curl/lib/vtls/gskit.h delete mode 100644 Engine/lib/curl/lib/vtls/gtls.c delete mode 100644 Engine/lib/curl/lib/vtls/gtls.h delete mode 100644 Engine/lib/curl/lib/vtls/hostcheck.c delete mode 100644 Engine/lib/curl/lib/vtls/hostcheck.h delete mode 100644 Engine/lib/curl/lib/vtls/keylog.c delete mode 100644 Engine/lib/curl/lib/vtls/keylog.h delete mode 100644 Engine/lib/curl/lib/vtls/mbedtls.c delete mode 100644 Engine/lib/curl/lib/vtls/mbedtls.h delete mode 100644 Engine/lib/curl/lib/vtls/mbedtls_threadlock.c delete mode 100644 Engine/lib/curl/lib/vtls/mbedtls_threadlock.h delete mode 100644 Engine/lib/curl/lib/vtls/nss.c delete mode 100644 Engine/lib/curl/lib/vtls/nssg.h delete mode 100644 Engine/lib/curl/lib/vtls/openssl.c delete mode 100644 Engine/lib/curl/lib/vtls/openssl.h delete mode 100644 Engine/lib/curl/lib/vtls/rustls.c delete mode 100644 Engine/lib/curl/lib/vtls/rustls.h delete mode 100644 Engine/lib/curl/lib/vtls/schannel.c delete mode 100644 Engine/lib/curl/lib/vtls/schannel.h delete mode 100644 Engine/lib/curl/lib/vtls/schannel_verify.c delete mode 100644 Engine/lib/curl/lib/vtls/sectransp.c delete mode 100644 Engine/lib/curl/lib/vtls/sectransp.h delete mode 100644 Engine/lib/curl/lib/vtls/vtls.c delete mode 100644 Engine/lib/curl/lib/vtls/vtls.h delete mode 100644 Engine/lib/curl/lib/vtls/wolfssl.c delete mode 100644 Engine/lib/curl/lib/vtls/wolfssl.h delete mode 100644 Engine/lib/curl/lib/vtls/x509asn1.c delete mode 100644 Engine/lib/curl/lib/vtls/x509asn1.h delete mode 100644 Engine/lib/curl/lib/warnless.c delete mode 100644 Engine/lib/curl/lib/warnless.h delete mode 100644 Engine/lib/curl/lib/wildcard.c delete mode 100644 Engine/lib/curl/lib/wildcard.h delete mode 100644 Engine/lib/curl/libcurl.pc.in delete mode 100755 Engine/lib/curl/ltmain.sh delete mode 100644 Engine/lib/curl/m4/curl-amissl.m4 delete mode 100644 Engine/lib/curl/m4/curl-bearssl.m4 delete mode 100644 Engine/lib/curl/m4/curl-compilers.m4 delete mode 100644 Engine/lib/curl/m4/curl-confopts.m4 delete mode 100644 Engine/lib/curl/m4/curl-functions.m4 delete mode 100644 Engine/lib/curl/m4/curl-gnutls.m4 delete mode 100644 Engine/lib/curl/m4/curl-mbedtls.m4 delete mode 100644 Engine/lib/curl/m4/curl-nss.m4 delete mode 100644 Engine/lib/curl/m4/curl-openssl.m4 delete mode 100644 Engine/lib/curl/m4/curl-override.m4 delete mode 100644 Engine/lib/curl/m4/curl-reentrant.m4 delete mode 100644 Engine/lib/curl/m4/curl-rustls.m4 delete mode 100644 Engine/lib/curl/m4/curl-schannel.m4 delete mode 100644 Engine/lib/curl/m4/curl-sectransp.m4 delete mode 100644 Engine/lib/curl/m4/curl-sysconfig.m4 delete mode 100644 Engine/lib/curl/m4/curl-wolfssl.m4 delete mode 100644 Engine/lib/curl/m4/libtool.m4 delete mode 100644 Engine/lib/curl/m4/ltoptions.m4 delete mode 100644 Engine/lib/curl/m4/ltsugar.m4 delete mode 100644 Engine/lib/curl/m4/ltversion.m4 delete mode 100644 Engine/lib/curl/m4/lt~obsolete.m4 delete mode 100644 Engine/lib/curl/m4/xc-am-iface.m4 delete mode 100644 Engine/lib/curl/m4/xc-cc-check.m4 delete mode 100644 Engine/lib/curl/m4/xc-lt-iface.m4 delete mode 100644 Engine/lib/curl/m4/xc-translit.m4 delete mode 100644 Engine/lib/curl/m4/xc-val-flgs.m4 delete mode 100644 Engine/lib/curl/m4/zz40-xc-ovr.m4 delete mode 100644 Engine/lib/curl/m4/zz50-xc-ovr.m4 delete mode 100644 Engine/lib/curl/m4/zz60-xc-ovr.m4 delete mode 100755 Engine/lib/curl/maketgz delete mode 100755 Engine/lib/curl/missing delete mode 100644 Engine/lib/curl/packages/Android/Android.mk delete mode 100644 Engine/lib/curl/packages/DOS/README delete mode 100644 Engine/lib/curl/packages/DOS/common.dj delete mode 100644 Engine/lib/curl/packages/Makefile.am delete mode 100644 Engine/lib/curl/packages/Makefile.in delete mode 100644 Engine/lib/curl/packages/OS400/README.OS400 delete mode 100644 Engine/lib/curl/packages/OS400/ccsidcurl.c delete mode 100644 Engine/lib/curl/packages/OS400/ccsidcurl.h delete mode 100644 Engine/lib/curl/packages/OS400/chkstrings.c delete mode 100644 Engine/lib/curl/packages/OS400/curl.inc.in delete mode 100644 Engine/lib/curl/packages/OS400/initscript.sh delete mode 100644 Engine/lib/curl/packages/OS400/make-include.sh delete mode 100644 Engine/lib/curl/packages/OS400/make-lib.sh delete mode 100644 Engine/lib/curl/packages/OS400/make-src.sh delete mode 100644 Engine/lib/curl/packages/OS400/make-tests.sh delete mode 100644 Engine/lib/curl/packages/OS400/makefile.sh delete mode 100644 Engine/lib/curl/packages/OS400/os400sys.c delete mode 100644 Engine/lib/curl/packages/OS400/os400sys.h delete mode 100644 Engine/lib/curl/packages/README delete mode 100644 Engine/lib/curl/packages/vms/Makefile.am delete mode 100644 Engine/lib/curl/packages/vms/Makefile.in delete mode 100644 Engine/lib/curl/packages/vms/backup_gnv_curl_src.com delete mode 100644 Engine/lib/curl/packages/vms/build_curl-config_script.com delete mode 100644 Engine/lib/curl/packages/vms/build_gnv_curl.com delete mode 100644 Engine/lib/curl/packages/vms/build_gnv_curl_pcsi_desc.com delete mode 100644 Engine/lib/curl/packages/vms/build_gnv_curl_pcsi_text.com delete mode 100644 Engine/lib/curl/packages/vms/build_gnv_curl_release_notes.com delete mode 100644 Engine/lib/curl/packages/vms/build_libcurl_pc.com delete mode 100644 Engine/lib/curl/packages/vms/build_vms.com delete mode 100644 Engine/lib/curl/packages/vms/clean_gnv_curl.com delete mode 100644 Engine/lib/curl/packages/vms/compare_curl_source.com delete mode 100644 Engine/lib/curl/packages/vms/config_h.com delete mode 100644 Engine/lib/curl/packages/vms/curl_crtl_init.c delete mode 100644 Engine/lib/curl/packages/vms/curl_gnv_build_steps.txt delete mode 100644 Engine/lib/curl/packages/vms/curl_release_note_start.txt delete mode 100644 Engine/lib/curl/packages/vms/curl_startup.com delete mode 100644 Engine/lib/curl/packages/vms/curlmsg.h delete mode 100644 Engine/lib/curl/packages/vms/curlmsg.msg delete mode 100644 Engine/lib/curl/packages/vms/curlmsg.sdl delete mode 100644 Engine/lib/curl/packages/vms/curlmsg_vms.h delete mode 100644 Engine/lib/curl/packages/vms/generate_config_vms_h_curl.com delete mode 100644 Engine/lib/curl/packages/vms/generate_vax_transfer.com delete mode 100644 Engine/lib/curl/packages/vms/gnv_conftest.c_first delete mode 100644 Engine/lib/curl/packages/vms/gnv_curl_configure.sh delete mode 100644 Engine/lib/curl/packages/vms/gnv_libcurl_symbols.opt delete mode 100644 Engine/lib/curl/packages/vms/gnv_link_curl.com delete mode 100644 Engine/lib/curl/packages/vms/macro32_exactcase.patch delete mode 100644 Engine/lib/curl/packages/vms/make_gnv_curl_install.sh delete mode 100644 Engine/lib/curl/packages/vms/make_pcsi_curl_kit_name.com delete mode 100644 Engine/lib/curl/packages/vms/pcsi_gnv_curl_file_list.txt delete mode 100644 Engine/lib/curl/packages/vms/pcsi_product_gnv_curl.com delete mode 100644 Engine/lib/curl/packages/vms/readme delete mode 100644 Engine/lib/curl/packages/vms/report_openssl_version.c delete mode 100644 Engine/lib/curl/packages/vms/setup_gnv_curl_build.com delete mode 100644 Engine/lib/curl/packages/vms/stage_curl_install.com delete mode 100644 Engine/lib/curl/packages/vms/vms_eco_level.h delete mode 100644 Engine/lib/curl/plan9/README delete mode 100644 Engine/lib/curl/plan9/include/mkfile delete mode 100644 Engine/lib/curl/plan9/lib/mkfile delete mode 100755 Engine/lib/curl/plan9/lib/mkfile.inc delete mode 100644 Engine/lib/curl/plan9/mkfile delete mode 100644 Engine/lib/curl/plan9/mkfile.proto delete mode 100644 Engine/lib/curl/plan9/src/mkfile delete mode 100755 Engine/lib/curl/plan9/src/mkfile.inc delete mode 100644 Engine/lib/curl/projects/README.md delete mode 100644 Engine/lib/curl/projects/build-openssl.bat delete mode 100644 Engine/lib/curl/projects/build-wolfssl.bat delete mode 100644 Engine/lib/curl/projects/checksrc.bat delete mode 100644 Engine/lib/curl/projects/generate.bat delete mode 100644 Engine/lib/curl/projects/wolfssl_options.h delete mode 100644 Engine/lib/curl/projects/wolfssl_override.props delete mode 100644 Engine/lib/curl/scripts/Makefile.am delete mode 100644 Engine/lib/curl/scripts/Makefile.in delete mode 100755 Engine/lib/curl/scripts/checksrc.pl delete mode 100755 Engine/lib/curl/scripts/completion.pl delete mode 100755 Engine/lib/curl/scripts/coverage.sh delete mode 100755 Engine/lib/curl/scripts/firefox-db2pem.sh delete mode 100755 Engine/lib/curl/scripts/mk-ca-bundle.pl delete mode 100755 Engine/lib/curl/scripts/updatemanpages.pl delete mode 100644 Engine/lib/curl/src/CMakeLists.txt delete mode 100644 Engine/lib/curl/src/Makefile.am delete mode 100644 Engine/lib/curl/src/Makefile.in delete mode 100644 Engine/lib/curl/src/Makefile.inc delete mode 100644 Engine/lib/curl/src/Makefile.m32 delete mode 100644 Engine/lib/curl/src/curl.rc delete mode 100644 Engine/lib/curl/src/makefile.amiga delete mode 100644 Engine/lib/curl/src/makefile.dj delete mode 100755 Engine/lib/curl/src/mkhelp.pl delete mode 100644 Engine/lib/curl/src/slist_wc.c delete mode 100644 Engine/lib/curl/src/slist_wc.h delete mode 100644 Engine/lib/curl/src/tool_binmode.c delete mode 100644 Engine/lib/curl/src/tool_binmode.h delete mode 100644 Engine/lib/curl/src/tool_bname.c delete mode 100644 Engine/lib/curl/src/tool_bname.h delete mode 100644 Engine/lib/curl/src/tool_cb_dbg.c delete mode 100644 Engine/lib/curl/src/tool_cb_dbg.h delete mode 100644 Engine/lib/curl/src/tool_cb_hdr.c delete mode 100644 Engine/lib/curl/src/tool_cb_hdr.h delete mode 100644 Engine/lib/curl/src/tool_cb_prg.c delete mode 100644 Engine/lib/curl/src/tool_cb_prg.h delete mode 100644 Engine/lib/curl/src/tool_cb_rea.c delete mode 100644 Engine/lib/curl/src/tool_cb_rea.h delete mode 100644 Engine/lib/curl/src/tool_cb_see.c delete mode 100644 Engine/lib/curl/src/tool_cb_see.h delete mode 100644 Engine/lib/curl/src/tool_cb_wrt.c delete mode 100644 Engine/lib/curl/src/tool_cb_wrt.h delete mode 100644 Engine/lib/curl/src/tool_cfgable.c delete mode 100644 Engine/lib/curl/src/tool_cfgable.h delete mode 100644 Engine/lib/curl/src/tool_dirhie.c delete mode 100644 Engine/lib/curl/src/tool_dirhie.h delete mode 100644 Engine/lib/curl/src/tool_doswin.c delete mode 100644 Engine/lib/curl/src/tool_doswin.h delete mode 100644 Engine/lib/curl/src/tool_easysrc.c delete mode 100644 Engine/lib/curl/src/tool_easysrc.h delete mode 100644 Engine/lib/curl/src/tool_filetime.c delete mode 100644 Engine/lib/curl/src/tool_filetime.h delete mode 100644 Engine/lib/curl/src/tool_findfile.c delete mode 100644 Engine/lib/curl/src/tool_findfile.h delete mode 100644 Engine/lib/curl/src/tool_formparse.c delete mode 100644 Engine/lib/curl/src/tool_formparse.h delete mode 100644 Engine/lib/curl/src/tool_getparam.c delete mode 100644 Engine/lib/curl/src/tool_getparam.h delete mode 100644 Engine/lib/curl/src/tool_getpass.c delete mode 100644 Engine/lib/curl/src/tool_getpass.h delete mode 100644 Engine/lib/curl/src/tool_help.c delete mode 100644 Engine/lib/curl/src/tool_help.h delete mode 100644 Engine/lib/curl/src/tool_helpers.c delete mode 100644 Engine/lib/curl/src/tool_helpers.h delete mode 100644 Engine/lib/curl/src/tool_hugehelp.c delete mode 100644 Engine/lib/curl/src/tool_hugehelp.h delete mode 100644 Engine/lib/curl/src/tool_libinfo.c delete mode 100644 Engine/lib/curl/src/tool_libinfo.h delete mode 100644 Engine/lib/curl/src/tool_listhelp.c delete mode 100644 Engine/lib/curl/src/tool_main.c delete mode 100644 Engine/lib/curl/src/tool_main.h delete mode 100644 Engine/lib/curl/src/tool_msgs.c delete mode 100644 Engine/lib/curl/src/tool_msgs.h delete mode 100644 Engine/lib/curl/src/tool_operate.c delete mode 100644 Engine/lib/curl/src/tool_operate.h delete mode 100644 Engine/lib/curl/src/tool_operhlp.c delete mode 100644 Engine/lib/curl/src/tool_operhlp.h delete mode 100644 Engine/lib/curl/src/tool_panykey.c delete mode 100644 Engine/lib/curl/src/tool_panykey.h delete mode 100644 Engine/lib/curl/src/tool_paramhlp.c delete mode 100644 Engine/lib/curl/src/tool_paramhlp.h delete mode 100644 Engine/lib/curl/src/tool_parsecfg.c delete mode 100644 Engine/lib/curl/src/tool_parsecfg.h delete mode 100644 Engine/lib/curl/src/tool_progress.c delete mode 100644 Engine/lib/curl/src/tool_progress.h delete mode 100644 Engine/lib/curl/src/tool_sdecls.h delete mode 100644 Engine/lib/curl/src/tool_setopt.c delete mode 100644 Engine/lib/curl/src/tool_setopt.h delete mode 100644 Engine/lib/curl/src/tool_setup.h delete mode 100644 Engine/lib/curl/src/tool_sleep.c delete mode 100644 Engine/lib/curl/src/tool_sleep.h delete mode 100644 Engine/lib/curl/src/tool_strdup.c delete mode 100644 Engine/lib/curl/src/tool_strdup.h delete mode 100644 Engine/lib/curl/src/tool_urlglob.c delete mode 100644 Engine/lib/curl/src/tool_urlglob.h delete mode 100644 Engine/lib/curl/src/tool_util.c delete mode 100644 Engine/lib/curl/src/tool_util.h delete mode 100644 Engine/lib/curl/src/tool_version.h delete mode 100644 Engine/lib/curl/src/tool_vms.c delete mode 100644 Engine/lib/curl/src/tool_vms.h delete mode 100644 Engine/lib/curl/src/tool_writeout.c delete mode 100644 Engine/lib/curl/src/tool_writeout.h delete mode 100644 Engine/lib/curl/src/tool_writeout_json.c delete mode 100644 Engine/lib/curl/src/tool_writeout_json.h delete mode 100644 Engine/lib/curl/src/tool_xattr.c delete mode 100644 Engine/lib/curl/src/tool_xattr.h delete mode 100755 Engine/lib/curl/test-driver delete mode 100644 Engine/lib/curl/tests/CMakeLists.txt delete mode 100644 Engine/lib/curl/tests/FILEFORMAT.md delete mode 100644 Engine/lib/curl/tests/Makefile.am delete mode 100644 Engine/lib/curl/tests/Makefile.in delete mode 100644 Engine/lib/curl/tests/README.md delete mode 100644 Engine/lib/curl/tests/appveyor.pm delete mode 100644 Engine/lib/curl/tests/azure.pm delete mode 100755 Engine/lib/curl/tests/badsymbols.pl delete mode 100644 Engine/lib/curl/tests/certs/EdelCurlRoot-ca.cacert delete mode 100644 Engine/lib/curl/tests/certs/EdelCurlRoot-ca.cnf delete mode 100644 Engine/lib/curl/tests/certs/EdelCurlRoot-ca.crt delete mode 100644 Engine/lib/curl/tests/certs/EdelCurlRoot-ca.csr delete mode 100644 Engine/lib/curl/tests/certs/EdelCurlRoot-ca.der delete mode 100644 Engine/lib/curl/tests/certs/EdelCurlRoot-ca.key delete mode 100644 Engine/lib/curl/tests/certs/EdelCurlRoot-ca.prm delete mode 100644 Engine/lib/curl/tests/certs/Makefile.am delete mode 100644 Engine/lib/curl/tests/certs/Makefile.in delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost-firstSAN-sv.crl delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost-firstSAN-sv.crt delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost-firstSAN-sv.csr delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost-firstSAN-sv.der delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost-firstSAN-sv.dhp delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost-firstSAN-sv.key delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost-firstSAN-sv.pem delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost-firstSAN-sv.pub.der delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost-firstSAN-sv.pub.pem delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost-lastSAN-sv.crl delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost-lastSAN-sv.crt delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost-lastSAN-sv.csr delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost-lastSAN-sv.der delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost-lastSAN-sv.dhp delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost-lastSAN-sv.key delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost-lastSAN-sv.pem delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost-lastSAN-sv.pub.der delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost-lastSAN-sv.pub.pem delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost-sv.crl delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost-sv.crt delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost-sv.csr delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost-sv.der delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost-sv.dhp delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost-sv.key delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost-sv.pem delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost-sv.prm delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost-sv.pub.der delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost-sv.pub.pem delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost.nn-sv.crl delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost.nn-sv.crt delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost.nn-sv.csr delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost.nn-sv.der delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost.nn-sv.dhp delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost.nn-sv.key delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost.nn-sv.pem delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost.nn-sv.prm delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost.nn-sv.pub.der delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost.nn-sv.pub.pem delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost0h-sv.crl delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost0h-sv.crt delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost0h-sv.csr delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost0h-sv.der delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost0h-sv.dhp delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost0h-sv.key delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost0h-sv.pem delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost0h-sv.prm delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost0h-sv.pub.der delete mode 100644 Engine/lib/curl/tests/certs/Server-localhost0h-sv.pub.pem delete mode 100644 Engine/lib/curl/tests/certs/scripts/Makefile.am delete mode 100644 Engine/lib/curl/tests/certs/scripts/Makefile.in delete mode 100755 Engine/lib/curl/tests/certs/scripts/genroot.sh delete mode 100755 Engine/lib/curl/tests/certs/scripts/genserv.sh delete mode 100644 Engine/lib/curl/tests/certs/srp-verifier-conf delete mode 100644 Engine/lib/curl/tests/certs/srp-verifier-db delete mode 100644 Engine/lib/curl/tests/data/CMakeLists.txt delete mode 100644 Engine/lib/curl/tests/data/DISABLED delete mode 100644 Engine/lib/curl/tests/data/Makefile.am delete mode 100644 Engine/lib/curl/tests/data/Makefile.in delete mode 100644 Engine/lib/curl/tests/data/Makefile.inc delete mode 100644 Engine/lib/curl/tests/data/test1 delete mode 100644 Engine/lib/curl/tests/data/test10 delete mode 100644 Engine/lib/curl/tests/data/test100 delete mode 100644 Engine/lib/curl/tests/data/test1000 delete mode 100644 Engine/lib/curl/tests/data/test1001 delete mode 100644 Engine/lib/curl/tests/data/test1002 delete mode 100644 Engine/lib/curl/tests/data/test1003 delete mode 100644 Engine/lib/curl/tests/data/test1004 delete mode 100644 Engine/lib/curl/tests/data/test1005 delete mode 100644 Engine/lib/curl/tests/data/test1006 delete mode 100644 Engine/lib/curl/tests/data/test1007 delete mode 100644 Engine/lib/curl/tests/data/test1008 delete mode 100644 Engine/lib/curl/tests/data/test1009 delete mode 100644 Engine/lib/curl/tests/data/test101 delete mode 100644 Engine/lib/curl/tests/data/test1010 delete mode 100644 Engine/lib/curl/tests/data/test1011 delete mode 100644 Engine/lib/curl/tests/data/test1012 delete mode 100644 Engine/lib/curl/tests/data/test1013 delete mode 100644 Engine/lib/curl/tests/data/test1014 delete mode 100644 Engine/lib/curl/tests/data/test1015 delete mode 100644 Engine/lib/curl/tests/data/test1016 delete mode 100644 Engine/lib/curl/tests/data/test1017 delete mode 100644 Engine/lib/curl/tests/data/test1018 delete mode 100644 Engine/lib/curl/tests/data/test1019 delete mode 100644 Engine/lib/curl/tests/data/test102 delete mode 100644 Engine/lib/curl/tests/data/test1020 delete mode 100644 Engine/lib/curl/tests/data/test1021 delete mode 100644 Engine/lib/curl/tests/data/test1022 delete mode 100644 Engine/lib/curl/tests/data/test1023 delete mode 100644 Engine/lib/curl/tests/data/test1024 delete mode 100644 Engine/lib/curl/tests/data/test1025 delete mode 100644 Engine/lib/curl/tests/data/test1026 delete mode 100644 Engine/lib/curl/tests/data/test1027 delete mode 100644 Engine/lib/curl/tests/data/test1028 delete mode 100644 Engine/lib/curl/tests/data/test1029 delete mode 100644 Engine/lib/curl/tests/data/test103 delete mode 100644 Engine/lib/curl/tests/data/test1030 delete mode 100644 Engine/lib/curl/tests/data/test1031 delete mode 100644 Engine/lib/curl/tests/data/test1032 delete mode 100644 Engine/lib/curl/tests/data/test1033 delete mode 100644 Engine/lib/curl/tests/data/test1034 delete mode 100644 Engine/lib/curl/tests/data/test1035 delete mode 100644 Engine/lib/curl/tests/data/test1036 delete mode 100644 Engine/lib/curl/tests/data/test1037 delete mode 100644 Engine/lib/curl/tests/data/test1038 delete mode 100644 Engine/lib/curl/tests/data/test1039 delete mode 100644 Engine/lib/curl/tests/data/test104 delete mode 100644 Engine/lib/curl/tests/data/test1040 delete mode 100644 Engine/lib/curl/tests/data/test1041 delete mode 100644 Engine/lib/curl/tests/data/test1042 delete mode 100644 Engine/lib/curl/tests/data/test1043 delete mode 100644 Engine/lib/curl/tests/data/test1044 delete mode 100644 Engine/lib/curl/tests/data/test1045 delete mode 100644 Engine/lib/curl/tests/data/test1046 delete mode 100644 Engine/lib/curl/tests/data/test1047 delete mode 100644 Engine/lib/curl/tests/data/test1048 delete mode 100644 Engine/lib/curl/tests/data/test1049 delete mode 100644 Engine/lib/curl/tests/data/test105 delete mode 100644 Engine/lib/curl/tests/data/test1050 delete mode 100644 Engine/lib/curl/tests/data/test1051 delete mode 100644 Engine/lib/curl/tests/data/test1052 delete mode 100644 Engine/lib/curl/tests/data/test1053 delete mode 100644 Engine/lib/curl/tests/data/test1054 delete mode 100644 Engine/lib/curl/tests/data/test1055 delete mode 100644 Engine/lib/curl/tests/data/test1056 delete mode 100644 Engine/lib/curl/tests/data/test1057 delete mode 100644 Engine/lib/curl/tests/data/test1058 delete mode 100644 Engine/lib/curl/tests/data/test1059 delete mode 100644 Engine/lib/curl/tests/data/test106 delete mode 100644 Engine/lib/curl/tests/data/test1060 delete mode 100644 Engine/lib/curl/tests/data/test1061 delete mode 100644 Engine/lib/curl/tests/data/test1062 delete mode 100644 Engine/lib/curl/tests/data/test1063 delete mode 100644 Engine/lib/curl/tests/data/test1064 delete mode 100644 Engine/lib/curl/tests/data/test1065 delete mode 100644 Engine/lib/curl/tests/data/test1066 delete mode 100644 Engine/lib/curl/tests/data/test1067 delete mode 100644 Engine/lib/curl/tests/data/test1068 delete mode 100644 Engine/lib/curl/tests/data/test1069 delete mode 100644 Engine/lib/curl/tests/data/test107 delete mode 100644 Engine/lib/curl/tests/data/test1070 delete mode 100644 Engine/lib/curl/tests/data/test1071 delete mode 100644 Engine/lib/curl/tests/data/test1072 delete mode 100644 Engine/lib/curl/tests/data/test1073 delete mode 100644 Engine/lib/curl/tests/data/test1074 delete mode 100644 Engine/lib/curl/tests/data/test1075 delete mode 100644 Engine/lib/curl/tests/data/test1076 delete mode 100644 Engine/lib/curl/tests/data/test1077 delete mode 100644 Engine/lib/curl/tests/data/test1078 delete mode 100644 Engine/lib/curl/tests/data/test1079 delete mode 100644 Engine/lib/curl/tests/data/test108 delete mode 100644 Engine/lib/curl/tests/data/test1080 delete mode 100644 Engine/lib/curl/tests/data/test1081 delete mode 100644 Engine/lib/curl/tests/data/test1082 delete mode 100644 Engine/lib/curl/tests/data/test1083 delete mode 100644 Engine/lib/curl/tests/data/test1084 delete mode 100644 Engine/lib/curl/tests/data/test1085 delete mode 100644 Engine/lib/curl/tests/data/test1086 delete mode 100644 Engine/lib/curl/tests/data/test1087 delete mode 100644 Engine/lib/curl/tests/data/test1088 delete mode 100644 Engine/lib/curl/tests/data/test1089 delete mode 100644 Engine/lib/curl/tests/data/test109 delete mode 100644 Engine/lib/curl/tests/data/test1090 delete mode 100644 Engine/lib/curl/tests/data/test1091 delete mode 100644 Engine/lib/curl/tests/data/test1092 delete mode 100644 Engine/lib/curl/tests/data/test1093 delete mode 100644 Engine/lib/curl/tests/data/test1094 delete mode 100644 Engine/lib/curl/tests/data/test1095 delete mode 100644 Engine/lib/curl/tests/data/test1096 delete mode 100644 Engine/lib/curl/tests/data/test1097 delete mode 100644 Engine/lib/curl/tests/data/test1098 delete mode 100644 Engine/lib/curl/tests/data/test1099 delete mode 100644 Engine/lib/curl/tests/data/test11 delete mode 100644 Engine/lib/curl/tests/data/test110 delete mode 100644 Engine/lib/curl/tests/data/test1100 delete mode 100644 Engine/lib/curl/tests/data/test1101 delete mode 100644 Engine/lib/curl/tests/data/test1102 delete mode 100644 Engine/lib/curl/tests/data/test1103 delete mode 100644 Engine/lib/curl/tests/data/test1104 delete mode 100644 Engine/lib/curl/tests/data/test1105 delete mode 100644 Engine/lib/curl/tests/data/test1106 delete mode 100644 Engine/lib/curl/tests/data/test1107 delete mode 100644 Engine/lib/curl/tests/data/test1108 delete mode 100644 Engine/lib/curl/tests/data/test1109 delete mode 100644 Engine/lib/curl/tests/data/test111 delete mode 100644 Engine/lib/curl/tests/data/test1110 delete mode 100644 Engine/lib/curl/tests/data/test1111 delete mode 100644 Engine/lib/curl/tests/data/test1112 delete mode 100644 Engine/lib/curl/tests/data/test1113 delete mode 100644 Engine/lib/curl/tests/data/test1114 delete mode 100644 Engine/lib/curl/tests/data/test1115 delete mode 100644 Engine/lib/curl/tests/data/test1116 delete mode 100644 Engine/lib/curl/tests/data/test1117 delete mode 100644 Engine/lib/curl/tests/data/test1118 delete mode 100644 Engine/lib/curl/tests/data/test1119 delete mode 100644 Engine/lib/curl/tests/data/test112 delete mode 100644 Engine/lib/curl/tests/data/test1120 delete mode 100644 Engine/lib/curl/tests/data/test1121 delete mode 100644 Engine/lib/curl/tests/data/test1122 delete mode 100644 Engine/lib/curl/tests/data/test1123 delete mode 100644 Engine/lib/curl/tests/data/test1124 delete mode 100644 Engine/lib/curl/tests/data/test1125 delete mode 100644 Engine/lib/curl/tests/data/test1126 delete mode 100644 Engine/lib/curl/tests/data/test1127 delete mode 100644 Engine/lib/curl/tests/data/test1128 delete mode 100644 Engine/lib/curl/tests/data/test1129 delete mode 100644 Engine/lib/curl/tests/data/test113 delete mode 100644 Engine/lib/curl/tests/data/test1130 delete mode 100644 Engine/lib/curl/tests/data/test1131 delete mode 100644 Engine/lib/curl/tests/data/test1132 delete mode 100644 Engine/lib/curl/tests/data/test1133 delete mode 100644 Engine/lib/curl/tests/data/test1134 delete mode 100644 Engine/lib/curl/tests/data/test1135 delete mode 100644 Engine/lib/curl/tests/data/test1136 delete mode 100644 Engine/lib/curl/tests/data/test1137 delete mode 100644 Engine/lib/curl/tests/data/test1138 delete mode 100644 Engine/lib/curl/tests/data/test1139 delete mode 100644 Engine/lib/curl/tests/data/test114 delete mode 100644 Engine/lib/curl/tests/data/test1140 delete mode 100644 Engine/lib/curl/tests/data/test1141 delete mode 100644 Engine/lib/curl/tests/data/test1142 delete mode 100644 Engine/lib/curl/tests/data/test1143 delete mode 100644 Engine/lib/curl/tests/data/test1144 delete mode 100644 Engine/lib/curl/tests/data/test1145 delete mode 100644 Engine/lib/curl/tests/data/test1146 delete mode 100644 Engine/lib/curl/tests/data/test1147 delete mode 100644 Engine/lib/curl/tests/data/test1148 delete mode 100644 Engine/lib/curl/tests/data/test1149 delete mode 100644 Engine/lib/curl/tests/data/test115 delete mode 100644 Engine/lib/curl/tests/data/test1150 delete mode 100644 Engine/lib/curl/tests/data/test1151 delete mode 100644 Engine/lib/curl/tests/data/test1152 delete mode 100644 Engine/lib/curl/tests/data/test1153 delete mode 100644 Engine/lib/curl/tests/data/test1154 delete mode 100644 Engine/lib/curl/tests/data/test1155 delete mode 100644 Engine/lib/curl/tests/data/test1156 delete mode 100644 Engine/lib/curl/tests/data/test1157 delete mode 100644 Engine/lib/curl/tests/data/test1158 delete mode 100644 Engine/lib/curl/tests/data/test1159 delete mode 100644 Engine/lib/curl/tests/data/test116 delete mode 100644 Engine/lib/curl/tests/data/test1160 delete mode 100644 Engine/lib/curl/tests/data/test1161 delete mode 100644 Engine/lib/curl/tests/data/test1162 delete mode 100644 Engine/lib/curl/tests/data/test1163 delete mode 100644 Engine/lib/curl/tests/data/test1164 delete mode 100644 Engine/lib/curl/tests/data/test1165 delete mode 100644 Engine/lib/curl/tests/data/test1166 delete mode 100644 Engine/lib/curl/tests/data/test1167 delete mode 100644 Engine/lib/curl/tests/data/test1168 delete mode 100644 Engine/lib/curl/tests/data/test1169 delete mode 100644 Engine/lib/curl/tests/data/test117 delete mode 100644 Engine/lib/curl/tests/data/test1170 delete mode 100644 Engine/lib/curl/tests/data/test1171 delete mode 100644 Engine/lib/curl/tests/data/test1172 delete mode 100644 Engine/lib/curl/tests/data/test1173 delete mode 100644 Engine/lib/curl/tests/data/test1174 delete mode 100644 Engine/lib/curl/tests/data/test1175 delete mode 100644 Engine/lib/curl/tests/data/test1176 delete mode 100644 Engine/lib/curl/tests/data/test1177 delete mode 100644 Engine/lib/curl/tests/data/test1178 delete mode 100644 Engine/lib/curl/tests/data/test1179 delete mode 100644 Engine/lib/curl/tests/data/test118 delete mode 100644 Engine/lib/curl/tests/data/test1180 delete mode 100644 Engine/lib/curl/tests/data/test1181 delete mode 100644 Engine/lib/curl/tests/data/test1182 delete mode 100644 Engine/lib/curl/tests/data/test1183 delete mode 100644 Engine/lib/curl/tests/data/test1184 delete mode 100644 Engine/lib/curl/tests/data/test1185 delete mode 100644 Engine/lib/curl/tests/data/test1186 delete mode 100644 Engine/lib/curl/tests/data/test1187 delete mode 100644 Engine/lib/curl/tests/data/test1188 delete mode 100644 Engine/lib/curl/tests/data/test1189 delete mode 100644 Engine/lib/curl/tests/data/test119 delete mode 100644 Engine/lib/curl/tests/data/test1190 delete mode 100644 Engine/lib/curl/tests/data/test1191 delete mode 100644 Engine/lib/curl/tests/data/test1192 delete mode 100644 Engine/lib/curl/tests/data/test1193 delete mode 100644 Engine/lib/curl/tests/data/test1194 delete mode 100644 Engine/lib/curl/tests/data/test1195 delete mode 100644 Engine/lib/curl/tests/data/test1196 delete mode 100644 Engine/lib/curl/tests/data/test1197 delete mode 100644 Engine/lib/curl/tests/data/test1198 delete mode 100644 Engine/lib/curl/tests/data/test1199 delete mode 100644 Engine/lib/curl/tests/data/test12 delete mode 100644 Engine/lib/curl/tests/data/test120 delete mode 100644 Engine/lib/curl/tests/data/test1200 delete mode 100644 Engine/lib/curl/tests/data/test1201 delete mode 100644 Engine/lib/curl/tests/data/test1202 delete mode 100644 Engine/lib/curl/tests/data/test1203 delete mode 100644 Engine/lib/curl/tests/data/test1204 delete mode 100644 Engine/lib/curl/tests/data/test1205 delete mode 100644 Engine/lib/curl/tests/data/test1206 delete mode 100644 Engine/lib/curl/tests/data/test1207 delete mode 100644 Engine/lib/curl/tests/data/test1208 delete mode 100644 Engine/lib/curl/tests/data/test1209 delete mode 100644 Engine/lib/curl/tests/data/test121 delete mode 100644 Engine/lib/curl/tests/data/test1210 delete mode 100644 Engine/lib/curl/tests/data/test1211 delete mode 100644 Engine/lib/curl/tests/data/test1212 delete mode 100644 Engine/lib/curl/tests/data/test1213 delete mode 100644 Engine/lib/curl/tests/data/test1214 delete mode 100644 Engine/lib/curl/tests/data/test1215 delete mode 100644 Engine/lib/curl/tests/data/test1216 delete mode 100644 Engine/lib/curl/tests/data/test1217 delete mode 100644 Engine/lib/curl/tests/data/test1218 delete mode 100644 Engine/lib/curl/tests/data/test1219 delete mode 100644 Engine/lib/curl/tests/data/test122 delete mode 100644 Engine/lib/curl/tests/data/test1220 delete mode 100644 Engine/lib/curl/tests/data/test1223 delete mode 100644 Engine/lib/curl/tests/data/test1224 delete mode 100644 Engine/lib/curl/tests/data/test1225 delete mode 100644 Engine/lib/curl/tests/data/test1226 delete mode 100644 Engine/lib/curl/tests/data/test1227 delete mode 100644 Engine/lib/curl/tests/data/test1228 delete mode 100644 Engine/lib/curl/tests/data/test1229 delete mode 100644 Engine/lib/curl/tests/data/test123 delete mode 100644 Engine/lib/curl/tests/data/test1230 delete mode 100644 Engine/lib/curl/tests/data/test1231 delete mode 100644 Engine/lib/curl/tests/data/test1232 delete mode 100644 Engine/lib/curl/tests/data/test1233 delete mode 100644 Engine/lib/curl/tests/data/test1234 delete mode 100644 Engine/lib/curl/tests/data/test1235 delete mode 100644 Engine/lib/curl/tests/data/test1236 delete mode 100644 Engine/lib/curl/tests/data/test1237 delete mode 100644 Engine/lib/curl/tests/data/test1238 delete mode 100644 Engine/lib/curl/tests/data/test1239 delete mode 100644 Engine/lib/curl/tests/data/test124 delete mode 100644 Engine/lib/curl/tests/data/test1240 delete mode 100644 Engine/lib/curl/tests/data/test1241 delete mode 100644 Engine/lib/curl/tests/data/test1242 delete mode 100644 Engine/lib/curl/tests/data/test1243 delete mode 100644 Engine/lib/curl/tests/data/test1244 delete mode 100644 Engine/lib/curl/tests/data/test1245 delete mode 100644 Engine/lib/curl/tests/data/test1246 delete mode 100644 Engine/lib/curl/tests/data/test1247 delete mode 100644 Engine/lib/curl/tests/data/test1248 delete mode 100644 Engine/lib/curl/tests/data/test1249 delete mode 100644 Engine/lib/curl/tests/data/test125 delete mode 100644 Engine/lib/curl/tests/data/test1250 delete mode 100644 Engine/lib/curl/tests/data/test1251 delete mode 100644 Engine/lib/curl/tests/data/test1252 delete mode 100644 Engine/lib/curl/tests/data/test1253 delete mode 100644 Engine/lib/curl/tests/data/test1254 delete mode 100644 Engine/lib/curl/tests/data/test1255 delete mode 100644 Engine/lib/curl/tests/data/test1256 delete mode 100644 Engine/lib/curl/tests/data/test1257 delete mode 100644 Engine/lib/curl/tests/data/test1258 delete mode 100644 Engine/lib/curl/tests/data/test1259 delete mode 100644 Engine/lib/curl/tests/data/test126 delete mode 100644 Engine/lib/curl/tests/data/test1260 delete mode 100644 Engine/lib/curl/tests/data/test1261 delete mode 100644 Engine/lib/curl/tests/data/test1262 delete mode 100644 Engine/lib/curl/tests/data/test1263 delete mode 100644 Engine/lib/curl/tests/data/test1264 delete mode 100644 Engine/lib/curl/tests/data/test1265 delete mode 100644 Engine/lib/curl/tests/data/test1266 delete mode 100644 Engine/lib/curl/tests/data/test1267 delete mode 100644 Engine/lib/curl/tests/data/test1268 delete mode 100644 Engine/lib/curl/tests/data/test1269 delete mode 100644 Engine/lib/curl/tests/data/test127 delete mode 100644 Engine/lib/curl/tests/data/test1270 delete mode 100644 Engine/lib/curl/tests/data/test1271 delete mode 100644 Engine/lib/curl/tests/data/test1272 delete mode 100644 Engine/lib/curl/tests/data/test1273 delete mode 100644 Engine/lib/curl/tests/data/test1274 delete mode 100644 Engine/lib/curl/tests/data/test128 delete mode 100644 Engine/lib/curl/tests/data/test1280 delete mode 100644 Engine/lib/curl/tests/data/test1281 delete mode 100644 Engine/lib/curl/tests/data/test1282 delete mode 100644 Engine/lib/curl/tests/data/test1283 delete mode 100644 Engine/lib/curl/tests/data/test1284 delete mode 100644 Engine/lib/curl/tests/data/test1285 delete mode 100644 Engine/lib/curl/tests/data/test1286 delete mode 100644 Engine/lib/curl/tests/data/test1287 delete mode 100644 Engine/lib/curl/tests/data/test1288 delete mode 100644 Engine/lib/curl/tests/data/test1289 delete mode 100644 Engine/lib/curl/tests/data/test129 delete mode 100644 Engine/lib/curl/tests/data/test1290 delete mode 100644 Engine/lib/curl/tests/data/test1291 delete mode 100644 Engine/lib/curl/tests/data/test1292 delete mode 100644 Engine/lib/curl/tests/data/test1293 delete mode 100644 Engine/lib/curl/tests/data/test1294 delete mode 100644 Engine/lib/curl/tests/data/test1295 delete mode 100644 Engine/lib/curl/tests/data/test1296 delete mode 100644 Engine/lib/curl/tests/data/test1297 delete mode 100644 Engine/lib/curl/tests/data/test1298 delete mode 100644 Engine/lib/curl/tests/data/test1299 delete mode 100644 Engine/lib/curl/tests/data/test13 delete mode 100644 Engine/lib/curl/tests/data/test130 delete mode 100644 Engine/lib/curl/tests/data/test1300 delete mode 100644 Engine/lib/curl/tests/data/test1301 delete mode 100644 Engine/lib/curl/tests/data/test1302 delete mode 100644 Engine/lib/curl/tests/data/test1303 delete mode 100644 Engine/lib/curl/tests/data/test1304 delete mode 100644 Engine/lib/curl/tests/data/test1305 delete mode 100644 Engine/lib/curl/tests/data/test1306 delete mode 100644 Engine/lib/curl/tests/data/test1307 delete mode 100644 Engine/lib/curl/tests/data/test1308 delete mode 100644 Engine/lib/curl/tests/data/test1309 delete mode 100644 Engine/lib/curl/tests/data/test131 delete mode 100644 Engine/lib/curl/tests/data/test1310 delete mode 100644 Engine/lib/curl/tests/data/test1311 delete mode 100644 Engine/lib/curl/tests/data/test1312 delete mode 100644 Engine/lib/curl/tests/data/test1313 delete mode 100644 Engine/lib/curl/tests/data/test1314 delete mode 100644 Engine/lib/curl/tests/data/test1315 delete mode 100644 Engine/lib/curl/tests/data/test1316 delete mode 100644 Engine/lib/curl/tests/data/test1317 delete mode 100644 Engine/lib/curl/tests/data/test1318 delete mode 100644 Engine/lib/curl/tests/data/test1319 delete mode 100644 Engine/lib/curl/tests/data/test132 delete mode 100644 Engine/lib/curl/tests/data/test1320 delete mode 100644 Engine/lib/curl/tests/data/test1321 delete mode 100644 Engine/lib/curl/tests/data/test1322 delete mode 100644 Engine/lib/curl/tests/data/test1323 delete mode 100644 Engine/lib/curl/tests/data/test1324 delete mode 100644 Engine/lib/curl/tests/data/test1325 delete mode 100644 Engine/lib/curl/tests/data/test1326 delete mode 100644 Engine/lib/curl/tests/data/test1327 delete mode 100644 Engine/lib/curl/tests/data/test1328 delete mode 100644 Engine/lib/curl/tests/data/test1329 delete mode 100644 Engine/lib/curl/tests/data/test133 delete mode 100644 Engine/lib/curl/tests/data/test1330 delete mode 100644 Engine/lib/curl/tests/data/test1331 delete mode 100644 Engine/lib/curl/tests/data/test1332 delete mode 100644 Engine/lib/curl/tests/data/test1333 delete mode 100644 Engine/lib/curl/tests/data/test1334 delete mode 100644 Engine/lib/curl/tests/data/test1335 delete mode 100644 Engine/lib/curl/tests/data/test1336 delete mode 100644 Engine/lib/curl/tests/data/test1337 delete mode 100644 Engine/lib/curl/tests/data/test1338 delete mode 100644 Engine/lib/curl/tests/data/test1339 delete mode 100644 Engine/lib/curl/tests/data/test134 delete mode 100644 Engine/lib/curl/tests/data/test1340 delete mode 100644 Engine/lib/curl/tests/data/test1341 delete mode 100644 Engine/lib/curl/tests/data/test1342 delete mode 100644 Engine/lib/curl/tests/data/test1343 delete mode 100644 Engine/lib/curl/tests/data/test1344 delete mode 100644 Engine/lib/curl/tests/data/test1345 delete mode 100644 Engine/lib/curl/tests/data/test1346 delete mode 100644 Engine/lib/curl/tests/data/test1347 delete mode 100644 Engine/lib/curl/tests/data/test1348 delete mode 100644 Engine/lib/curl/tests/data/test1349 delete mode 100644 Engine/lib/curl/tests/data/test135 delete mode 100644 Engine/lib/curl/tests/data/test1350 delete mode 100644 Engine/lib/curl/tests/data/test1351 delete mode 100644 Engine/lib/curl/tests/data/test1352 delete mode 100644 Engine/lib/curl/tests/data/test1353 delete mode 100644 Engine/lib/curl/tests/data/test1354 delete mode 100644 Engine/lib/curl/tests/data/test1355 delete mode 100644 Engine/lib/curl/tests/data/test1356 delete mode 100644 Engine/lib/curl/tests/data/test1357 delete mode 100644 Engine/lib/curl/tests/data/test1358 delete mode 100644 Engine/lib/curl/tests/data/test1359 delete mode 100644 Engine/lib/curl/tests/data/test136 delete mode 100644 Engine/lib/curl/tests/data/test1360 delete mode 100644 Engine/lib/curl/tests/data/test1361 delete mode 100644 Engine/lib/curl/tests/data/test1362 delete mode 100644 Engine/lib/curl/tests/data/test1363 delete mode 100644 Engine/lib/curl/tests/data/test1364 delete mode 100644 Engine/lib/curl/tests/data/test1365 delete mode 100644 Engine/lib/curl/tests/data/test1366 delete mode 100644 Engine/lib/curl/tests/data/test1367 delete mode 100644 Engine/lib/curl/tests/data/test1368 delete mode 100644 Engine/lib/curl/tests/data/test1369 delete mode 100644 Engine/lib/curl/tests/data/test137 delete mode 100644 Engine/lib/curl/tests/data/test1370 delete mode 100644 Engine/lib/curl/tests/data/test1371 delete mode 100644 Engine/lib/curl/tests/data/test1372 delete mode 100644 Engine/lib/curl/tests/data/test1373 delete mode 100644 Engine/lib/curl/tests/data/test1374 delete mode 100644 Engine/lib/curl/tests/data/test1375 delete mode 100644 Engine/lib/curl/tests/data/test1376 delete mode 100644 Engine/lib/curl/tests/data/test1377 delete mode 100644 Engine/lib/curl/tests/data/test1378 delete mode 100644 Engine/lib/curl/tests/data/test1379 delete mode 100644 Engine/lib/curl/tests/data/test138 delete mode 100644 Engine/lib/curl/tests/data/test1380 delete mode 100644 Engine/lib/curl/tests/data/test1381 delete mode 100644 Engine/lib/curl/tests/data/test1382 delete mode 100644 Engine/lib/curl/tests/data/test1383 delete mode 100644 Engine/lib/curl/tests/data/test1384 delete mode 100644 Engine/lib/curl/tests/data/test1385 delete mode 100644 Engine/lib/curl/tests/data/test1386 delete mode 100644 Engine/lib/curl/tests/data/test1387 delete mode 100644 Engine/lib/curl/tests/data/test1388 delete mode 100644 Engine/lib/curl/tests/data/test1389 delete mode 100644 Engine/lib/curl/tests/data/test139 delete mode 100644 Engine/lib/curl/tests/data/test1390 delete mode 100644 Engine/lib/curl/tests/data/test1391 delete mode 100644 Engine/lib/curl/tests/data/test1392 delete mode 100644 Engine/lib/curl/tests/data/test1393 delete mode 100644 Engine/lib/curl/tests/data/test1394 delete mode 100644 Engine/lib/curl/tests/data/test1395 delete mode 100644 Engine/lib/curl/tests/data/test1396 delete mode 100644 Engine/lib/curl/tests/data/test1397 delete mode 100644 Engine/lib/curl/tests/data/test1398 delete mode 100644 Engine/lib/curl/tests/data/test1399 delete mode 100644 Engine/lib/curl/tests/data/test14 delete mode 100644 Engine/lib/curl/tests/data/test140 delete mode 100644 Engine/lib/curl/tests/data/test1400 delete mode 100644 Engine/lib/curl/tests/data/test1401 delete mode 100644 Engine/lib/curl/tests/data/test1402 delete mode 100644 Engine/lib/curl/tests/data/test1403 delete mode 100644 Engine/lib/curl/tests/data/test1404 delete mode 100644 Engine/lib/curl/tests/data/test1405 delete mode 100644 Engine/lib/curl/tests/data/test1406 delete mode 100644 Engine/lib/curl/tests/data/test1407 delete mode 100644 Engine/lib/curl/tests/data/test1408 delete mode 100644 Engine/lib/curl/tests/data/test1409 delete mode 100644 Engine/lib/curl/tests/data/test141 delete mode 100644 Engine/lib/curl/tests/data/test1410 delete mode 100644 Engine/lib/curl/tests/data/test1411 delete mode 100644 Engine/lib/curl/tests/data/test1412 delete mode 100644 Engine/lib/curl/tests/data/test1413 delete mode 100644 Engine/lib/curl/tests/data/test1414 delete mode 100644 Engine/lib/curl/tests/data/test1415 delete mode 100644 Engine/lib/curl/tests/data/test1416 delete mode 100644 Engine/lib/curl/tests/data/test1417 delete mode 100644 Engine/lib/curl/tests/data/test1418 delete mode 100644 Engine/lib/curl/tests/data/test1419 delete mode 100644 Engine/lib/curl/tests/data/test142 delete mode 100644 Engine/lib/curl/tests/data/test1420 delete mode 100644 Engine/lib/curl/tests/data/test1421 delete mode 100644 Engine/lib/curl/tests/data/test1422 delete mode 100644 Engine/lib/curl/tests/data/test1423 delete mode 100644 Engine/lib/curl/tests/data/test1424 delete mode 100644 Engine/lib/curl/tests/data/test1425 delete mode 100644 Engine/lib/curl/tests/data/test1426 delete mode 100644 Engine/lib/curl/tests/data/test1427 delete mode 100644 Engine/lib/curl/tests/data/test1428 delete mode 100644 Engine/lib/curl/tests/data/test1429 delete mode 100644 Engine/lib/curl/tests/data/test143 delete mode 100644 Engine/lib/curl/tests/data/test1430 delete mode 100644 Engine/lib/curl/tests/data/test1431 delete mode 100644 Engine/lib/curl/tests/data/test1432 delete mode 100644 Engine/lib/curl/tests/data/test1433 delete mode 100644 Engine/lib/curl/tests/data/test1434 delete mode 100644 Engine/lib/curl/tests/data/test1435 delete mode 100644 Engine/lib/curl/tests/data/test1436 delete mode 100644 Engine/lib/curl/tests/data/test1437 delete mode 100644 Engine/lib/curl/tests/data/test1438 delete mode 100644 Engine/lib/curl/tests/data/test1439 delete mode 100644 Engine/lib/curl/tests/data/test144 delete mode 100644 Engine/lib/curl/tests/data/test1440 delete mode 100644 Engine/lib/curl/tests/data/test1441 delete mode 100644 Engine/lib/curl/tests/data/test1442 delete mode 100644 Engine/lib/curl/tests/data/test1443 delete mode 100644 Engine/lib/curl/tests/data/test1444 delete mode 100644 Engine/lib/curl/tests/data/test1445 delete mode 100644 Engine/lib/curl/tests/data/test1446 delete mode 100644 Engine/lib/curl/tests/data/test1447 delete mode 100644 Engine/lib/curl/tests/data/test1448 delete mode 100644 Engine/lib/curl/tests/data/test1449 delete mode 100644 Engine/lib/curl/tests/data/test145 delete mode 100644 Engine/lib/curl/tests/data/test1450 delete mode 100644 Engine/lib/curl/tests/data/test1451 delete mode 100644 Engine/lib/curl/tests/data/test1452 delete mode 100644 Engine/lib/curl/tests/data/test1453 delete mode 100644 Engine/lib/curl/tests/data/test1454 delete mode 100644 Engine/lib/curl/tests/data/test1455 delete mode 100644 Engine/lib/curl/tests/data/test1456 delete mode 100644 Engine/lib/curl/tests/data/test1457 delete mode 100644 Engine/lib/curl/tests/data/test1458 delete mode 100644 Engine/lib/curl/tests/data/test1459 delete mode 100644 Engine/lib/curl/tests/data/test146 delete mode 100644 Engine/lib/curl/tests/data/test1460 delete mode 100644 Engine/lib/curl/tests/data/test1461 delete mode 100644 Engine/lib/curl/tests/data/test1462 delete mode 100644 Engine/lib/curl/tests/data/test1463 delete mode 100644 Engine/lib/curl/tests/data/test1464 delete mode 100644 Engine/lib/curl/tests/data/test1465 delete mode 100644 Engine/lib/curl/tests/data/test1466 delete mode 100644 Engine/lib/curl/tests/data/test1467 delete mode 100644 Engine/lib/curl/tests/data/test1468 delete mode 100644 Engine/lib/curl/tests/data/test147 delete mode 100644 Engine/lib/curl/tests/data/test148 delete mode 100644 Engine/lib/curl/tests/data/test149 delete mode 100644 Engine/lib/curl/tests/data/test15 delete mode 100644 Engine/lib/curl/tests/data/test150 delete mode 100644 Engine/lib/curl/tests/data/test1500 delete mode 100644 Engine/lib/curl/tests/data/test1501 delete mode 100644 Engine/lib/curl/tests/data/test1502 delete mode 100644 Engine/lib/curl/tests/data/test1503 delete mode 100644 Engine/lib/curl/tests/data/test1504 delete mode 100644 Engine/lib/curl/tests/data/test1505 delete mode 100644 Engine/lib/curl/tests/data/test1506 delete mode 100644 Engine/lib/curl/tests/data/test1507 delete mode 100644 Engine/lib/curl/tests/data/test1508 delete mode 100644 Engine/lib/curl/tests/data/test1509 delete mode 100644 Engine/lib/curl/tests/data/test151 delete mode 100644 Engine/lib/curl/tests/data/test1510 delete mode 100644 Engine/lib/curl/tests/data/test1511 delete mode 100644 Engine/lib/curl/tests/data/test1512 delete mode 100644 Engine/lib/curl/tests/data/test1513 delete mode 100644 Engine/lib/curl/tests/data/test1514 delete mode 100644 Engine/lib/curl/tests/data/test1515 delete mode 100644 Engine/lib/curl/tests/data/test1516 delete mode 100644 Engine/lib/curl/tests/data/test1517 delete mode 100644 Engine/lib/curl/tests/data/test1518 delete mode 100644 Engine/lib/curl/tests/data/test1519 delete mode 100644 Engine/lib/curl/tests/data/test152 delete mode 100644 Engine/lib/curl/tests/data/test1520 delete mode 100644 Engine/lib/curl/tests/data/test1521 delete mode 100644 Engine/lib/curl/tests/data/test1522 delete mode 100644 Engine/lib/curl/tests/data/test1523 delete mode 100644 Engine/lib/curl/tests/data/test1524 delete mode 100644 Engine/lib/curl/tests/data/test1525 delete mode 100644 Engine/lib/curl/tests/data/test1526 delete mode 100644 Engine/lib/curl/tests/data/test1527 delete mode 100644 Engine/lib/curl/tests/data/test1528 delete mode 100644 Engine/lib/curl/tests/data/test1529 delete mode 100644 Engine/lib/curl/tests/data/test153 delete mode 100644 Engine/lib/curl/tests/data/test1530 delete mode 100644 Engine/lib/curl/tests/data/test1531 delete mode 100644 Engine/lib/curl/tests/data/test1532 delete mode 100644 Engine/lib/curl/tests/data/test1533 delete mode 100644 Engine/lib/curl/tests/data/test1534 delete mode 100644 Engine/lib/curl/tests/data/test1535 delete mode 100644 Engine/lib/curl/tests/data/test1536 delete mode 100644 Engine/lib/curl/tests/data/test1537 delete mode 100644 Engine/lib/curl/tests/data/test1538 delete mode 100644 Engine/lib/curl/tests/data/test1539 delete mode 100644 Engine/lib/curl/tests/data/test154 delete mode 100644 Engine/lib/curl/tests/data/test1540 delete mode 100644 Engine/lib/curl/tests/data/test1542 delete mode 100644 Engine/lib/curl/tests/data/test1543 delete mode 100644 Engine/lib/curl/tests/data/test155 delete mode 100644 Engine/lib/curl/tests/data/test1550 delete mode 100644 Engine/lib/curl/tests/data/test1551 delete mode 100644 Engine/lib/curl/tests/data/test1552 delete mode 100644 Engine/lib/curl/tests/data/test1553 delete mode 100644 Engine/lib/curl/tests/data/test1554 delete mode 100644 Engine/lib/curl/tests/data/test1555 delete mode 100644 Engine/lib/curl/tests/data/test1556 delete mode 100644 Engine/lib/curl/tests/data/test1557 delete mode 100644 Engine/lib/curl/tests/data/test1558 delete mode 100644 Engine/lib/curl/tests/data/test1559 delete mode 100644 Engine/lib/curl/tests/data/test156 delete mode 100644 Engine/lib/curl/tests/data/test1560 delete mode 100644 Engine/lib/curl/tests/data/test1561 delete mode 100644 Engine/lib/curl/tests/data/test1562 delete mode 100644 Engine/lib/curl/tests/data/test1563 delete mode 100644 Engine/lib/curl/tests/data/test1564 delete mode 100644 Engine/lib/curl/tests/data/test1565 delete mode 100644 Engine/lib/curl/tests/data/test1566 delete mode 100644 Engine/lib/curl/tests/data/test1567 delete mode 100644 Engine/lib/curl/tests/data/test1568 delete mode 100644 Engine/lib/curl/tests/data/test1569 delete mode 100644 Engine/lib/curl/tests/data/test157 delete mode 100644 Engine/lib/curl/tests/data/test1570 delete mode 100644 Engine/lib/curl/tests/data/test158 delete mode 100644 Engine/lib/curl/tests/data/test159 delete mode 100644 Engine/lib/curl/tests/data/test1590 delete mode 100644 Engine/lib/curl/tests/data/test1591 delete mode 100644 Engine/lib/curl/tests/data/test1592 delete mode 100644 Engine/lib/curl/tests/data/test1593 delete mode 100644 Engine/lib/curl/tests/data/test1594 delete mode 100644 Engine/lib/curl/tests/data/test1595 delete mode 100644 Engine/lib/curl/tests/data/test1596 delete mode 100644 Engine/lib/curl/tests/data/test1597 delete mode 100644 Engine/lib/curl/tests/data/test16 delete mode 100644 Engine/lib/curl/tests/data/test160 delete mode 100644 Engine/lib/curl/tests/data/test1600 delete mode 100644 Engine/lib/curl/tests/data/test1601 delete mode 100644 Engine/lib/curl/tests/data/test1602 delete mode 100644 Engine/lib/curl/tests/data/test1603 delete mode 100644 Engine/lib/curl/tests/data/test1604 delete mode 100644 Engine/lib/curl/tests/data/test1605 delete mode 100644 Engine/lib/curl/tests/data/test1606 delete mode 100644 Engine/lib/curl/tests/data/test1607 delete mode 100644 Engine/lib/curl/tests/data/test1608 delete mode 100644 Engine/lib/curl/tests/data/test1609 delete mode 100644 Engine/lib/curl/tests/data/test161 delete mode 100644 Engine/lib/curl/tests/data/test1610 delete mode 100644 Engine/lib/curl/tests/data/test1611 delete mode 100644 Engine/lib/curl/tests/data/test1612 delete mode 100644 Engine/lib/curl/tests/data/test1613 delete mode 100644 Engine/lib/curl/tests/data/test162 delete mode 100644 Engine/lib/curl/tests/data/test1620 delete mode 100644 Engine/lib/curl/tests/data/test1621 delete mode 100644 Engine/lib/curl/tests/data/test163 delete mode 100644 Engine/lib/curl/tests/data/test1630 delete mode 100644 Engine/lib/curl/tests/data/test1631 delete mode 100644 Engine/lib/curl/tests/data/test1632 delete mode 100644 Engine/lib/curl/tests/data/test1633 delete mode 100644 Engine/lib/curl/tests/data/test1634 delete mode 100644 Engine/lib/curl/tests/data/test1635 delete mode 100644 Engine/lib/curl/tests/data/test164 delete mode 100644 Engine/lib/curl/tests/data/test165 delete mode 100644 Engine/lib/curl/tests/data/test1650 delete mode 100644 Engine/lib/curl/tests/data/test1651 delete mode 100644 Engine/lib/curl/tests/data/test1652 delete mode 100644 Engine/lib/curl/tests/data/test1653 delete mode 100644 Engine/lib/curl/tests/data/test1654 delete mode 100644 Engine/lib/curl/tests/data/test1655 delete mode 100644 Engine/lib/curl/tests/data/test166 delete mode 100644 Engine/lib/curl/tests/data/test1660 delete mode 100644 Engine/lib/curl/tests/data/test1661 delete mode 100644 Engine/lib/curl/tests/data/test167 delete mode 100644 Engine/lib/curl/tests/data/test1670 delete mode 100644 Engine/lib/curl/tests/data/test1671 delete mode 100644 Engine/lib/curl/tests/data/test168 delete mode 100644 Engine/lib/curl/tests/data/test1680 delete mode 100644 Engine/lib/curl/tests/data/test1681 delete mode 100644 Engine/lib/curl/tests/data/test1682 delete mode 100644 Engine/lib/curl/tests/data/test1683 delete mode 100644 Engine/lib/curl/tests/data/test169 delete mode 100644 Engine/lib/curl/tests/data/test17 delete mode 100644 Engine/lib/curl/tests/data/test170 delete mode 100644 Engine/lib/curl/tests/data/test1700 delete mode 100644 Engine/lib/curl/tests/data/test1701 delete mode 100644 Engine/lib/curl/tests/data/test1702 delete mode 100644 Engine/lib/curl/tests/data/test1703 delete mode 100644 Engine/lib/curl/tests/data/test171 delete mode 100644 Engine/lib/curl/tests/data/test172 delete mode 100644 Engine/lib/curl/tests/data/test173 delete mode 100644 Engine/lib/curl/tests/data/test174 delete mode 100644 Engine/lib/curl/tests/data/test175 delete mode 100644 Engine/lib/curl/tests/data/test176 delete mode 100644 Engine/lib/curl/tests/data/test177 delete mode 100644 Engine/lib/curl/tests/data/test178 delete mode 100644 Engine/lib/curl/tests/data/test179 delete mode 100644 Engine/lib/curl/tests/data/test18 delete mode 100644 Engine/lib/curl/tests/data/test180 delete mode 100644 Engine/lib/curl/tests/data/test1800 delete mode 100644 Engine/lib/curl/tests/data/test1801 delete mode 100644 Engine/lib/curl/tests/data/test181 delete mode 100644 Engine/lib/curl/tests/data/test182 delete mode 100644 Engine/lib/curl/tests/data/test183 delete mode 100644 Engine/lib/curl/tests/data/test184 delete mode 100644 Engine/lib/curl/tests/data/test185 delete mode 100644 Engine/lib/curl/tests/data/test186 delete mode 100644 Engine/lib/curl/tests/data/test187 delete mode 100644 Engine/lib/curl/tests/data/test188 delete mode 100644 Engine/lib/curl/tests/data/test189 delete mode 100644 Engine/lib/curl/tests/data/test19 delete mode 100644 Engine/lib/curl/tests/data/test190 delete mode 100644 Engine/lib/curl/tests/data/test1904 delete mode 100644 Engine/lib/curl/tests/data/test1905 delete mode 100644 Engine/lib/curl/tests/data/test1906 delete mode 100644 Engine/lib/curl/tests/data/test1907 delete mode 100644 Engine/lib/curl/tests/data/test1908 delete mode 100644 Engine/lib/curl/tests/data/test1909 delete mode 100644 Engine/lib/curl/tests/data/test191 delete mode 100644 Engine/lib/curl/tests/data/test1910 delete mode 100644 Engine/lib/curl/tests/data/test1911 delete mode 100644 Engine/lib/curl/tests/data/test1912 delete mode 100644 Engine/lib/curl/tests/data/test1913 delete mode 100644 Engine/lib/curl/tests/data/test1914 delete mode 100644 Engine/lib/curl/tests/data/test1915 delete mode 100644 Engine/lib/curl/tests/data/test1916 delete mode 100644 Engine/lib/curl/tests/data/test1917 delete mode 100644 Engine/lib/curl/tests/data/test1918 delete mode 100644 Engine/lib/curl/tests/data/test1919 delete mode 100644 Engine/lib/curl/tests/data/test192 delete mode 100644 Engine/lib/curl/tests/data/test193 delete mode 100644 Engine/lib/curl/tests/data/test1933 delete mode 100644 Engine/lib/curl/tests/data/test1934 delete mode 100644 Engine/lib/curl/tests/data/test1935 delete mode 100644 Engine/lib/curl/tests/data/test1936 delete mode 100644 Engine/lib/curl/tests/data/test1937 delete mode 100644 Engine/lib/curl/tests/data/test1938 delete mode 100644 Engine/lib/curl/tests/data/test1939 delete mode 100644 Engine/lib/curl/tests/data/test194 delete mode 100644 Engine/lib/curl/tests/data/test1940 delete mode 100644 Engine/lib/curl/tests/data/test1941 delete mode 100644 Engine/lib/curl/tests/data/test1942 delete mode 100644 Engine/lib/curl/tests/data/test1943 delete mode 100644 Engine/lib/curl/tests/data/test1944 delete mode 100644 Engine/lib/curl/tests/data/test1945 delete mode 100644 Engine/lib/curl/tests/data/test1946 delete mode 100644 Engine/lib/curl/tests/data/test195 delete mode 100644 Engine/lib/curl/tests/data/test196 delete mode 100644 Engine/lib/curl/tests/data/test197 delete mode 100644 Engine/lib/curl/tests/data/test198 delete mode 100644 Engine/lib/curl/tests/data/test199 delete mode 100644 Engine/lib/curl/tests/data/test2 delete mode 100644 Engine/lib/curl/tests/data/test20 delete mode 100644 Engine/lib/curl/tests/data/test200 delete mode 100644 Engine/lib/curl/tests/data/test2000 delete mode 100644 Engine/lib/curl/tests/data/test2001 delete mode 100644 Engine/lib/curl/tests/data/test2002 delete mode 100644 Engine/lib/curl/tests/data/test2003 delete mode 100644 Engine/lib/curl/tests/data/test2004 delete mode 100644 Engine/lib/curl/tests/data/test201 delete mode 100644 Engine/lib/curl/tests/data/test202 delete mode 100644 Engine/lib/curl/tests/data/test2023 delete mode 100644 Engine/lib/curl/tests/data/test2024 delete mode 100644 Engine/lib/curl/tests/data/test2025 delete mode 100644 Engine/lib/curl/tests/data/test2026 delete mode 100644 Engine/lib/curl/tests/data/test2027 delete mode 100644 Engine/lib/curl/tests/data/test2028 delete mode 100644 Engine/lib/curl/tests/data/test2029 delete mode 100644 Engine/lib/curl/tests/data/test203 delete mode 100644 Engine/lib/curl/tests/data/test2030 delete mode 100644 Engine/lib/curl/tests/data/test2031 delete mode 100644 Engine/lib/curl/tests/data/test2032 delete mode 100644 Engine/lib/curl/tests/data/test2033 delete mode 100644 Engine/lib/curl/tests/data/test2034 delete mode 100644 Engine/lib/curl/tests/data/test2035 delete mode 100644 Engine/lib/curl/tests/data/test2036 delete mode 100644 Engine/lib/curl/tests/data/test2037 delete mode 100644 Engine/lib/curl/tests/data/test2038 delete mode 100644 Engine/lib/curl/tests/data/test2039 delete mode 100644 Engine/lib/curl/tests/data/test204 delete mode 100644 Engine/lib/curl/tests/data/test2040 delete mode 100644 Engine/lib/curl/tests/data/test2041 delete mode 100644 Engine/lib/curl/tests/data/test2042 delete mode 100644 Engine/lib/curl/tests/data/test2043 delete mode 100644 Engine/lib/curl/tests/data/test2044 delete mode 100644 Engine/lib/curl/tests/data/test2045 delete mode 100644 Engine/lib/curl/tests/data/test2046 delete mode 100644 Engine/lib/curl/tests/data/test2047 delete mode 100644 Engine/lib/curl/tests/data/test2048 delete mode 100644 Engine/lib/curl/tests/data/test2049 delete mode 100644 Engine/lib/curl/tests/data/test205 delete mode 100644 Engine/lib/curl/tests/data/test2050 delete mode 100644 Engine/lib/curl/tests/data/test2051 delete mode 100644 Engine/lib/curl/tests/data/test2052 delete mode 100644 Engine/lib/curl/tests/data/test2053 delete mode 100644 Engine/lib/curl/tests/data/test2054 delete mode 100644 Engine/lib/curl/tests/data/test2055 delete mode 100644 Engine/lib/curl/tests/data/test2056 delete mode 100644 Engine/lib/curl/tests/data/test2057 delete mode 100644 Engine/lib/curl/tests/data/test2058 delete mode 100644 Engine/lib/curl/tests/data/test2059 delete mode 100644 Engine/lib/curl/tests/data/test206 delete mode 100644 Engine/lib/curl/tests/data/test2060 delete mode 100644 Engine/lib/curl/tests/data/test2061 delete mode 100644 Engine/lib/curl/tests/data/test2062 delete mode 100644 Engine/lib/curl/tests/data/test2063 delete mode 100644 Engine/lib/curl/tests/data/test2064 delete mode 100644 Engine/lib/curl/tests/data/test2065 delete mode 100644 Engine/lib/curl/tests/data/test2066 delete mode 100644 Engine/lib/curl/tests/data/test2067 delete mode 100644 Engine/lib/curl/tests/data/test2068 delete mode 100644 Engine/lib/curl/tests/data/test2069 delete mode 100644 Engine/lib/curl/tests/data/test207 delete mode 100644 Engine/lib/curl/tests/data/test2070 delete mode 100644 Engine/lib/curl/tests/data/test2071 delete mode 100644 Engine/lib/curl/tests/data/test2072 delete mode 100644 Engine/lib/curl/tests/data/test2073 delete mode 100644 Engine/lib/curl/tests/data/test2074 delete mode 100644 Engine/lib/curl/tests/data/test2075 delete mode 100644 Engine/lib/curl/tests/data/test2076 delete mode 100644 Engine/lib/curl/tests/data/test2077 delete mode 100644 Engine/lib/curl/tests/data/test2078 delete mode 100644 Engine/lib/curl/tests/data/test2079 delete mode 100644 Engine/lib/curl/tests/data/test208 delete mode 100644 Engine/lib/curl/tests/data/test2080 delete mode 100644 Engine/lib/curl/tests/data/test2081 delete mode 100644 Engine/lib/curl/tests/data/test2082 delete mode 100644 Engine/lib/curl/tests/data/test2083 delete mode 100644 Engine/lib/curl/tests/data/test2084 delete mode 100644 Engine/lib/curl/tests/data/test2085 delete mode 100644 Engine/lib/curl/tests/data/test2086 delete mode 100644 Engine/lib/curl/tests/data/test2087 delete mode 100644 Engine/lib/curl/tests/data/test209 delete mode 100644 Engine/lib/curl/tests/data/test21 delete mode 100644 Engine/lib/curl/tests/data/test210 delete mode 100644 Engine/lib/curl/tests/data/test2100 delete mode 100644 Engine/lib/curl/tests/data/test211 delete mode 100644 Engine/lib/curl/tests/data/test212 delete mode 100644 Engine/lib/curl/tests/data/test213 delete mode 100644 Engine/lib/curl/tests/data/test214 delete mode 100644 Engine/lib/curl/tests/data/test215 delete mode 100644 Engine/lib/curl/tests/data/test216 delete mode 100644 Engine/lib/curl/tests/data/test217 delete mode 100644 Engine/lib/curl/tests/data/test218 delete mode 100644 Engine/lib/curl/tests/data/test219 delete mode 100644 Engine/lib/curl/tests/data/test22 delete mode 100644 Engine/lib/curl/tests/data/test220 delete mode 100644 Engine/lib/curl/tests/data/test2200 delete mode 100644 Engine/lib/curl/tests/data/test2201 delete mode 100644 Engine/lib/curl/tests/data/test2202 delete mode 100644 Engine/lib/curl/tests/data/test2203 delete mode 100644 Engine/lib/curl/tests/data/test2204 delete mode 100644 Engine/lib/curl/tests/data/test2205 delete mode 100644 Engine/lib/curl/tests/data/test221 delete mode 100644 Engine/lib/curl/tests/data/test222 delete mode 100644 Engine/lib/curl/tests/data/test223 delete mode 100644 Engine/lib/curl/tests/data/test224 delete mode 100644 Engine/lib/curl/tests/data/test225 delete mode 100644 Engine/lib/curl/tests/data/test226 delete mode 100644 Engine/lib/curl/tests/data/test227 delete mode 100644 Engine/lib/curl/tests/data/test228 delete mode 100644 Engine/lib/curl/tests/data/test229 delete mode 100644 Engine/lib/curl/tests/data/test23 delete mode 100644 Engine/lib/curl/tests/data/test230 delete mode 100644 Engine/lib/curl/tests/data/test231 delete mode 100644 Engine/lib/curl/tests/data/test232 delete mode 100644 Engine/lib/curl/tests/data/test233 delete mode 100644 Engine/lib/curl/tests/data/test234 delete mode 100644 Engine/lib/curl/tests/data/test235 delete mode 100644 Engine/lib/curl/tests/data/test236 delete mode 100644 Engine/lib/curl/tests/data/test237 delete mode 100644 Engine/lib/curl/tests/data/test238 delete mode 100644 Engine/lib/curl/tests/data/test239 delete mode 100644 Engine/lib/curl/tests/data/test24 delete mode 100644 Engine/lib/curl/tests/data/test240 delete mode 100644 Engine/lib/curl/tests/data/test241 delete mode 100644 Engine/lib/curl/tests/data/test242 delete mode 100644 Engine/lib/curl/tests/data/test243 delete mode 100644 Engine/lib/curl/tests/data/test244 delete mode 100644 Engine/lib/curl/tests/data/test245 delete mode 100644 Engine/lib/curl/tests/data/test246 delete mode 100644 Engine/lib/curl/tests/data/test247 delete mode 100644 Engine/lib/curl/tests/data/test248 delete mode 100644 Engine/lib/curl/tests/data/test249 delete mode 100644 Engine/lib/curl/tests/data/test25 delete mode 100644 Engine/lib/curl/tests/data/test250 delete mode 100644 Engine/lib/curl/tests/data/test251 delete mode 100644 Engine/lib/curl/tests/data/test252 delete mode 100644 Engine/lib/curl/tests/data/test253 delete mode 100644 Engine/lib/curl/tests/data/test254 delete mode 100644 Engine/lib/curl/tests/data/test255 delete mode 100644 Engine/lib/curl/tests/data/test256 delete mode 100644 Engine/lib/curl/tests/data/test257 delete mode 100644 Engine/lib/curl/tests/data/test258 delete mode 100644 Engine/lib/curl/tests/data/test259 delete mode 100644 Engine/lib/curl/tests/data/test26 delete mode 100644 Engine/lib/curl/tests/data/test260 delete mode 100644 Engine/lib/curl/tests/data/test261 delete mode 100644 Engine/lib/curl/tests/data/test262 delete mode 100644 Engine/lib/curl/tests/data/test263 delete mode 100644 Engine/lib/curl/tests/data/test264 delete mode 100644 Engine/lib/curl/tests/data/test265 delete mode 100644 Engine/lib/curl/tests/data/test266 delete mode 100644 Engine/lib/curl/tests/data/test267 delete mode 100644 Engine/lib/curl/tests/data/test268 delete mode 100644 Engine/lib/curl/tests/data/test269 delete mode 100644 Engine/lib/curl/tests/data/test27 delete mode 100644 Engine/lib/curl/tests/data/test270 delete mode 100644 Engine/lib/curl/tests/data/test271 delete mode 100644 Engine/lib/curl/tests/data/test272 delete mode 100644 Engine/lib/curl/tests/data/test273 delete mode 100644 Engine/lib/curl/tests/data/test274 delete mode 100644 Engine/lib/curl/tests/data/test275 delete mode 100644 Engine/lib/curl/tests/data/test276 delete mode 100644 Engine/lib/curl/tests/data/test277 delete mode 100644 Engine/lib/curl/tests/data/test278 delete mode 100644 Engine/lib/curl/tests/data/test279 delete mode 100644 Engine/lib/curl/tests/data/test28 delete mode 100644 Engine/lib/curl/tests/data/test280 delete mode 100644 Engine/lib/curl/tests/data/test281 delete mode 100644 Engine/lib/curl/tests/data/test282 delete mode 100644 Engine/lib/curl/tests/data/test283 delete mode 100644 Engine/lib/curl/tests/data/test284 delete mode 100644 Engine/lib/curl/tests/data/test285 delete mode 100644 Engine/lib/curl/tests/data/test286 delete mode 100644 Engine/lib/curl/tests/data/test287 delete mode 100644 Engine/lib/curl/tests/data/test288 delete mode 100644 Engine/lib/curl/tests/data/test289 delete mode 100644 Engine/lib/curl/tests/data/test29 delete mode 100644 Engine/lib/curl/tests/data/test290 delete mode 100644 Engine/lib/curl/tests/data/test291 delete mode 100644 Engine/lib/curl/tests/data/test292 delete mode 100644 Engine/lib/curl/tests/data/test293 delete mode 100644 Engine/lib/curl/tests/data/test294 delete mode 100644 Engine/lib/curl/tests/data/test295 delete mode 100644 Engine/lib/curl/tests/data/test296 delete mode 100644 Engine/lib/curl/tests/data/test297 delete mode 100644 Engine/lib/curl/tests/data/test298 delete mode 100644 Engine/lib/curl/tests/data/test299 delete mode 100644 Engine/lib/curl/tests/data/test3 delete mode 100644 Engine/lib/curl/tests/data/test30 delete mode 100644 Engine/lib/curl/tests/data/test300 delete mode 100644 Engine/lib/curl/tests/data/test3000 delete mode 100644 Engine/lib/curl/tests/data/test3001 delete mode 100644 Engine/lib/curl/tests/data/test3002 delete mode 100644 Engine/lib/curl/tests/data/test3003 delete mode 100644 Engine/lib/curl/tests/data/test3004 delete mode 100644 Engine/lib/curl/tests/data/test3005 delete mode 100644 Engine/lib/curl/tests/data/test3006 delete mode 100644 Engine/lib/curl/tests/data/test3007 delete mode 100644 Engine/lib/curl/tests/data/test3008 delete mode 100644 Engine/lib/curl/tests/data/test3009 delete mode 100644 Engine/lib/curl/tests/data/test301 delete mode 100644 Engine/lib/curl/tests/data/test3010 delete mode 100644 Engine/lib/curl/tests/data/test3011 delete mode 100644 Engine/lib/curl/tests/data/test3012 delete mode 100644 Engine/lib/curl/tests/data/test3013 delete mode 100644 Engine/lib/curl/tests/data/test3014 delete mode 100644 Engine/lib/curl/tests/data/test3015 delete mode 100644 Engine/lib/curl/tests/data/test3016 delete mode 100644 Engine/lib/curl/tests/data/test3017 delete mode 100644 Engine/lib/curl/tests/data/test3018 delete mode 100644 Engine/lib/curl/tests/data/test3019 delete mode 100644 Engine/lib/curl/tests/data/test302 delete mode 100644 Engine/lib/curl/tests/data/test3020 delete mode 100644 Engine/lib/curl/tests/data/test3021 delete mode 100644 Engine/lib/curl/tests/data/test3022 delete mode 100644 Engine/lib/curl/tests/data/test3023 delete mode 100644 Engine/lib/curl/tests/data/test3024 delete mode 100644 Engine/lib/curl/tests/data/test3025 delete mode 100644 Engine/lib/curl/tests/data/test3026 delete mode 100644 Engine/lib/curl/tests/data/test303 delete mode 100644 Engine/lib/curl/tests/data/test304 delete mode 100644 Engine/lib/curl/tests/data/test305 delete mode 100644 Engine/lib/curl/tests/data/test306 delete mode 100644 Engine/lib/curl/tests/data/test307 delete mode 100644 Engine/lib/curl/tests/data/test308 delete mode 100644 Engine/lib/curl/tests/data/test309 delete mode 100644 Engine/lib/curl/tests/data/test31 delete mode 100644 Engine/lib/curl/tests/data/test310 delete mode 100644 Engine/lib/curl/tests/data/test311 delete mode 100644 Engine/lib/curl/tests/data/test312 delete mode 100644 Engine/lib/curl/tests/data/test313 delete mode 100644 Engine/lib/curl/tests/data/test314 delete mode 100644 Engine/lib/curl/tests/data/test315 delete mode 100644 Engine/lib/curl/tests/data/test316 delete mode 100644 Engine/lib/curl/tests/data/test317 delete mode 100644 Engine/lib/curl/tests/data/test318 delete mode 100644 Engine/lib/curl/tests/data/test319 delete mode 100644 Engine/lib/curl/tests/data/test32 delete mode 100644 Engine/lib/curl/tests/data/test320 delete mode 100644 Engine/lib/curl/tests/data/test321 delete mode 100644 Engine/lib/curl/tests/data/test322 delete mode 100644 Engine/lib/curl/tests/data/test323 delete mode 100644 Engine/lib/curl/tests/data/test324 delete mode 100644 Engine/lib/curl/tests/data/test325 delete mode 100644 Engine/lib/curl/tests/data/test326 delete mode 100644 Engine/lib/curl/tests/data/test327 delete mode 100644 Engine/lib/curl/tests/data/test328 delete mode 100644 Engine/lib/curl/tests/data/test329 delete mode 100644 Engine/lib/curl/tests/data/test33 delete mode 100644 Engine/lib/curl/tests/data/test330 delete mode 100644 Engine/lib/curl/tests/data/test331 delete mode 100644 Engine/lib/curl/tests/data/test332 delete mode 100644 Engine/lib/curl/tests/data/test333 delete mode 100644 Engine/lib/curl/tests/data/test334 delete mode 100644 Engine/lib/curl/tests/data/test335 delete mode 100644 Engine/lib/curl/tests/data/test336 delete mode 100644 Engine/lib/curl/tests/data/test337 delete mode 100644 Engine/lib/curl/tests/data/test338 delete mode 100644 Engine/lib/curl/tests/data/test339 delete mode 100644 Engine/lib/curl/tests/data/test34 delete mode 100644 Engine/lib/curl/tests/data/test340 delete mode 100644 Engine/lib/curl/tests/data/test341 delete mode 100644 Engine/lib/curl/tests/data/test342 delete mode 100644 Engine/lib/curl/tests/data/test343 delete mode 100644 Engine/lib/curl/tests/data/test344 delete mode 100644 Engine/lib/curl/tests/data/test345 delete mode 100644 Engine/lib/curl/tests/data/test346 delete mode 100644 Engine/lib/curl/tests/data/test347 delete mode 100644 Engine/lib/curl/tests/data/test348 delete mode 100644 Engine/lib/curl/tests/data/test349 delete mode 100644 Engine/lib/curl/tests/data/test35 delete mode 100644 Engine/lib/curl/tests/data/test350 delete mode 100644 Engine/lib/curl/tests/data/test351 delete mode 100644 Engine/lib/curl/tests/data/test352 delete mode 100644 Engine/lib/curl/tests/data/test353 delete mode 100644 Engine/lib/curl/tests/data/test354 delete mode 100644 Engine/lib/curl/tests/data/test355 delete mode 100644 Engine/lib/curl/tests/data/test356 delete mode 100644 Engine/lib/curl/tests/data/test357 delete mode 100644 Engine/lib/curl/tests/data/test358 delete mode 100644 Engine/lib/curl/tests/data/test359 delete mode 100644 Engine/lib/curl/tests/data/test36 delete mode 100644 Engine/lib/curl/tests/data/test360 delete mode 100644 Engine/lib/curl/tests/data/test361 delete mode 100644 Engine/lib/curl/tests/data/test362 delete mode 100644 Engine/lib/curl/tests/data/test363 delete mode 100644 Engine/lib/curl/tests/data/test364 delete mode 100644 Engine/lib/curl/tests/data/test365 delete mode 100644 Engine/lib/curl/tests/data/test366 delete mode 100644 Engine/lib/curl/tests/data/test367 delete mode 100644 Engine/lib/curl/tests/data/test368 delete mode 100644 Engine/lib/curl/tests/data/test369 delete mode 100644 Engine/lib/curl/tests/data/test37 delete mode 100644 Engine/lib/curl/tests/data/test370 delete mode 100644 Engine/lib/curl/tests/data/test371 delete mode 100644 Engine/lib/curl/tests/data/test372 delete mode 100644 Engine/lib/curl/tests/data/test373 delete mode 100644 Engine/lib/curl/tests/data/test374 delete mode 100644 Engine/lib/curl/tests/data/test375 delete mode 100644 Engine/lib/curl/tests/data/test376 delete mode 100644 Engine/lib/curl/tests/data/test378 delete mode 100644 Engine/lib/curl/tests/data/test379 delete mode 100644 Engine/lib/curl/tests/data/test38 delete mode 100644 Engine/lib/curl/tests/data/test380 delete mode 100644 Engine/lib/curl/tests/data/test381 delete mode 100644 Engine/lib/curl/tests/data/test383 delete mode 100644 Engine/lib/curl/tests/data/test384 delete mode 100644 Engine/lib/curl/tests/data/test385 delete mode 100644 Engine/lib/curl/tests/data/test386 delete mode 100644 Engine/lib/curl/tests/data/test387 delete mode 100644 Engine/lib/curl/tests/data/test388 delete mode 100644 Engine/lib/curl/tests/data/test389 delete mode 100644 Engine/lib/curl/tests/data/test39 delete mode 100644 Engine/lib/curl/tests/data/test390 delete mode 100644 Engine/lib/curl/tests/data/test391 delete mode 100644 Engine/lib/curl/tests/data/test392 delete mode 100644 Engine/lib/curl/tests/data/test393 delete mode 100644 Engine/lib/curl/tests/data/test394 delete mode 100644 Engine/lib/curl/tests/data/test395 delete mode 100644 Engine/lib/curl/tests/data/test396 delete mode 100644 Engine/lib/curl/tests/data/test397 delete mode 100644 Engine/lib/curl/tests/data/test398 delete mode 100644 Engine/lib/curl/tests/data/test399 delete mode 100644 Engine/lib/curl/tests/data/test4 delete mode 100644 Engine/lib/curl/tests/data/test40 delete mode 100644 Engine/lib/curl/tests/data/test400 delete mode 100644 Engine/lib/curl/tests/data/test401 delete mode 100644 Engine/lib/curl/tests/data/test402 delete mode 100644 Engine/lib/curl/tests/data/test403 delete mode 100644 Engine/lib/curl/tests/data/test404 delete mode 100644 Engine/lib/curl/tests/data/test405 delete mode 100644 Engine/lib/curl/tests/data/test406 delete mode 100644 Engine/lib/curl/tests/data/test407 delete mode 100644 Engine/lib/curl/tests/data/test408 delete mode 100644 Engine/lib/curl/tests/data/test409 delete mode 100644 Engine/lib/curl/tests/data/test41 delete mode 100644 Engine/lib/curl/tests/data/test410 delete mode 100644 Engine/lib/curl/tests/data/test411 delete mode 100644 Engine/lib/curl/tests/data/test412 delete mode 100644 Engine/lib/curl/tests/data/test413 delete mode 100644 Engine/lib/curl/tests/data/test414 delete mode 100644 Engine/lib/curl/tests/data/test42 delete mode 100644 Engine/lib/curl/tests/data/test43 delete mode 100644 Engine/lib/curl/tests/data/test430 delete mode 100644 Engine/lib/curl/tests/data/test431 delete mode 100644 Engine/lib/curl/tests/data/test432 delete mode 100644 Engine/lib/curl/tests/data/test433 delete mode 100644 Engine/lib/curl/tests/data/test434 delete mode 100644 Engine/lib/curl/tests/data/test435 delete mode 100644 Engine/lib/curl/tests/data/test436 delete mode 100644 Engine/lib/curl/tests/data/test44 delete mode 100644 Engine/lib/curl/tests/data/test440 delete mode 100644 Engine/lib/curl/tests/data/test441 delete mode 100644 Engine/lib/curl/tests/data/test442 delete mode 100644 Engine/lib/curl/tests/data/test443 delete mode 100644 Engine/lib/curl/tests/data/test444 delete mode 100644 Engine/lib/curl/tests/data/test45 delete mode 100644 Engine/lib/curl/tests/data/test46 delete mode 100644 Engine/lib/curl/tests/data/test47 delete mode 100644 Engine/lib/curl/tests/data/test48 delete mode 100644 Engine/lib/curl/tests/data/test49 delete mode 100644 Engine/lib/curl/tests/data/test490 delete mode 100644 Engine/lib/curl/tests/data/test491 delete mode 100644 Engine/lib/curl/tests/data/test492 delete mode 100644 Engine/lib/curl/tests/data/test493 delete mode 100644 Engine/lib/curl/tests/data/test494 delete mode 100644 Engine/lib/curl/tests/data/test5 delete mode 100644 Engine/lib/curl/tests/data/test50 delete mode 100644 Engine/lib/curl/tests/data/test500 delete mode 100644 Engine/lib/curl/tests/data/test501 delete mode 100644 Engine/lib/curl/tests/data/test502 delete mode 100644 Engine/lib/curl/tests/data/test503 delete mode 100644 Engine/lib/curl/tests/data/test504 delete mode 100644 Engine/lib/curl/tests/data/test505 delete mode 100644 Engine/lib/curl/tests/data/test506 delete mode 100644 Engine/lib/curl/tests/data/test507 delete mode 100644 Engine/lib/curl/tests/data/test508 delete mode 100644 Engine/lib/curl/tests/data/test509 delete mode 100644 Engine/lib/curl/tests/data/test51 delete mode 100644 Engine/lib/curl/tests/data/test510 delete mode 100644 Engine/lib/curl/tests/data/test511 delete mode 100644 Engine/lib/curl/tests/data/test512 delete mode 100644 Engine/lib/curl/tests/data/test513 delete mode 100644 Engine/lib/curl/tests/data/test514 delete mode 100644 Engine/lib/curl/tests/data/test515 delete mode 100644 Engine/lib/curl/tests/data/test516 delete mode 100644 Engine/lib/curl/tests/data/test517 delete mode 100644 Engine/lib/curl/tests/data/test518 delete mode 100644 Engine/lib/curl/tests/data/test519 delete mode 100644 Engine/lib/curl/tests/data/test52 delete mode 100644 Engine/lib/curl/tests/data/test520 delete mode 100644 Engine/lib/curl/tests/data/test521 delete mode 100644 Engine/lib/curl/tests/data/test522 delete mode 100644 Engine/lib/curl/tests/data/test523 delete mode 100644 Engine/lib/curl/tests/data/test524 delete mode 100644 Engine/lib/curl/tests/data/test525 delete mode 100644 Engine/lib/curl/tests/data/test526 delete mode 100644 Engine/lib/curl/tests/data/test527 delete mode 100644 Engine/lib/curl/tests/data/test528 delete mode 100644 Engine/lib/curl/tests/data/test529 delete mode 100644 Engine/lib/curl/tests/data/test53 delete mode 100644 Engine/lib/curl/tests/data/test530 delete mode 100644 Engine/lib/curl/tests/data/test531 delete mode 100644 Engine/lib/curl/tests/data/test532 delete mode 100644 Engine/lib/curl/tests/data/test533 delete mode 100644 Engine/lib/curl/tests/data/test534 delete mode 100644 Engine/lib/curl/tests/data/test535 delete mode 100644 Engine/lib/curl/tests/data/test537 delete mode 100644 Engine/lib/curl/tests/data/test538 delete mode 100644 Engine/lib/curl/tests/data/test539 delete mode 100644 Engine/lib/curl/tests/data/test54 delete mode 100644 Engine/lib/curl/tests/data/test540 delete mode 100644 Engine/lib/curl/tests/data/test541 delete mode 100644 Engine/lib/curl/tests/data/test542 delete mode 100644 Engine/lib/curl/tests/data/test543 delete mode 100644 Engine/lib/curl/tests/data/test544 delete mode 100644 Engine/lib/curl/tests/data/test545 delete mode 100644 Engine/lib/curl/tests/data/test546 delete mode 100644 Engine/lib/curl/tests/data/test547 delete mode 100644 Engine/lib/curl/tests/data/test548 delete mode 100644 Engine/lib/curl/tests/data/test549 delete mode 100644 Engine/lib/curl/tests/data/test55 delete mode 100644 Engine/lib/curl/tests/data/test550 delete mode 100644 Engine/lib/curl/tests/data/test551 delete mode 100644 Engine/lib/curl/tests/data/test552 delete mode 100644 Engine/lib/curl/tests/data/test553 delete mode 100644 Engine/lib/curl/tests/data/test554 delete mode 100644 Engine/lib/curl/tests/data/test555 delete mode 100644 Engine/lib/curl/tests/data/test556 delete mode 100644 Engine/lib/curl/tests/data/test557 delete mode 100644 Engine/lib/curl/tests/data/test558 delete mode 100644 Engine/lib/curl/tests/data/test559 delete mode 100644 Engine/lib/curl/tests/data/test56 delete mode 100644 Engine/lib/curl/tests/data/test560 delete mode 100644 Engine/lib/curl/tests/data/test561 delete mode 100644 Engine/lib/curl/tests/data/test562 delete mode 100644 Engine/lib/curl/tests/data/test563 delete mode 100644 Engine/lib/curl/tests/data/test564 delete mode 100644 Engine/lib/curl/tests/data/test565 delete mode 100644 Engine/lib/curl/tests/data/test566 delete mode 100644 Engine/lib/curl/tests/data/test567 delete mode 100644 Engine/lib/curl/tests/data/test568 delete mode 100644 Engine/lib/curl/tests/data/test569 delete mode 100644 Engine/lib/curl/tests/data/test57 delete mode 100644 Engine/lib/curl/tests/data/test570 delete mode 100644 Engine/lib/curl/tests/data/test571 delete mode 100644 Engine/lib/curl/tests/data/test572 delete mode 100644 Engine/lib/curl/tests/data/test573 delete mode 100644 Engine/lib/curl/tests/data/test574 delete mode 100644 Engine/lib/curl/tests/data/test575 delete mode 100644 Engine/lib/curl/tests/data/test576 delete mode 100644 Engine/lib/curl/tests/data/test577 delete mode 100644 Engine/lib/curl/tests/data/test578 delete mode 100644 Engine/lib/curl/tests/data/test579 delete mode 100644 Engine/lib/curl/tests/data/test58 delete mode 100644 Engine/lib/curl/tests/data/test580 delete mode 100644 Engine/lib/curl/tests/data/test581 delete mode 100644 Engine/lib/curl/tests/data/test582 delete mode 100644 Engine/lib/curl/tests/data/test583 delete mode 100644 Engine/lib/curl/tests/data/test584 delete mode 100644 Engine/lib/curl/tests/data/test585 delete mode 100644 Engine/lib/curl/tests/data/test586 delete mode 100644 Engine/lib/curl/tests/data/test587 delete mode 100644 Engine/lib/curl/tests/data/test588 delete mode 100644 Engine/lib/curl/tests/data/test589 delete mode 100644 Engine/lib/curl/tests/data/test59 delete mode 100644 Engine/lib/curl/tests/data/test590 delete mode 100644 Engine/lib/curl/tests/data/test591 delete mode 100644 Engine/lib/curl/tests/data/test592 delete mode 100644 Engine/lib/curl/tests/data/test593 delete mode 100644 Engine/lib/curl/tests/data/test594 delete mode 100644 Engine/lib/curl/tests/data/test595 delete mode 100644 Engine/lib/curl/tests/data/test596 delete mode 100644 Engine/lib/curl/tests/data/test597 delete mode 100644 Engine/lib/curl/tests/data/test598 delete mode 100644 Engine/lib/curl/tests/data/test599 delete mode 100644 Engine/lib/curl/tests/data/test6 delete mode 100644 Engine/lib/curl/tests/data/test60 delete mode 100644 Engine/lib/curl/tests/data/test600 delete mode 100644 Engine/lib/curl/tests/data/test601 delete mode 100644 Engine/lib/curl/tests/data/test602 delete mode 100644 Engine/lib/curl/tests/data/test603 delete mode 100644 Engine/lib/curl/tests/data/test604 delete mode 100644 Engine/lib/curl/tests/data/test605 delete mode 100644 Engine/lib/curl/tests/data/test606 delete mode 100644 Engine/lib/curl/tests/data/test607 delete mode 100644 Engine/lib/curl/tests/data/test608 delete mode 100644 Engine/lib/curl/tests/data/test609 delete mode 100644 Engine/lib/curl/tests/data/test61 delete mode 100644 Engine/lib/curl/tests/data/test610 delete mode 100644 Engine/lib/curl/tests/data/test611 delete mode 100644 Engine/lib/curl/tests/data/test612 delete mode 100644 Engine/lib/curl/tests/data/test613 delete mode 100644 Engine/lib/curl/tests/data/test614 delete mode 100644 Engine/lib/curl/tests/data/test615 delete mode 100644 Engine/lib/curl/tests/data/test616 delete mode 100644 Engine/lib/curl/tests/data/test617 delete mode 100644 Engine/lib/curl/tests/data/test618 delete mode 100644 Engine/lib/curl/tests/data/test619 delete mode 100644 Engine/lib/curl/tests/data/test62 delete mode 100644 Engine/lib/curl/tests/data/test620 delete mode 100644 Engine/lib/curl/tests/data/test621 delete mode 100644 Engine/lib/curl/tests/data/test622 delete mode 100644 Engine/lib/curl/tests/data/test623 delete mode 100644 Engine/lib/curl/tests/data/test624 delete mode 100644 Engine/lib/curl/tests/data/test625 delete mode 100644 Engine/lib/curl/tests/data/test626 delete mode 100644 Engine/lib/curl/tests/data/test627 delete mode 100644 Engine/lib/curl/tests/data/test628 delete mode 100644 Engine/lib/curl/tests/data/test629 delete mode 100644 Engine/lib/curl/tests/data/test63 delete mode 100644 Engine/lib/curl/tests/data/test630 delete mode 100644 Engine/lib/curl/tests/data/test631 delete mode 100644 Engine/lib/curl/tests/data/test632 delete mode 100644 Engine/lib/curl/tests/data/test633 delete mode 100644 Engine/lib/curl/tests/data/test634 delete mode 100644 Engine/lib/curl/tests/data/test635 delete mode 100644 Engine/lib/curl/tests/data/test636 delete mode 100644 Engine/lib/curl/tests/data/test637 delete mode 100644 Engine/lib/curl/tests/data/test638 delete mode 100644 Engine/lib/curl/tests/data/test639 delete mode 100644 Engine/lib/curl/tests/data/test64 delete mode 100644 Engine/lib/curl/tests/data/test640 delete mode 100644 Engine/lib/curl/tests/data/test641 delete mode 100644 Engine/lib/curl/tests/data/test642 delete mode 100644 Engine/lib/curl/tests/data/test643 delete mode 100644 Engine/lib/curl/tests/data/test645 delete mode 100644 Engine/lib/curl/tests/data/test646 delete mode 100644 Engine/lib/curl/tests/data/test647 delete mode 100644 Engine/lib/curl/tests/data/test648 delete mode 100644 Engine/lib/curl/tests/data/test649 delete mode 100644 Engine/lib/curl/tests/data/test65 delete mode 100644 Engine/lib/curl/tests/data/test650 delete mode 100644 Engine/lib/curl/tests/data/test651 delete mode 100644 Engine/lib/curl/tests/data/test652 delete mode 100644 Engine/lib/curl/tests/data/test653 delete mode 100644 Engine/lib/curl/tests/data/test654 delete mode 100644 Engine/lib/curl/tests/data/test655 delete mode 100644 Engine/lib/curl/tests/data/test656 delete mode 100644 Engine/lib/curl/tests/data/test658 delete mode 100644 Engine/lib/curl/tests/data/test659 delete mode 100644 Engine/lib/curl/tests/data/test66 delete mode 100644 Engine/lib/curl/tests/data/test660 delete mode 100644 Engine/lib/curl/tests/data/test661 delete mode 100644 Engine/lib/curl/tests/data/test662 delete mode 100644 Engine/lib/curl/tests/data/test663 delete mode 100644 Engine/lib/curl/tests/data/test664 delete mode 100644 Engine/lib/curl/tests/data/test665 delete mode 100644 Engine/lib/curl/tests/data/test666 delete mode 100644 Engine/lib/curl/tests/data/test667 delete mode 100644 Engine/lib/curl/tests/data/test668 delete mode 100644 Engine/lib/curl/tests/data/test669 delete mode 100644 Engine/lib/curl/tests/data/test67 delete mode 100644 Engine/lib/curl/tests/data/test670 delete mode 100644 Engine/lib/curl/tests/data/test671 delete mode 100644 Engine/lib/curl/tests/data/test672 delete mode 100644 Engine/lib/curl/tests/data/test673 delete mode 100644 Engine/lib/curl/tests/data/test674 delete mode 100644 Engine/lib/curl/tests/data/test675 delete mode 100644 Engine/lib/curl/tests/data/test676 delete mode 100644 Engine/lib/curl/tests/data/test677 delete mode 100644 Engine/lib/curl/tests/data/test678 delete mode 100644 Engine/lib/curl/tests/data/test679 delete mode 100644 Engine/lib/curl/tests/data/test68 delete mode 100644 Engine/lib/curl/tests/data/test680 delete mode 100644 Engine/lib/curl/tests/data/test681 delete mode 100644 Engine/lib/curl/tests/data/test682 delete mode 100644 Engine/lib/curl/tests/data/test683 delete mode 100644 Engine/lib/curl/tests/data/test684 delete mode 100644 Engine/lib/curl/tests/data/test685 delete mode 100644 Engine/lib/curl/tests/data/test69 delete mode 100644 Engine/lib/curl/tests/data/test7 delete mode 100644 Engine/lib/curl/tests/data/test70 delete mode 100644 Engine/lib/curl/tests/data/test700 delete mode 100644 Engine/lib/curl/tests/data/test701 delete mode 100644 Engine/lib/curl/tests/data/test702 delete mode 100644 Engine/lib/curl/tests/data/test703 delete mode 100644 Engine/lib/curl/tests/data/test704 delete mode 100644 Engine/lib/curl/tests/data/test705 delete mode 100644 Engine/lib/curl/tests/data/test706 delete mode 100644 Engine/lib/curl/tests/data/test707 delete mode 100644 Engine/lib/curl/tests/data/test708 delete mode 100644 Engine/lib/curl/tests/data/test709 delete mode 100644 Engine/lib/curl/tests/data/test71 delete mode 100644 Engine/lib/curl/tests/data/test710 delete mode 100644 Engine/lib/curl/tests/data/test711 delete mode 100644 Engine/lib/curl/tests/data/test712 delete mode 100644 Engine/lib/curl/tests/data/test713 delete mode 100644 Engine/lib/curl/tests/data/test714 delete mode 100644 Engine/lib/curl/tests/data/test715 delete mode 100644 Engine/lib/curl/tests/data/test716 delete mode 100644 Engine/lib/curl/tests/data/test717 delete mode 100644 Engine/lib/curl/tests/data/test718 delete mode 100644 Engine/lib/curl/tests/data/test719 delete mode 100644 Engine/lib/curl/tests/data/test72 delete mode 100644 Engine/lib/curl/tests/data/test720 delete mode 100644 Engine/lib/curl/tests/data/test721 delete mode 100644 Engine/lib/curl/tests/data/test73 delete mode 100644 Engine/lib/curl/tests/data/test74 delete mode 100644 Engine/lib/curl/tests/data/test75 delete mode 100644 Engine/lib/curl/tests/data/test76 delete mode 100644 Engine/lib/curl/tests/data/test77 delete mode 100644 Engine/lib/curl/tests/data/test78 delete mode 100644 Engine/lib/curl/tests/data/test79 delete mode 100644 Engine/lib/curl/tests/data/test8 delete mode 100644 Engine/lib/curl/tests/data/test80 delete mode 100644 Engine/lib/curl/tests/data/test800 delete mode 100644 Engine/lib/curl/tests/data/test801 delete mode 100644 Engine/lib/curl/tests/data/test802 delete mode 100644 Engine/lib/curl/tests/data/test803 delete mode 100644 Engine/lib/curl/tests/data/test804 delete mode 100644 Engine/lib/curl/tests/data/test805 delete mode 100644 Engine/lib/curl/tests/data/test806 delete mode 100644 Engine/lib/curl/tests/data/test807 delete mode 100644 Engine/lib/curl/tests/data/test808 delete mode 100644 Engine/lib/curl/tests/data/test809 delete mode 100644 Engine/lib/curl/tests/data/test81 delete mode 100644 Engine/lib/curl/tests/data/test810 delete mode 100644 Engine/lib/curl/tests/data/test811 delete mode 100644 Engine/lib/curl/tests/data/test812 delete mode 100644 Engine/lib/curl/tests/data/test813 delete mode 100644 Engine/lib/curl/tests/data/test814 delete mode 100644 Engine/lib/curl/tests/data/test815 delete mode 100644 Engine/lib/curl/tests/data/test816 delete mode 100644 Engine/lib/curl/tests/data/test817 delete mode 100644 Engine/lib/curl/tests/data/test818 delete mode 100644 Engine/lib/curl/tests/data/test819 delete mode 100644 Engine/lib/curl/tests/data/test82 delete mode 100644 Engine/lib/curl/tests/data/test820 delete mode 100644 Engine/lib/curl/tests/data/test821 delete mode 100644 Engine/lib/curl/tests/data/test822 delete mode 100644 Engine/lib/curl/tests/data/test823 delete mode 100644 Engine/lib/curl/tests/data/test824 delete mode 100644 Engine/lib/curl/tests/data/test825 delete mode 100644 Engine/lib/curl/tests/data/test826 delete mode 100644 Engine/lib/curl/tests/data/test827 delete mode 100644 Engine/lib/curl/tests/data/test828 delete mode 100644 Engine/lib/curl/tests/data/test829 delete mode 100644 Engine/lib/curl/tests/data/test83 delete mode 100644 Engine/lib/curl/tests/data/test830 delete mode 100644 Engine/lib/curl/tests/data/test831 delete mode 100644 Engine/lib/curl/tests/data/test832 delete mode 100644 Engine/lib/curl/tests/data/test833 delete mode 100644 Engine/lib/curl/tests/data/test834 delete mode 100644 Engine/lib/curl/tests/data/test835 delete mode 100644 Engine/lib/curl/tests/data/test836 delete mode 100644 Engine/lib/curl/tests/data/test837 delete mode 100644 Engine/lib/curl/tests/data/test838 delete mode 100644 Engine/lib/curl/tests/data/test839 delete mode 100644 Engine/lib/curl/tests/data/test84 delete mode 100644 Engine/lib/curl/tests/data/test840 delete mode 100644 Engine/lib/curl/tests/data/test841 delete mode 100644 Engine/lib/curl/tests/data/test842 delete mode 100644 Engine/lib/curl/tests/data/test843 delete mode 100644 Engine/lib/curl/tests/data/test844 delete mode 100644 Engine/lib/curl/tests/data/test845 delete mode 100644 Engine/lib/curl/tests/data/test846 delete mode 100644 Engine/lib/curl/tests/data/test847 delete mode 100644 Engine/lib/curl/tests/data/test848 delete mode 100644 Engine/lib/curl/tests/data/test849 delete mode 100644 Engine/lib/curl/tests/data/test85 delete mode 100644 Engine/lib/curl/tests/data/test850 delete mode 100644 Engine/lib/curl/tests/data/test851 delete mode 100644 Engine/lib/curl/tests/data/test852 delete mode 100644 Engine/lib/curl/tests/data/test853 delete mode 100644 Engine/lib/curl/tests/data/test854 delete mode 100644 Engine/lib/curl/tests/data/test855 delete mode 100644 Engine/lib/curl/tests/data/test856 delete mode 100644 Engine/lib/curl/tests/data/test857 delete mode 100644 Engine/lib/curl/tests/data/test858 delete mode 100644 Engine/lib/curl/tests/data/test859 delete mode 100644 Engine/lib/curl/tests/data/test86 delete mode 100644 Engine/lib/curl/tests/data/test860 delete mode 100644 Engine/lib/curl/tests/data/test861 delete mode 100644 Engine/lib/curl/tests/data/test862 delete mode 100644 Engine/lib/curl/tests/data/test863 delete mode 100644 Engine/lib/curl/tests/data/test864 delete mode 100644 Engine/lib/curl/tests/data/test865 delete mode 100644 Engine/lib/curl/tests/data/test866 delete mode 100644 Engine/lib/curl/tests/data/test867 delete mode 100644 Engine/lib/curl/tests/data/test868 delete mode 100644 Engine/lib/curl/tests/data/test869 delete mode 100644 Engine/lib/curl/tests/data/test87 delete mode 100644 Engine/lib/curl/tests/data/test870 delete mode 100644 Engine/lib/curl/tests/data/test871 delete mode 100644 Engine/lib/curl/tests/data/test872 delete mode 100644 Engine/lib/curl/tests/data/test873 delete mode 100644 Engine/lib/curl/tests/data/test874 delete mode 100644 Engine/lib/curl/tests/data/test875 delete mode 100644 Engine/lib/curl/tests/data/test876 delete mode 100644 Engine/lib/curl/tests/data/test877 delete mode 100644 Engine/lib/curl/tests/data/test878 delete mode 100644 Engine/lib/curl/tests/data/test879 delete mode 100644 Engine/lib/curl/tests/data/test88 delete mode 100644 Engine/lib/curl/tests/data/test880 delete mode 100644 Engine/lib/curl/tests/data/test881 delete mode 100644 Engine/lib/curl/tests/data/test882 delete mode 100644 Engine/lib/curl/tests/data/test883 delete mode 100644 Engine/lib/curl/tests/data/test884 delete mode 100644 Engine/lib/curl/tests/data/test885 delete mode 100644 Engine/lib/curl/tests/data/test886 delete mode 100644 Engine/lib/curl/tests/data/test887 delete mode 100644 Engine/lib/curl/tests/data/test888 delete mode 100644 Engine/lib/curl/tests/data/test889 delete mode 100644 Engine/lib/curl/tests/data/test89 delete mode 100644 Engine/lib/curl/tests/data/test890 delete mode 100644 Engine/lib/curl/tests/data/test891 delete mode 100644 Engine/lib/curl/tests/data/test892 delete mode 100644 Engine/lib/curl/tests/data/test893 delete mode 100644 Engine/lib/curl/tests/data/test894 delete mode 100644 Engine/lib/curl/tests/data/test895 delete mode 100644 Engine/lib/curl/tests/data/test896 delete mode 100644 Engine/lib/curl/tests/data/test897 delete mode 100644 Engine/lib/curl/tests/data/test898 delete mode 100644 Engine/lib/curl/tests/data/test9 delete mode 100644 Engine/lib/curl/tests/data/test90 delete mode 100644 Engine/lib/curl/tests/data/test900 delete mode 100644 Engine/lib/curl/tests/data/test901 delete mode 100644 Engine/lib/curl/tests/data/test902 delete mode 100644 Engine/lib/curl/tests/data/test903 delete mode 100644 Engine/lib/curl/tests/data/test904 delete mode 100644 Engine/lib/curl/tests/data/test905 delete mode 100644 Engine/lib/curl/tests/data/test906 delete mode 100644 Engine/lib/curl/tests/data/test907 delete mode 100644 Engine/lib/curl/tests/data/test908 delete mode 100644 Engine/lib/curl/tests/data/test909 delete mode 100644 Engine/lib/curl/tests/data/test91 delete mode 100644 Engine/lib/curl/tests/data/test910 delete mode 100644 Engine/lib/curl/tests/data/test911 delete mode 100644 Engine/lib/curl/tests/data/test912 delete mode 100644 Engine/lib/curl/tests/data/test913 delete mode 100644 Engine/lib/curl/tests/data/test914 delete mode 100644 Engine/lib/curl/tests/data/test915 delete mode 100644 Engine/lib/curl/tests/data/test916 delete mode 100644 Engine/lib/curl/tests/data/test917 delete mode 100644 Engine/lib/curl/tests/data/test918 delete mode 100644 Engine/lib/curl/tests/data/test919 delete mode 100644 Engine/lib/curl/tests/data/test92 delete mode 100644 Engine/lib/curl/tests/data/test920 delete mode 100644 Engine/lib/curl/tests/data/test921 delete mode 100644 Engine/lib/curl/tests/data/test922 delete mode 100644 Engine/lib/curl/tests/data/test923 delete mode 100644 Engine/lib/curl/tests/data/test924 delete mode 100644 Engine/lib/curl/tests/data/test925 delete mode 100644 Engine/lib/curl/tests/data/test926 delete mode 100644 Engine/lib/curl/tests/data/test927 delete mode 100644 Engine/lib/curl/tests/data/test928 delete mode 100644 Engine/lib/curl/tests/data/test929 delete mode 100644 Engine/lib/curl/tests/data/test93 delete mode 100644 Engine/lib/curl/tests/data/test930 delete mode 100644 Engine/lib/curl/tests/data/test931 delete mode 100644 Engine/lib/curl/tests/data/test932 delete mode 100644 Engine/lib/curl/tests/data/test933 delete mode 100644 Engine/lib/curl/tests/data/test934 delete mode 100644 Engine/lib/curl/tests/data/test935 delete mode 100644 Engine/lib/curl/tests/data/test936 delete mode 100644 Engine/lib/curl/tests/data/test937 delete mode 100644 Engine/lib/curl/tests/data/test938 delete mode 100644 Engine/lib/curl/tests/data/test939 delete mode 100644 Engine/lib/curl/tests/data/test94 delete mode 100644 Engine/lib/curl/tests/data/test940 delete mode 100644 Engine/lib/curl/tests/data/test941 delete mode 100644 Engine/lib/curl/tests/data/test942 delete mode 100644 Engine/lib/curl/tests/data/test943 delete mode 100644 Engine/lib/curl/tests/data/test944 delete mode 100644 Engine/lib/curl/tests/data/test945 delete mode 100644 Engine/lib/curl/tests/data/test946 delete mode 100644 Engine/lib/curl/tests/data/test947 delete mode 100644 Engine/lib/curl/tests/data/test948 delete mode 100644 Engine/lib/curl/tests/data/test949 delete mode 100644 Engine/lib/curl/tests/data/test95 delete mode 100644 Engine/lib/curl/tests/data/test950 delete mode 100644 Engine/lib/curl/tests/data/test951 delete mode 100644 Engine/lib/curl/tests/data/test952 delete mode 100644 Engine/lib/curl/tests/data/test953 delete mode 100644 Engine/lib/curl/tests/data/test954 delete mode 100644 Engine/lib/curl/tests/data/test955 delete mode 100644 Engine/lib/curl/tests/data/test956 delete mode 100644 Engine/lib/curl/tests/data/test957 delete mode 100644 Engine/lib/curl/tests/data/test958 delete mode 100644 Engine/lib/curl/tests/data/test959 delete mode 100644 Engine/lib/curl/tests/data/test96 delete mode 100644 Engine/lib/curl/tests/data/test960 delete mode 100644 Engine/lib/curl/tests/data/test961 delete mode 100644 Engine/lib/curl/tests/data/test962 delete mode 100644 Engine/lib/curl/tests/data/test963 delete mode 100644 Engine/lib/curl/tests/data/test964 delete mode 100644 Engine/lib/curl/tests/data/test965 delete mode 100644 Engine/lib/curl/tests/data/test966 delete mode 100644 Engine/lib/curl/tests/data/test967 delete mode 100644 Engine/lib/curl/tests/data/test968 delete mode 100644 Engine/lib/curl/tests/data/test969 delete mode 100644 Engine/lib/curl/tests/data/test97 delete mode 100644 Engine/lib/curl/tests/data/test970 delete mode 100644 Engine/lib/curl/tests/data/test971 delete mode 100644 Engine/lib/curl/tests/data/test972 delete mode 100644 Engine/lib/curl/tests/data/test973 delete mode 100644 Engine/lib/curl/tests/data/test974 delete mode 100644 Engine/lib/curl/tests/data/test975 delete mode 100644 Engine/lib/curl/tests/data/test976 delete mode 100644 Engine/lib/curl/tests/data/test977 delete mode 100644 Engine/lib/curl/tests/data/test98 delete mode 100644 Engine/lib/curl/tests/data/test980 delete mode 100644 Engine/lib/curl/tests/data/test981 delete mode 100644 Engine/lib/curl/tests/data/test982 delete mode 100644 Engine/lib/curl/tests/data/test983 delete mode 100644 Engine/lib/curl/tests/data/test984 delete mode 100644 Engine/lib/curl/tests/data/test985 delete mode 100644 Engine/lib/curl/tests/data/test986 delete mode 100644 Engine/lib/curl/tests/data/test99 delete mode 100755 Engine/lib/curl/tests/dictserver.py delete mode 100644 Engine/lib/curl/tests/directories.pm delete mode 100755 Engine/lib/curl/tests/disable-scan.pl delete mode 100644 Engine/lib/curl/tests/error-codes.pl delete mode 100755 Engine/lib/curl/tests/extern-scan.pl delete mode 100644 Engine/lib/curl/tests/ftp.pm delete mode 100755 Engine/lib/curl/tests/ftpserver.pl delete mode 100644 Engine/lib/curl/tests/getpart.pm delete mode 100755 Engine/lib/curl/tests/http2-server.pl delete mode 100755 Engine/lib/curl/tests/httpserver.pl delete mode 100644 Engine/lib/curl/tests/libtest/.checksrc delete mode 100644 Engine/lib/curl/tests/libtest/CMakeLists.txt delete mode 100644 Engine/lib/curl/tests/libtest/Makefile.am delete mode 100644 Engine/lib/curl/tests/libtest/Makefile.in delete mode 100644 Engine/lib/curl/tests/libtest/Makefile.inc delete mode 100644 Engine/lib/curl/tests/libtest/chkdecimalpoint.c delete mode 100644 Engine/lib/curl/tests/libtest/chkhostname.c delete mode 100644 Engine/lib/curl/tests/libtest/first.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1156.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1500.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1501.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1502.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1506.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1507.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1508.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1509.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1510.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1511.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1512.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1513.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1514.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1515.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1517.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1518.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1520.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1522.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1523.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1525.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1526.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1527.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1528.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1529.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1530.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1531.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1532.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1533.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1534.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1535.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1536.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1537.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1538.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1540.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1542.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1550.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1551.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1552.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1553.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1554.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1555.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1556.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1557.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1558.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1559.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1560.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1564.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1565.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1567.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1568.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1569.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1591.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1592.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1593.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1594.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1597.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1905.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1906.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1907.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1908.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1910.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1911.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1912.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1913.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1915.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1916.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1918.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1919.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1933.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1934.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1935.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1936.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1937.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1938.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1939.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1940.c delete mode 100644 Engine/lib/curl/tests/libtest/lib1945.c delete mode 100644 Engine/lib/curl/tests/libtest/lib3010.c delete mode 100644 Engine/lib/curl/tests/libtest/lib3025.c delete mode 100644 Engine/lib/curl/tests/libtest/lib3026.c delete mode 100644 Engine/lib/curl/tests/libtest/lib500.c delete mode 100644 Engine/lib/curl/tests/libtest/lib501.c delete mode 100644 Engine/lib/curl/tests/libtest/lib502.c delete mode 100644 Engine/lib/curl/tests/libtest/lib503.c delete mode 100644 Engine/lib/curl/tests/libtest/lib504.c delete mode 100644 Engine/lib/curl/tests/libtest/lib505.c delete mode 100644 Engine/lib/curl/tests/libtest/lib506.c delete mode 100644 Engine/lib/curl/tests/libtest/lib507.c delete mode 100644 Engine/lib/curl/tests/libtest/lib508.c delete mode 100644 Engine/lib/curl/tests/libtest/lib509.c delete mode 100644 Engine/lib/curl/tests/libtest/lib510.c delete mode 100644 Engine/lib/curl/tests/libtest/lib511.c delete mode 100644 Engine/lib/curl/tests/libtest/lib512.c delete mode 100644 Engine/lib/curl/tests/libtest/lib513.c delete mode 100644 Engine/lib/curl/tests/libtest/lib514.c delete mode 100644 Engine/lib/curl/tests/libtest/lib515.c delete mode 100644 Engine/lib/curl/tests/libtest/lib516.c delete mode 100644 Engine/lib/curl/tests/libtest/lib517.c delete mode 100644 Engine/lib/curl/tests/libtest/lib518.c delete mode 100644 Engine/lib/curl/tests/libtest/lib519.c delete mode 100644 Engine/lib/curl/tests/libtest/lib520.c delete mode 100644 Engine/lib/curl/tests/libtest/lib521.c delete mode 100644 Engine/lib/curl/tests/libtest/lib523.c delete mode 100644 Engine/lib/curl/tests/libtest/lib524.c delete mode 100644 Engine/lib/curl/tests/libtest/lib525.c delete mode 100644 Engine/lib/curl/tests/libtest/lib526.c delete mode 100644 Engine/lib/curl/tests/libtest/lib530.c delete mode 100644 Engine/lib/curl/tests/libtest/lib533.c delete mode 100644 Engine/lib/curl/tests/libtest/lib537.c delete mode 100644 Engine/lib/curl/tests/libtest/lib539.c delete mode 100644 Engine/lib/curl/tests/libtest/lib540.c delete mode 100644 Engine/lib/curl/tests/libtest/lib541.c delete mode 100644 Engine/lib/curl/tests/libtest/lib542.c delete mode 100644 Engine/lib/curl/tests/libtest/lib543.c delete mode 100644 Engine/lib/curl/tests/libtest/lib544.c delete mode 100644 Engine/lib/curl/tests/libtest/lib547.c delete mode 100644 Engine/lib/curl/tests/libtest/lib549.c delete mode 100644 Engine/lib/curl/tests/libtest/lib552.c delete mode 100644 Engine/lib/curl/tests/libtest/lib553.c delete mode 100644 Engine/lib/curl/tests/libtest/lib554.c delete mode 100644 Engine/lib/curl/tests/libtest/lib555.c delete mode 100644 Engine/lib/curl/tests/libtest/lib556.c delete mode 100644 Engine/lib/curl/tests/libtest/lib557.c delete mode 100644 Engine/lib/curl/tests/libtest/lib558.c delete mode 100644 Engine/lib/curl/tests/libtest/lib559.c delete mode 100644 Engine/lib/curl/tests/libtest/lib560.c delete mode 100644 Engine/lib/curl/tests/libtest/lib562.c delete mode 100644 Engine/lib/curl/tests/libtest/lib564.c delete mode 100644 Engine/lib/curl/tests/libtest/lib566.c delete mode 100644 Engine/lib/curl/tests/libtest/lib567.c delete mode 100644 Engine/lib/curl/tests/libtest/lib568.c delete mode 100644 Engine/lib/curl/tests/libtest/lib569.c delete mode 100644 Engine/lib/curl/tests/libtest/lib570.c delete mode 100644 Engine/lib/curl/tests/libtest/lib571.c delete mode 100644 Engine/lib/curl/tests/libtest/lib572.c delete mode 100644 Engine/lib/curl/tests/libtest/lib573.c delete mode 100644 Engine/lib/curl/tests/libtest/lib574.c delete mode 100644 Engine/lib/curl/tests/libtest/lib575.c delete mode 100644 Engine/lib/curl/tests/libtest/lib576.c delete mode 100644 Engine/lib/curl/tests/libtest/lib578.c delete mode 100644 Engine/lib/curl/tests/libtest/lib579.c delete mode 100644 Engine/lib/curl/tests/libtest/lib582.c delete mode 100644 Engine/lib/curl/tests/libtest/lib583.c delete mode 100644 Engine/lib/curl/tests/libtest/lib586.c delete mode 100644 Engine/lib/curl/tests/libtest/lib589.c delete mode 100644 Engine/lib/curl/tests/libtest/lib590.c delete mode 100644 Engine/lib/curl/tests/libtest/lib591.c delete mode 100644 Engine/lib/curl/tests/libtest/lib597.c delete mode 100644 Engine/lib/curl/tests/libtest/lib598.c delete mode 100644 Engine/lib/curl/tests/libtest/lib599.c delete mode 100644 Engine/lib/curl/tests/libtest/lib643.c delete mode 100644 Engine/lib/curl/tests/libtest/lib650.c delete mode 100644 Engine/lib/curl/tests/libtest/lib651.c delete mode 100644 Engine/lib/curl/tests/libtest/lib652.c delete mode 100644 Engine/lib/curl/tests/libtest/lib653.c delete mode 100644 Engine/lib/curl/tests/libtest/lib654.c delete mode 100644 Engine/lib/curl/tests/libtest/lib655.c delete mode 100644 Engine/lib/curl/tests/libtest/lib658.c delete mode 100644 Engine/lib/curl/tests/libtest/lib659.c delete mode 100644 Engine/lib/curl/tests/libtest/lib661.c delete mode 100644 Engine/lib/curl/tests/libtest/lib666.c delete mode 100644 Engine/lib/curl/tests/libtest/lib667.c delete mode 100644 Engine/lib/curl/tests/libtest/lib668.c delete mode 100644 Engine/lib/curl/tests/libtest/lib670.c delete mode 100644 Engine/lib/curl/tests/libtest/lib674.c delete mode 100644 Engine/lib/curl/tests/libtest/lib676.c delete mode 100644 Engine/lib/curl/tests/libtest/lib677.c delete mode 100644 Engine/lib/curl/tests/libtest/lib678.c delete mode 100644 Engine/lib/curl/tests/libtest/libauthretry.c delete mode 100644 Engine/lib/curl/tests/libtest/libntlmconnect.c delete mode 100644 Engine/lib/curl/tests/libtest/libprereq.c delete mode 100755 Engine/lib/curl/tests/libtest/mk-lib1521.pl delete mode 100755 Engine/lib/curl/tests/libtest/notexists.pl delete mode 100644 Engine/lib/curl/tests/libtest/sethostname.c delete mode 100644 Engine/lib/curl/tests/libtest/sethostname.h delete mode 100644 Engine/lib/curl/tests/libtest/stub_gssapi.c delete mode 100644 Engine/lib/curl/tests/libtest/stub_gssapi.h delete mode 100644 Engine/lib/curl/tests/libtest/test.h delete mode 100755 Engine/lib/curl/tests/libtest/test1013.pl delete mode 100755 Engine/lib/curl/tests/libtest/test1022.pl delete mode 100755 Engine/lib/curl/tests/libtest/test307.pl delete mode 100755 Engine/lib/curl/tests/libtest/test610.pl delete mode 100755 Engine/lib/curl/tests/libtest/test613.pl delete mode 100644 Engine/lib/curl/tests/libtest/testtrace.c delete mode 100644 Engine/lib/curl/tests/libtest/testtrace.h delete mode 100644 Engine/lib/curl/tests/libtest/testutil.c delete mode 100644 Engine/lib/curl/tests/libtest/testutil.h delete mode 100755 Engine/lib/curl/tests/manpage-scan.pl delete mode 100644 Engine/lib/curl/tests/manpage-syntax.pl delete mode 100755 Engine/lib/curl/tests/mem-include-scan.pl delete mode 100755 Engine/lib/curl/tests/memanalyze.pl delete mode 100755 Engine/lib/curl/tests/negtelnetserver.py delete mode 100755 Engine/lib/curl/tests/nroff-scan.pl delete mode 100644 Engine/lib/curl/tests/options-scan.pl delete mode 100644 Engine/lib/curl/tests/pathhelp.pm delete mode 100755 Engine/lib/curl/tests/rtspserver.pl delete mode 100644 Engine/lib/curl/tests/runtests.1 delete mode 100755 Engine/lib/curl/tests/runtests.pl delete mode 100755 Engine/lib/curl/tests/secureserver.pl delete mode 100644 Engine/lib/curl/tests/server/CMakeLists.txt delete mode 100644 Engine/lib/curl/tests/server/Makefile.am delete mode 100644 Engine/lib/curl/tests/server/Makefile.in delete mode 100644 Engine/lib/curl/tests/server/Makefile.inc delete mode 100755 Engine/lib/curl/tests/server/base64.pl delete mode 100644 Engine/lib/curl/tests/server/disabled.c delete mode 100644 Engine/lib/curl/tests/server/fake_ntlm.c delete mode 100644 Engine/lib/curl/tests/server/getpart.c delete mode 100644 Engine/lib/curl/tests/server/getpart.h delete mode 100644 Engine/lib/curl/tests/server/mqttd.c delete mode 100644 Engine/lib/curl/tests/server/resolve.c delete mode 100644 Engine/lib/curl/tests/server/rtspd.c delete mode 100644 Engine/lib/curl/tests/server/server_setup.h delete mode 100644 Engine/lib/curl/tests/server/server_sockaddr.h delete mode 100644 Engine/lib/curl/tests/server/sockfilt.c delete mode 100644 Engine/lib/curl/tests/server/socksd.c delete mode 100644 Engine/lib/curl/tests/server/sws.c delete mode 100644 Engine/lib/curl/tests/server/testpart.c delete mode 100644 Engine/lib/curl/tests/server/tftp.h delete mode 100644 Engine/lib/curl/tests/server/tftpd.c delete mode 100644 Engine/lib/curl/tests/server/util.c delete mode 100644 Engine/lib/curl/tests/server/util.h delete mode 100644 Engine/lib/curl/tests/serverhelp.pm delete mode 100755 Engine/lib/curl/tests/smbserver.py delete mode 100644 Engine/lib/curl/tests/sshhelp.pm delete mode 100644 Engine/lib/curl/tests/sshserver.pl delete mode 100644 Engine/lib/curl/tests/stunnel.pem delete mode 100755 Engine/lib/curl/tests/symbol-scan.pl delete mode 100644 Engine/lib/curl/tests/testcurl.1 delete mode 100755 Engine/lib/curl/tests/testcurl.pl delete mode 100755 Engine/lib/curl/tests/tftpserver.pl delete mode 100644 Engine/lib/curl/tests/unit/CMakeLists.txt delete mode 100644 Engine/lib/curl/tests/unit/Makefile.am delete mode 100644 Engine/lib/curl/tests/unit/Makefile.in delete mode 100644 Engine/lib/curl/tests/unit/Makefile.inc delete mode 100644 Engine/lib/curl/tests/unit/README.md delete mode 100644 Engine/lib/curl/tests/unit/curlcheck.h delete mode 100644 Engine/lib/curl/tests/unit/unit1300.c delete mode 100644 Engine/lib/curl/tests/unit/unit1301.c delete mode 100644 Engine/lib/curl/tests/unit/unit1302.c delete mode 100644 Engine/lib/curl/tests/unit/unit1303.c delete mode 100644 Engine/lib/curl/tests/unit/unit1304.c delete mode 100644 Engine/lib/curl/tests/unit/unit1305.c delete mode 100644 Engine/lib/curl/tests/unit/unit1307.c delete mode 100644 Engine/lib/curl/tests/unit/unit1308.c delete mode 100644 Engine/lib/curl/tests/unit/unit1309.c delete mode 100644 Engine/lib/curl/tests/unit/unit1323.c delete mode 100644 Engine/lib/curl/tests/unit/unit1330.c delete mode 100644 Engine/lib/curl/tests/unit/unit1394.c delete mode 100644 Engine/lib/curl/tests/unit/unit1395.c delete mode 100644 Engine/lib/curl/tests/unit/unit1396.c delete mode 100644 Engine/lib/curl/tests/unit/unit1397.c delete mode 100644 Engine/lib/curl/tests/unit/unit1398.c delete mode 100644 Engine/lib/curl/tests/unit/unit1399.c delete mode 100644 Engine/lib/curl/tests/unit/unit1600.c delete mode 100644 Engine/lib/curl/tests/unit/unit1601.c delete mode 100644 Engine/lib/curl/tests/unit/unit1602.c delete mode 100644 Engine/lib/curl/tests/unit/unit1603.c delete mode 100644 Engine/lib/curl/tests/unit/unit1604.c delete mode 100644 Engine/lib/curl/tests/unit/unit1605.c delete mode 100644 Engine/lib/curl/tests/unit/unit1606.c delete mode 100644 Engine/lib/curl/tests/unit/unit1607.c delete mode 100644 Engine/lib/curl/tests/unit/unit1608.c delete mode 100644 Engine/lib/curl/tests/unit/unit1609.c delete mode 100644 Engine/lib/curl/tests/unit/unit1610.c delete mode 100644 Engine/lib/curl/tests/unit/unit1611.c delete mode 100644 Engine/lib/curl/tests/unit/unit1612.c delete mode 100644 Engine/lib/curl/tests/unit/unit1620.c delete mode 100644 Engine/lib/curl/tests/unit/unit1621.c delete mode 100644 Engine/lib/curl/tests/unit/unit1650.c delete mode 100644 Engine/lib/curl/tests/unit/unit1651.c delete mode 100644 Engine/lib/curl/tests/unit/unit1652.c delete mode 100644 Engine/lib/curl/tests/unit/unit1653.c delete mode 100644 Engine/lib/curl/tests/unit/unit1654.c delete mode 100644 Engine/lib/curl/tests/unit/unit1655.c delete mode 100644 Engine/lib/curl/tests/unit/unit1660.c delete mode 100644 Engine/lib/curl/tests/unit/unit1661.c delete mode 100755 Engine/lib/curl/tests/util.py delete mode 100644 Engine/lib/curl/tests/valgrind.pm delete mode 100644 Engine/lib/curl/tests/valgrind.supp delete mode 100755 Engine/lib/curl/tests/version-scan.pl delete mode 100644 Engine/lib/curl/winbuild/Makefile.vc delete mode 100644 Engine/lib/curl/winbuild/MakefileBuild.vc delete mode 100644 Engine/lib/curl/winbuild/README.md delete mode 100755 Engine/lib/curl/winbuild/gen_resp_file.bat diff --git a/Engine/lib/curl/CHANGES b/Engine/lib/curl/CHANGES deleted file mode 100644 index e45ee08aa..000000000 --- a/Engine/lib/curl/CHANGES +++ /dev/null @@ -1,7784 +0,0 @@ - _ _ ____ _ - ___| | | | _ \| | - / __| | | | |_) | | - | (__| |_| | _ <| |___ - \___|\___/|_| \_\_____| - - Changelog - -Version 7.85.0 (31 Aug 2022) - -Daniel Stenberg (31 Aug 2022) -- RELEASE-NOTES: synced - - curl 7.85.0 release - -- THANKS: add contributors from the 7.85.0 release - -- getparam: correctly clean args - - Follow-up to bf7e887b2442783ab52 - - The previous fix for #9128 was incomplete and caused #9397. - - Fixes #9397 - Closes #9399 - -- zuul: remove the clang-tidy job - - Turns out we don't see the warnings, but the warnings right now are - plain ridiculous and unhelpful so we can just as well just kill this - job. - - Closes #9390 - -- cmake: set feature PSL if present - - ... make test 1014 pass when libpsl is used. - - Closes #9391 - -- lib530: simplify realloc failure exit path - - To make code analyzers happier - - Closes #9392 - -- [Orgad Shaneh brought this change] - - tests: add tests for netrc login/password combinations - - Covers the following PRs: - - - #9066 - - #9247 - - #9248 - - Closes #9256 - -- [Orgad Shaneh brought this change] - - url: really use the user provided in the url when netrc entry exists - - If the user is specified as part of the URL, and the same user exists - in .netrc, Authorization header was not sent at all. - - The user and password fields were assigned in conn->user and password - but the user was not assigned to data->state.aptr, which is the field - that is used in output_auth_headers and friends. - - Fix by assigning the user also to aptr. - - Amends commit d1237ac906ae7e3cd7a22c3a2d3a135a97edfbf5. - - Fixes #9243 - -- [Orgad Shaneh brought this change] - - netrc: Use the password from lines without login - - If netrc entry has password with empty login, use it for any username. - - Example: - .netrc: - machine example.com password 123456 - - curl -vn http://user@example.com/ - - Fix it by initializing state_our_login to TRUE, and reset it only when - finding an entry with the same host and different login. - - Closes #9248 - -- [Jay Satiro brought this change] - - url: treat missing usernames in netrc as empty - - - If, after parsing netrc, there is a password with no username then - set a blank username. - - This used to be the case prior to 7d600ad (precedes 7.82). Note - parseurlandfillconn already does the same thing for URLs. - - Reported-by: Raivis - Testing-by: Domen Kožar - - Fixes https://github.com/curl/curl/issues/8653 - Closes #9334 - Closes #9066 - -- test8: verify that "ctrl-byte cookies" are ignored - -- cookie: reject cookies with "control bytes" - - Rejects 0x01 - 0x1f (except 0x09) plus 0x7f - - Reported-by: Axel Chong - - Bug: https://curl.se/docs/CVE-2022-35252.html - - CVE-2022-35252 - - Closes #9381 - -- libssh: ignore deprecation warnings - - libssh 0.10.0 marks all SCP functions as "deprecated" which causes - compiler warnings and errors in our CI jobs and elsewhere. Ignore - deprecation warnings if 0.10.0 or later is found in the build. - - If they actually remove the functions at a later point, then someone can - deal with that pain and functionality break then. - - Fixes #9382 - Closes #9383 - -- Revert "schannel: when importing PFX, disable key persistence" - - This reverts commit 70d010d285315e5f1cad6bdb4953e167b069b692. - - Due to further reports in #9300 that indicate this commit might - introduce problems. - -- multi: use larger dns hash table for multi interface - - Have curl_multi_init() use a much larger DNS hash table than used for - the easy interface to scale and perform better when used with _many_ - host names. - - curl_share_init() sets an in-between size. - - Inspired-by: Ivan Tsybulin - See #9340 - Closes #9376 - -Marc Hoersken (28 Aug 2022) -- CI/runtests.pl: add param for dedicated curl to talk to APIs - - This should make it possible to also report test failures - if our freshly build curl binary is not fully functional. - - Reviewed-by: Daniel Stenberg - Closes #9360 - -Daniel Stenberg (27 Aug 2022) -- [Jacob Tolar brought this change] - - openssl: add cert path in error message - - Closes #9349 - -- [Jacob Tolar brought this change] - - cert.d: clarify that escape character works for file paths - - Closes #9349 - -- gha: move over ngtcp2-gnutls CI job from zuul - - Closes #9331 - -Marc Hoersken (26 Aug 2022) -- cmake: add detection of threadsafe feature - - Avoids failing test 1014 by replicating configure checks - for HAVE_ATOMIC and _WIN32_WINNT with custom CMake tests. - - Reviewed-by: Marcel Raad - - Follow up to #8680 - Closes #9312 - -Daniel Stenberg (26 Aug 2022) -- RELEASE-NOTES: synced - -Marc Hoersken (26 Aug 2022) -- CI/azure: align torture shallowness with GHA - - There 25 is used with FTP tests skipped, and 20 for FTP tests. - This should make torture tests stay within the 60min timeout. - - Reviewed-by: Daniel Stenberg - Closes #9371 - -- multi_wait: fix and improve Curl_poll error handling on Windows - - First check for errors and return CURLM_UNRECOVERABLE_POLL - before moving forward and waiting on socket readiness events. - - Reviewed-by: Jay Satiro - Reviewed-by: Marcel Raad - - Reported-by: Daniel Stenberg - Ref: #9361 - - Follow up to #8961 - Closes #9372 - -- multi_wait: fix skipping to populate revents for extra_fds - - On Windows revents was not populated for extra_fds if - multi_wait had to wait due to the Curl_poll pre-check - not signalling any readiness. This commit fixes that. - - Reviewed-by: Marcel Raad - Reviewed-by: Jay Satiro - - Closes #9361 - -- CI/appveyor: disable TLS in msys2-native autotools builds - - Schannel cannot be used from msys2-native Linux-emulated builds. - - Reviewed-by: Marcel Raad - Reviewed-by: Daniel Stenberg - - Follow up to #9367 - Closes #9370 - -Jay Satiro (25 Aug 2022) -- tests: fix http2 tests to use CRLF headers - - Prior to this change some tests that rely on nghttpx proxy did not use - CRLF headers everywhere. A recent change in nghttp2, which updated its - version of llhttp (HTTP parser), requires curl's HTTP/1.1 test server to - use CRLF headers. - - Ref: https://github.com/nghttp2/nghttp2/commit/9d389e8 - - Fixes https://github.com/curl/curl/issues/9364 - Closes https://github.com/curl/curl/pull/9365 - -Daniel Stenberg (25 Aug 2022) -- [rcombs brought this change] - - multi: use a pipe instead of a socketpair on apple platforms - - Sockets may be shut down by the kernel when the app is moved to the - background, but pipes are not. - - Removed from KNOWN_BUGS - - Fixes #6132 - Closes #9368 - -- [Somnath Kundu brought this change] - - libssh2: provide symlink name in SFTP dir listing - - When reading the symbolic link name for a file, we need to add the file - name to base path name. - - Closes #9369 - -- configure: if asked to use TLS, fail if no TLS lib was detected - - Previously the configure script would just warn about this fact and - continue with TLS disabled build which is not always helpful. TLS should - be explicitly disabled if that is what the user wants. - - Closes #9367 - -- [Dustin Howett brought this change] - - schannel: when importing PFX, disable key persistence - - By default, the PFXImportCertStore API persists the key in the user's - key store (as though the certificate was being imported for permanent, - ongoing use.) - - The documentation specifies that keys that are not to be persisted - should be imported with the flag `PKCS12_NO_PERSIST_KEY`. - NOTE: this flag is only supported on versions of Windows newer than XP - and Server 2003. - - Fixes #9300 - Closes #9363 - -- unit1303: four tests should have TRUE for 'connecting' - - To match the comments. - - Reported-by: Wu Zheng - - See #9355 - Closes #9356 - -- CURLOPT_BUFFERSIZE.3: add upload buffersize to see also - - Closes #9354 - -- [Fabian Fischer brought this change] - - HTTP3.md: add missing autoreconf command for building with wolfssl - - Closes #9353 - -- RELEASE-NOTES: synced - -- multi: have curl_multi_remove_handle close CONNECT_ONLY transfer - - Ẃhen it has been used in the multi interface, it is otherwise left in - the connection cache, can't be reused and nothing will close them since - the easy handle loses the association with the multi handle and thus the - connection cache - until the multi handle is closed or it gets pruned - because the cache is full. - - Reported-by: Dominik Thalhammer - Fixes #9335 - Closes #9342 - -- docs/cmdline-opts: remove \& escapes from all .d files - - gen.pl escapes them itself now - -- docs/cmdline-opts/gen.pl: encode leading single and double quotes - - As "(aq" and "(dq" to prevent them from implying a meaning in the nroff - output. This removes the need for using \& escapes in the .d files' - description parts. - - Closes #9352 - -Marc Hoersken (23 Aug 2022) -- tests/server/sockfilt.c: avoid race condition without a mutex - - Avoid loosing any triggered handles by first aborting and joining - the waiting threads before evaluating the individual signal state. - - This removes the race condition and therefore need for a mutex. - - Closes #9023 - -Daniel Stenberg (22 Aug 2022) -- [Emil Engler brought this change] - - url: output the maximum when rejecting a url - - This commit changes the failf message to output the maximum length, when - curl refuses to process a URL because it is too long. - - See: #9317 - Closes: #9327 - -- [Chris Paulson-Ellis brought this change] - - configure: fix broken m4 syntax in TLS options - - Commit b589696f added lines to some shell within AC_ARG_WITH macros, but - inadvertently failed to move the final closing ). - - Quote the script section using braces. - - So, if these problems have been around for a while, how did I find them? - Only because I did a configure including these options: - - $ ./configure --with-openssl --without-rustls - SSL: enabled (OpenSSL) - - Closes #9344 - -- tests/data/CMakeLists: remove making the 'show' makefile target - - It is not used by runtests since 3c0f462 - - Closes #9333 - -- tests/data/Makefile: remove 'filecheck' target - - No practical use anymore since 3c0f4622cdfd6 - - Closes #9332 - -- libssh2: make atime/mtime date overflow return error - - Closes #9328 - -- libssh: make atime/mtime date overflow return error - - Closes #9328 - -- examples/curlx.c: remove - - This example is a bit convoluted to use as an example, combined with the - special license for it makes it unsuitable. - - Closes #9330 - -- [Tobias Nygren brought this change] - - curl.h: include on SunOS - - It is needed for fd_set to be visible to downstream consumers that use - . Header is known to exist at least as far back as Solaris - 2.6. - - Closes #9329 - -- DEPRECATE.md: push the NSS deprecation date forward one year to 2023 - - URL: https://curl.se/mail/lib-2022-08/0016.html - -- libssh2: setting atime or mtime >32bit on 4-bytes-long systems - - Since the libssh2 API uses 'long' to store the timestamp, it cannot - transfer >32bit times on Windows and 32bit architecture builds. - - Avoid nasty surprises by instead not setting such time. - - Spotted by Coverity - - Closes #9325 - -- libssh: setting atime or mtime > 32bit is now just skipped - - The libssh API used caps the time to an unsigned 32bit variable. Avoid - nasty surprises by instead not setting such time. - - Spotted by Coverity. - - Closes #9324 - -Jay Satiro (16 Aug 2022) -- KNOWN_BUGS: Windows Unicode builds use homedir in current locale - - Bug: https://github.com/curl/curl/pull/7252 - Reported-by: dEajL3kA@users.noreply.github.com - - Ref: https://github.com/curl/curl/pull/7281 - - Closes https://github.com/curl/curl/pull/9305 - -Daniel Stenberg (16 Aug 2022) -- test399: switch it to use a config file instead - - ... as using a 65535 bytes host name in a URL does not fit on the - command line on some systems - like Windows. - - Reported-by: Marcel Raad - Fixes #9321 - Closes #9322 - -- RELEASE-NOTES: synced - -- asyn-ares: make a single alloc out of hostname + async data - - This saves one alloc per name resolve and simplifies the exit path. - - Closes #9310 - -- Curl_close: call Curl_resolver_cancel to avoid memory-leak - - There might be a pending (c-ares) resolve that isn't free'd up yet. - - Closes #9310 - -- asyn-thread: fix socket leak on OOM - - Closes #9310 - -- GHA: mv CI torture test from Zuul - - Closes #9310 - -- ngtcp2-wolfssl.yml: add GHA to build ngtcp2 + wolfSSL - - Closes #9318 - -- test399: verify check of too long host name - -- url: reject URLs with hostnames longer than 65535 bytes - - It *probably* causes other problems too since DNS can't resolve such - long names, but the SNI field in TLS is limited to 16 bits length. - - Closes #9317 - -- curl_multi_perform.3: minor language fix - - Closes #9316 - -- ngtcp2: fix picky compiler warnings with wolfSSL for QUIC - - Follow-up to 8a13be227eede2 - - Closes #9315 - -- ngtcp2: remove leftover variable - - Mistake leftover from my edit before push. - - Follow-up from 8a13be227eede2601c2b3b - Reported-by: Viktor Szakats - Bug: https://github.com/curl/curl/pull/9290#issuecomment-1214569167 - -Viktor Szakats (15 Aug 2022) -- Makefile.m32: allow -nghttp3/-ngtcp2 without -ssl [ci skip] - - Before this patch `-nghttp3`/`-ngtcp2` had an effect only when `-ssl` - was also enabled. `-ssl` meaning OpenSSL (and its forks). After - 8a13be227eede2601c2b3b1c63e08b3dc9b35dd5 nghttp3/ngtcp2 can also be - used together with wolfSSL. This patch adds the ability to enable - `-nghttp3`/`-ngtcp2` independently from `-ssl` (OpenSSL), allowing to - use it with wolfSSL or other, future TLS backends. - - Before this patch, it was fine to enable `-nghttp3`/`-ngtcp2` - unconditionally. After this patch, this is no longer the case, and now - it's the user's responsibility to enable `-nghttp3`/`-ngtcp2` only - together with a compatible TLS backend. - - When using a TLS backend other than OpenSSL, the TLS-specific ngtcp2 - library must be configured manually, e.g.: - `export CURL_LDFLAG_EXTRAS=-lngtcp2_crypto_wolfssl` - - (or via `NGTCP2_LIBS`) - - Closes #9314 - -Daniel Stenberg (15 Aug 2022) -- [Stefan Eissing brought this change] - - quic: add support via wolfSSL - - - based on ngtcp2 PR https://github.com/ngtcp2/ngtcp2/pull/505 - - configure adapted to build against ngtcp2 wolfssl crypto lib - - quic code added for creation of WOLFSSL* instances - - Closes #9290 - -Marcel Raad (14 Aug 2022) -- [David Carlier brought this change] - - memdebug: add annotation attributes - - memory debug tracking annotates whether the returned pointer does not - `alias`, hints where the size required is, for Windows to be better - debugged via Visual Studio. - - Closes https://github.com/curl/curl/pull/9306 - -Daniel Stenberg (14 Aug 2022) -- GHA: move libressl CI from zuul to GitHub - - Closes #9309 - -- KNOWN_BUGS: FTPS directory listing hangs on Windows with Schannel - - Closes #9161 - -- KNOWN_BUGS: CURLOPT_CERTINFO results in CURLE_OUT_OF_MEMORY with Schannel - - Closes #8741 - -- KNOWN_BUGS: libssh blocking and infinite loop problem - - Closes #8632 - -- RELEASE-NOTES: synced - -- msh3: fix the QUIC disconnect function - - And free request related memory better in 'done'. Fixes a memory-leak. - - Reported-by: Gisle Vanem - Fixes #8915 - Closes #9304 - -- connect: close the happy eyeballs loser connection when using QUIC - - Reviewed-by: Nick Banks - - Closes #9303 - -- [Emil Engler brought this change] - - refactor: split resolve_server() into functions - - This commit splits the branch-heavy resolve_server() function into - various sub-functions, in order to reduce the amount of nested - if/else-statements. - - Beside this, it also removes many else-sequences, by returning in the - previous if-statement. - - Closes #9283 - -- schannel: re-indent to use curl style better - - Only white space changes - - Closes #9301 - -- [Emanuele Torre brought this change] - - docs/cmdline-opts: fix example and categories for --form-escape - - The example was missing a "--form" argument - I also replaced "--form" with "-F" to shorten the line a bit since it - was already very long. - - And I also moved --form-escape from the "post" category to the "upload" - category (this is what I originally wanted to fix, before also noticing - the mistake in the example). - - Closes #9298 - -- [Nick Banks brought this change] - - HTTP3.md: update to msh3 v0.4.0 - - Closes #9297 - -- hostip: resolve *.localhost to 127.0.0.1/::1 - - Following the footsteps of other clients like Firefox/Chrome. RFC 6761 - says clients SHOULD do this. - - Add test 389 to verify. - - Reported-by: TheKnarf on github - Fixes #9192 - Closes #9296 - -Jay Satiro (11 Aug 2022) -- KNOWN_BUGS: long paths are not fully supported on Windows - - Bug: https://github.com/curl/curl/issues/8361 - Reported-by: Gisle Vanem - - Closes https://github.com/curl/curl/pull/9288 - -Daniel Stenberg (11 Aug 2022) -- config: remove the check for and use of SIZEOF_SHORT - - shorts are 2 bytes on all platforms curl runs and have ever run on. - - Closes #9291 - -- configure: introduce CURL_SIZEOF - - This is a rewrite of the previously used GPLv3+exception licensed - file. With this change, there is no more reference to GPL so we can - remove that from LICENSES/. - - Ref: #9220 - Closes #9291 - -- [Sean McArthur brought this change] - - hyper: customize test1274 to how hyper unfolds headers - - Closes #9217 - -- [Orgad Shaneh brought this change] - - curl-config: quote directories with potential space - - On Windows (at least with CMake), the default prefix is - C:/Program Files (x86)/CURL. - - Closes #9253 - -- [Oliver Roberts brought this change] - - amigaos: fix threaded resolver on AmigaOS 4.x - - Replace ip4 resolution function on AmigaOS 4.x, as it requires runtime - feature detection and extra code to make it thread safe. - - Closes #9265 - -- [Emil Engler brought this change] - - imap: use ISALNUM() for alphanumeric checks - - This commit replaces a self-made character check for alphanumeric - characters within imap_is_bchar() with the ISALNUM() macro, as it is - reduces the size of the code and makes the performance better, due to - ASCII arithmetic. - - Closes #9289 - -- RELEASE-NOTES: synced - -- [Cering on github brought this change] - - connect: add quic connection information - - Fixes #9286 - Closes #9287 - -- [Philip H brought this change] - - cirrus/freebsd-ci: bootstrap the pip installer - - Signed-off-by: Philip H <47042125+pheiduck@users.noreply.github.com> - - Closes #9213 - -- urldata: move smaller fields down in connectdata struct - - By (almost) sorting the struct fields in connectdata in a decending size - order, having the single char ones last, we reduce the number of holes - in the struct and thus the amount of storage needed. - - Closes #9280 - -- ldap: adapt to conn->port now being an 'int' - - Remove typecasts. Fix printf() formats. - - Follow-up from 764c6bd3bf. - Pointed out by Coverity CID 1507858. - - Closes #9281 - -- KNOWN_BUGS: Negotiate authentication against Hadoop HDFS - - Closes #8264 - -- [Oliver Roberts brought this change] - - file: add handling of native AmigaOS paths - - On AmigaOS 4.x, handle native absolute paths, whilst blocking relative - paths. Also allow unix style paths if feature enabled at link time. - - Inspiration-from: Michael Trebilcock - - Closes #9259 - -- KNOWN_BUGS: cmake build is not thread-safe - - The cmake build does not check for and verify presence of a working - Atomic type, which then makes curl_global_init() to not build - thread-safe on non-Windows platforms. - - Closes https://github.com/curl/curl/issues/8973 - Closes https://github.com/curl/curl/pull/8982 - -- [Oliver Roberts brought this change] - - configure: fixup bsdsocket detection code for AmigaOS 4.x - - The code that detects bsdsocket.library for AmigaOS did not work - for AmigaOS 4.x. This has been fixed and also cleaned up a little - to reduce duplication. Wasn't technically necessary before, but is - required when building with AmiSSL instead of OpenSSL. - - Closes #9268 - -- [Oliver Roberts brought this change] - - tool: reintroduce set file comment code for AmigaOS - - Amiga specific code which put the URL in the file comment was perhaps - accidentally removed in b88940850002a3f1c25bc6488b95ad30eb80d696 having - originally been added in 5c215bdbdfde8b2350cdcbac82aae0c914da5314. - Reworked to fit the code changes and added it back in. - - Reported-by: Michael Trebilcock - Originally-added-by: Chris Young - - Closes #9258 - -- urldata: make 'negnpn' use less storage - - The connectdata struct field 'negnpn' never holds a value larger than - 30, so an unsigned char saves 3 bytes struct space. - - Closes #9279 - -- urldata: make three *_proto struct fields smaller - - Use 'unsigned char' for storage instead of the enum, for three GSSAPI - related fields in the connectdata struct. - - Closes #9278 - -- connect: set socktype/protocol correctly - - So that an address used from the DNS cache that was previously used for - QUIC can be reused for TCP and vice versa. - - To make this possible, set conn->transport to "unix" for unix domain - connections ... and store the transport struct field in an unsigned char - to use less space. - - Reported-by: ウã•ã‚“ - Fixes #9274 - Closes #9276 - -- [Oliver Roberts brought this change] - - amissl: allow AmiSSL to be used with AmigaOS 4.x builds - - Enable AmiSSL to be used instead of static OpenSSL link libraries. - for AmigaOS 4.x, as it already is in the AmigaOS 3.x build. - - Closes #9269 - -- [opensignature on github brought this change] - - openssl: add details to "unable to set client certificate" error - - from: "curl: (58) unable to set client certificate" - - to: curl: (58) unable to set client certificate [error:0A00018F:SSL - routines::ee key too small] - - Closes #9228 - -- [Oliver Roberts brought this change] - - amissl: make AmiSSL v5 a minimum requirement - - AmiSSL v5 is the latest version, featuring a port of OpenSSL 3.0. - Support for previous OpenSSL 1.1.x versions has been dropped, so - makes sense to enforce v5 as the minimum requirement. This also - allows all the AmiSSL stub workarounds to be removed as they are - now provided in a link library in the AmiSSL SDK. - - Closes #9267 - -- [Oliver Roberts brought this change] - - configure: -pthread not available on AmigaOS 4.x - - The most recent GCC builds for AmigaOS 4.x do not allow -pthread and - exit with an error. Instead, need to explictly specify -lpthread. - - Closes #9266 - -- digest: pass over leading spaces in qop values - - When parsing the "qop=" parameter of the digest authentication, and the - value is provided within quotes, the list of values can have leading - white space which the parser previously did not handle correctly. - - Add test case 388 to verify. - - Reported-by: vlubart on github - Fixes #9264 - Closes #9270 - -- [Evgeny Grin (Karlson2k) brought this change] - - digest: reject broken header with session protocol but without qop - - Closes #9077 - -- CURLINFO_SPEED_UPLOAD/DOWNLOAD.3: fix examples - - Reported-by: jvvprasad78 on github - Assisted-by: Jay Satiro - Fixes #9239 - Closes #9241 - -- [Fabian Keil brought this change] - - test44[2-4]: add '--resolve' to the keywords - - ... so the tests can be automatically skipped when - using an external proxy like Privoxy. - - Closes #9250 - -- RELEASE-NOTES: synced - -- CURLOPT_CONNECT_ONLY.3: clarify multi API use - - Reported-by: Maxim Ivanov - Fixes #9244 - Closes #9262 - -- [Andrew Lambert brought this change] - - curl_easy_header: Add CURLH_PSEUDO to sanity check - - Fixes #9235 - Closes #9236 - -- [Emil Engler brought this change] - - docs: add dns category to --resolve - - This commit adds the dns category to the --resolve command line option, - because it can be interpreted as both: a low-level connection option and - an option related to the resolving of a hostname. - - It is also not common for dns options to belong to the connection - category and vice versa. --ipv4 and --ipv6 are both good examples. - - Closes #9229 - -Jay Satiro (2 Aug 2022) -- [Wyatt O'Day brought this change] - - schannel: Add TLS 1.3 support - - - Support TLS 1.3 as the default max TLS version for Windows Server 2022 - and Windows 11. - - - Support specifying TLS 1.3 ciphers via existing option - CURLOPT_TLS13_CIPHERS (tool: --tls13-ciphers). - - Closes https://github.com/curl/curl/pull/8419 - -Daniel Stenberg (2 Aug 2022) -- [Emil Engler brought this change] - - cmdline-opts/gen.pl: improve performance - - On some systems, the gen.pl script takes nearly two minutes for the - generation of the main-page, which is a completely unacceptable time. - - The slow performance has two causes: - 1. Use of a regex locale operator - 2. Useless invokations of loops - - The commit addresses the first issue by replacing the "\W" wiht - [^a-zA-Z0-9_], which is, according to regex101.com, functionally - equivalent to the previous operation, except that it is obviously - limited to ASCII only, which is fine, as the curl project is - English-only anyway. - - The second issue is being addressed by only running the loop if the line - contains a "--" in it. The loop may be completeley removed in the - future. - - Co-authored-by: Emanuele Torre - - See #8299 - Fixes #9230 - Closes #9232 - -- docs/cmdline: mark fail and fail-with-body as mutually exclusive - - Reported-by: Andreas Sommer - Fixes #9221 - Closes #9222 - -- [Nao Yonashiro brought this change] - - quiche: fix build failure - - Reviewed-by: Alessandro Ghedini - Closes #9223 - -Viktor Szakats (2 Aug 2022) -- configure.ac: drop references to deleted functions - - follow-up from 4d73854462f30948acab12984b611e9e33ee41e6 - - Reported-by: Oliver Roberts - Fixes #9238 - Closes #9240 - -Daniel Stenberg (28 Jul 2022) -- [Sean McArthur brought this change] - - hyper: enable obs-folded multiline headers - - Closes #9216 - -- connect: revert the use of IP*_RECVERR - - The options were added in #6341 and d13179d, but cause problems: Lots of - POLLIN event occurs but recvfrom read nothing. - - Reported-by: Tatsuhiro Tsujikawa - Fixes #9209 - Closes #9215 - -- [Marco Kamner brought this change] - - docs: remove him/her/he/she from documentation - - Closes #9208 - -- RELEASE-NOTES: synced - -- tool_getparam: make --doh-url "" switch it off - - A possible future addition could be to parse the URL first too to verify - that it is valid before trying to use it. - - Assisted-by: Jay Satiro - Closes #9207 - -- mailmap: add rzrymiak on github - -Jay Satiro (26 Jul 2022) -- ngtcp2: Fix build error due to change in nghttp3 prototypes - - ngtcp2/nghttp3@4a066b2 changed nghttp3_conn_block_stream and - nghttp3_conn_shutdown_stream_write return from int to void. - - Reported-by: jurisuk@users.noreply.github.com - - Fixes https://github.com/curl/curl/issues/9204 - Closes https://github.com/curl/curl/pull/9200 - -Daniel Stenberg (26 Jul 2022) -- [rzrymiak on github brought this change] - - BUGS.md: improve language - - Closes #9205 - -- [Philip H brought this change] - - cirrus.yml: replace py38-pip with py39-pip - - Reported-by: Jay Satiro - Fixes #9201 - Closes #9202 - -- tool_getparam: fix cleanarg() for unicode builds - - Use the correct type, and make cleanarg an empty macro if the cleaning - ability is absent. - - Fixes #9195 - Closes #9196 - - Reviewed-by: Jay Satiro - Reviewed-by: Marcel Raad - -Marc Hoersken (25 Jul 2022) -- test3026: add support for Windows using native Win32 threads - - Reviewed-by: Viktor Szakats - Reviewed-by: Jay Satiro - Reviewed-by: Daniel Stenberg - - Follow up to 7ade9c50b35d95d47a43880c3097bebab7a7e690 - Closes #9012 - -Jay Satiro (25 Jul 2022) -- [Evgeny Grin (Karlson2k) brought this change] - - digest: fix memory leak, fix not quoted 'opaque' - - Fix leak regression introduced by 3a6fe0c. - - Closes https://github.com/curl/curl/pull/9199 - -Daniel Stenberg (23 Jul 2022) -- tests: several enumerated type cleanups - - To please icc - - Closes #9179 - -- tool_paramhlp: fix "enumerated type mixed with another type" - - Warning by icc - - Closes #9179 - -- tool_writeout: fix enumerated type mixed with another type - - Closes #9179 - -- tool_cfgable: make 'synthetic_error' a plain bool - - The specific reason was not used. - - Closes #9179 - -- tool_paramhlp: make check_protocol return ParameterError - - "enumerated type mixed with another type" - - Closes #9179 - -- tool_formparse: fix variable may be used before its value is set - - Warning by icc - - Closes #9179 - -- sendf: skip storing HTTP headers if HTTP disabled - - Closes #9179 - -- url: enumerated type mixed with another type - - Follow-up to 1c58e7ae99ce2030213f28b - - Closes #9179 - -- urldata: change second proxytype field to unsigned char to match - - To avoid "enumerated type mixed with another type" - - Closes #9179 - -- http: typecast the httpreq assignment to avoid icc compiler warning - - error #188: enumerated type mixed with another type - - Closes #9179 - -- urldata: make state.httpreq an unsigned char - - To match set.method used for the same purpose. - - Closes #9179 - -- splay: avoid using -1 in unsigned variable - - To fix icc compiler warning integer conversion resulted in a change of sign - - Closes #9179 - -- sendf: store the header type in an usigned char to avoid icc warnings - - Closes #9179 - -- multi: fix the return code from Curl_pgrsDone() - - It does not return a CURLcode. Detected by the icc compiler warning - "enumerated type mixed with another type" - - Closes #9179 - -- sendf: make Curl_debug a void function - - As virtually no called checked the return code, and those that did - wrongly treated it as a CURLcode. Detected by the icc compiler warning: - enumerated type mixed with another type - - Closes #9179 - -- http_chunks: remove an assign + typecast - - As it caused icc to complain: "pointer cast involving 64-bit pointed-to - type" - - Closes #9179 - -- vtls: make Curl_ssl_backend() return the enum type curl_sslbackend - - To fix the icc warning enumerated type mixed with another type - - Closes #9179 - -- curl-compilers.m4: make icc use -diag* options and disable two warnings - - -wd and -we are deprecated and are now -diag-disable and -diag-error - - Disable warning 1024 and 2259 - - Closes #9179 - -- [Matthew Thompson brought this change] - - GHA: add two Intel compiler CI jobs - - Closes #9179 - -- [Daniel Katz brought this change] - - curl-functions.m4: check whether atomics can link rather than just compile - - Some build toolchains support C11 atomics (i.e., _Atomic types), but - will not link the associated atomics runtime unless a flag is passed. In - such an environment, linking an application with libcurl.a can fail due - to undefined symbols for atomic load/store functions. - - I encountered this behavior when upgrading curl to 7.84.0 and attempting - to build with Solaris Studio 12.6. Solaris provides the flag - -xatomic=[gcc | studio], allowing users to link to one of two atomics - runtime implementations. However, if the user does not provide this - flag, then neither runtime is linked. This led to builds failing in CI. - - Closes #9190 - -- [Rosen Penev brought this change] - - curl-wolfssl.m4: add options header when building test code - - Needed for certain configurations of wolfSSL. Otherwise, missing header - error may occur. - - Tested with OpenWrt. - - Closes #9187 - -- ftp: use a correct expire ID for timer expiry - - This was an accurate error pointed out by the icc warning: enumerated - type mixed with another type - - Ref: #9179 - Closes #9184 - -- sendf: fix paused header writes since after the header API - - Regression since d1e4a67 - - Reported-by: Sergey Ogryzkov - Fixes #9180 - Closes #9182 - -- mprintf: fix *dyn_vprintf() when out-of-memory - - Follow-up to 0e48ac1f99a. Torture-testing 1455 would lead to a memory - leak otherwise. - - Closes #9185 - -- curl-confopts: remove leftover AC_REQUIREs - - configure.ac:3488: warning: CURL_CHECK_FUNC_IOCTL is m4_require'd but not m4_defun'd - configure.ac:3488: warning: CURL_CHECK_FUNC_SETSOCKOPT is m4_require'd but not m4_defun'd - - follow-up from 4d73854462f30 - - Closes #9183 - -- file: fix icc enumerated type mixed with another type warning - - Ref: #9179 - Closes #9181 - -Viktor Szakats (19 Jul 2022) -- tidy-up: delete unused build configuration macros - - Most of them feature guards: - - - `CURL_INCLUDES_SYS_UIO` [1] - - `HAVE_ALLOCA_H` [2] - - `HAVE_CRYPTO_CLEANUP_ALL_EX_DATA` (unused since de71e68000c8624ea13f90b136f8734dd0fb1bdc) - - `HAVE_DLFCN_H` - - `HAVE_DLOPEN` - - `HAVE_DOPRNT` - - `HAVE_FCNTL` - - `HAVE_GETHOSTBYNAME` [3] - - `HAVE_GETOPT_H` - - `HAVE_GETPASS` - - `HAVE_GETPROTOBYNAME` - - `HAVE_GETSERVBYNAME` - - `HAVE_IDN_FREE*` - - `HAVE_INET_ADDR` - - `HAVE_IOCTL` - - `HAVE_KRB4` - - `HAVE_KRB_GET_OUR_IP_FOR_REALM` - - `HAVE_KRB_H` - - `HAVE_LDAPSSL_H` - - `HAVE_LDAP_INIT_FD` - - `HAVE_LIBDL` - - `HAVE_LIBNSL` - - `HAVE_LIBRESOLV*` - - `HAVE_LIBUCB` - - `HAVE_LL` - - `HAVE_LOCALTIME_R` - - `HAVE_MALLOC_H` - - `HAVE_MEMCPY` - - `HAVE_MEMORY_H` - - `HAVE_NETINET_IF_ETHER_H` - - `HAVE_NI_WITHSCOPEID` - - `HAVE_OPENSSL_CRYPTO_H` - - `HAVE_OPENSSL_ERR_H` - - `HAVE_OPENSSL_PEM_H` - - `HAVE_OPENSSL_PKCS12_H` - - `HAVE_OPENSSL_RAND_H` - - `HAVE_OPENSSL_RSA_H` - - `HAVE_OPENSSL_SSL_H` - - `HAVE_OPENSSL_X509_H` - - `HAVE_PEM_H` - - `HAVE_POLL` - - `HAVE_RAND_SCREEN` - - `HAVE_RAND_STATUS` - - `HAVE_RECVFROM` - - `HAVE_SETSOCKOPT` - - `HAVE_SETVBUF` - - `HAVE_SIZEOF_LONG_DOUBLE` - - `HAVE_SOCKIO_H` - - `HAVE_SOCK_OPTS` - - `HAVE_STDIO_H` - - `HAVE_STRCASESTR` - - `HAVE_STRFTIME` - - `HAVE_STRLCAT` - - `HAVE_STRNCMPI` - - `HAVE_STRNICMP` - - `HAVE_STRSTR` - - `HAVE_STRUCT_IN6_ADDR` - - `HAVE_TLD_H` - - `HAVE_TLD_STRERROR` - - `HAVE_UNAME` - - `HAVE_USLEEP` - - `HAVE_WINBER_H` - - `HAVE_WRITEV` - - `HAVE_X509_H` - - `LT_OBJDIR` - - `NEED_BASENAME_PROTO` - - `NOT_NEED_LIBNSL` - - `OPENSSL_NO_KRB5` - - `RECVFROM_TYPE*` - - `SIZEOF_LONG_DOUBLE` - - `STRERROR_R_TYPE_ARG3` - - `USE_YASSLEMUL` - - `_USRDLL` (from CMake) [4] - - [1] Related parts in `m4/curl-functions.m4` and `configure.ac` might - also be deleted. - - [2] Related comment can possibly be deleted in - `packages/vms/generate_config_vms_h_curl.com`. - - [3] There are more instances of this in autotools, but I did not dare to - touch those. Looked like it's used to detect socket support. - - [4] This is necessary for MFC (Microsoft Foundation Class) DLLs to - force linking MFC components statically to the DLL. `libcurl.dll` - does not use MFC, so we can delete this define. - Ref: https://docs.microsoft.com/cpp/build/regular-dlls-statically-linked-to-mfc - - Script that can help finding unused settings like above: - ```shell - - autoheader configure.ac # generate lib/curl_config.h.in - - { - grep -o -E 'set\([A-Z][A-Z0-9_]{3,}' CMake/Platforms/WindowsCache.cmake | sed -E 's|set\(||g' - grep -o -E -h '#define +[A-Z][A-Z0-9_]{3,}' lib/config-*.h | sed -E 's|#define +||g' - grep -o -E '#cmakedefine +[A-Z][A-Z0-9_]{3,}' lib/curl_config.h.cmake | sed -E 's|#cmakedefine +||g' - grep -o -E '#undef +[A-Z][A-Z0-9_]{3,}' lib/curl_config.h.in | sed -E 's|#undef +||g' - } | sort -u | grep -v -F 'HEADER_CURL_' | while read -r def; do - c="$(git grep -w -F "${def}" | grep -v -E -c '(/libcurl\.tmpl|^lib/config-|^lib/curl_config\.h\.cmake|^CMakeLists\.txt|^CMake/Platforms/WindowsCache\.cmake|^packages/vms/config_h\.com|^m4/curl-functions\.m4|^acinclude\.m4|^configure\.ac)')" - if [ "${c}" = '0' ]; then - echo "${def}" - fi - done - ``` - - Reviewed-by: Daniel Stenberg - Closes #9044 - -Daniel Stenberg (19 Jul 2022) -- RELEASE-NOTES: synced - -- cookie: treat a blank domain in Set-Cookie: as non-existing - - This matches what RFC 6265 section 5.2.3 says. - - Extended test 31 to verify. - - Fixes #9164 - Reported-by: Gwen Shapira - Closes #9177 - -- [Patrick Monnerat brought this change] - - base64: base64url encoding has no padding - - See RFC4648 section 5 and RFC7540 section 3.2.1. - - Suppress generation of '=' padding of base64url encoding. This is - accomplished by considering the string beginning at offset 64 in the - character table as the padding: this is "=" for base64, "" for base64url. - - Also use strchr() to replace character search loops where possible. - - Suppress erroneous comments about empty encoding results. - - Adjust unit test 1302 to unpadded base64url encoding and add tests for - empty results. - - Closes #9139 - -- easyoptions: fix icc warning - - easyoptions.c(360): error #188: enumerated type mixed with another type - - Ref: #9156 - Reported-by: Matthew Thompson - Closes #9176 - -- [lwthiker brought this change] - - h2h3: fix overriding the 'TE: Trailers' header - - A 'TE: Trailers' header is explicitly replaced by 'te: trailers' - (lowercase) in Curl_pseudo_headers() when building the list of HTTP/2 or - HTTP/3 headers. However, this is then replaced again by the original - value due to a bug, resulting in the uppercased version being sent. Some - HTTP/2 servers reject the whole HTTP/2 stream when this is the case. - - Closes #9170 - -- lib3026: reduce the number of threads to 100 - - Down from 1000, to make it run and work in more systems. - - Fixes #9172 - Reported-by: Érico Nogueira Rolim - Closes #9173 - -- doh: move doh related struct definitions to doh.h - - and make 'dnstype' in 'struct dnsprobe' use the DNStype to fix the icc compiler warning: - - doh.c(924): error #188: enumerated type mixed with another type - - Reported-by: Matthew Thompson - Ref #9156 - Closes #9174 - -Viktor Szakats (17 Jul 2022) -- Makefile.m32: stop trying to build libcares.a [ci skip] - - Before this patch, `lib/Makefile.m32` had a rule to build `libcares.a` in - `-cares`-enabled builds, via c-ares's own `Makefile.m32`. Committed in - 2007 [1]. The commit message doesn't specifically address this particular - change. This logic comes from the times when c-ares was part of the curl - source tree, hence the special treatment. - - This feature creates problems when building c-ares first, using CMake - and pointing `LIBCARES_PATH` to its install prefix, where `Makefile.m32` - is missing in such case. A sub-build for c-ares is undesired also when - c-ares had already been build via its own `Makefile.m32`. - - To avoid the sub-build, this patch deletes its Makefile rule. After this - patch `libcares.a` needs to be manually built before using it in - `Makefile.m32`. Aligning it with the rest of dependencies. - - [1] 46c92c0b806da041d7a5c6fb64dbcdc474d99b31 - - Reviewed-by: Daniel Stenberg - Closes #9169 - -Daniel Stenberg (17 Jul 2022) -- curl: writeout: fix repeated header outputs - - The function stored a terminating zero into the buffer for convenience, - but when on repeated calls that would cause problems. Starting now, the - passed in buffer is not modified. - - Reported-by: highmtworks on github - Fixes #9150 - Closes #9152 - -- curl_multi_timeout.3: clarify usage - - Fixes #9155 - Closes #9157 - Reported-by: jvvprasad78 on github - -- mprintf: make dprintf_formatf never return negative - - This function no longer returns a negative value if the formatting - string is bad since the return value would sometimes be propagated as a - return code from the mprintf* functions and they are documented to - return the length of the output. Which cannot be negative. - - Fixes #9149 - Closes #9151 - Reported-by: yiyuaner on github - -Viktor Szakats (17 Jul 2022) -- trace: 0x7F character is non-printable - - `0x7F` is `DEL`, a non-printable symbol, so print it as - `UNPRINTABLE_CHAR`. - - Reported-by: MasterInQuestion on github - Fixes #9162 - Closes #9166 - -- doh: use https protocol by default - - The only allowed protocol is https, so it makes sense to use that - by default if not passed explicitly by the user. - - Reported-by: MasterInQuestion on github - Reviewed-by: Jay Satiro - Fixes #9163 - Closes #9165 - -- openssl: fix BoringSSL symbol conflicts with LDAP and Schannel - - Same issue as here [1], but this time when building curl with BoringSSL - for Windows with LDAP(S) or Schannel support enabled. - - Apply the same fix [2] for these source files as well. - - This can also be fixed by moving `#include "urldata.h"` _before_ - including `winldap.h` and `schnlsp.h` respectively. This seems like - a cleaner fix, though I'm not sure why it works and if it has any - downside. - - [1] https://github.com/curl/curl/issues/5669 - [2] https://github.com/curl/curl/commit/fbe07c6829ba8c5793c84c2856526e19e9029ab9 - - Co-authored-by: Jay Satiro - Closes #9110 - -Daniel Stenberg (13 Jul 2022) -- asyn-thread: make getaddrinfo_complete return CURLcode - - ... as the only caller that cares about what it returns assumes that - anyway. This caused icc to warn: - - asyn-thread.c(505): error #188: enumerated type mixed with another type - result = getaddrinfo_complete(data); - - Repoorted-by: Matthew Thompson - Bug: https://github.com/curl/curl/issues/9081#issuecomment-1182143076 - Closes #9146 - -- easy_lock: fix build with icc - - The Intel compiler tries to look like GCC *and* clang *and* it lies in - its __has_builtin() function (returns true when it should return false), - so override it. - - Reported-by: Matthew Thompson - Fixes #9081 - Closes #9144 - -- configure: fix --disable-headers-api - - Reported-by: MichaÅ‚ Antoniak - Fixes #9134 - Closes #9143 - -- test3026: require 'threadsafe' - - Reported-by: Sukanya Hanumanthu - Fixes #9141 - Closes #9142 - -- [Even Rouault brought this change] - - CMake: link curl to its dependencies with PRIVATE - - The current PUBLIC visibility causes issues for downstream users. - Cf https://github.com/OSGeo/PROJ/pull/3172#issuecomment-1157942986 - - Reviewed-by: Jakub Zakrzewski - Closes #9125 - -- [Even Rouault brought this change] - - CMake: remove APPEND in export(TARGETS) - - When running cmake several times, new content was appended to already - existing generated files, which is not appropriate - - Reviewed-by: Jakub Zakrzewski - Closes #9124 - -- [Tatsuhiro Tsujikawa brought this change] - - ngtcp2: implement cb_h3_stop_sending and cb_h3_reset_stream callbacks - - Closes #9135 - -- RELEASE-NOTES: synced - -Viktor Szakats (11 Jul 2022) -- build: improve OS string in CMake and `config-win32.h` - - This patch makes CMake fill the "OS string" with the value of - `CMAKE_C_COMPILER_TARGET`, if passed. This typically contains a triplet, - the same we can pass to `./configure` via `--host=`. - - For non-CMake, non-autotools, Windows builds, this patch adds the ability - to override the default `OS` value in `lib/config-win32.h`. - - With these its possible to get the same OS string across the three build - systems. - - This patch supersedes the earlier, partial, CMake-only solution: - 435f395f3f8c11eebfcc243ca55ebcc11a19b8b8, thus retiring the - `CURL_OS_SUFFIX` CMake option. - - Reviewed-by: Jay Satiro - Closes #9117 - -- Makefile.m32: add `CURL_RC` and `CURL_STRIP` variables [ci skip] - - They allow to override the hardcoded values for the `windres` and `strip` - tools, complementing the existing set of `CURL_{CC,AR,RANLIB}` variables. - - `CURL_RC` comes handy when using LLVM tools with `CROSSPREFIX=llvm-` and - `CURL_CC=clang` set on current latest debian:unstable or earlier, where - `llvm-windres` is missing, and a `CURL_RC=-windres` fixes it. - Hopefully this will be fixed in the llvm package. FWIW `llvm-windres` - does exist in Homebrew llvm, MSYS2 llvm and llvm-mingw. - - Reviewed-by: Daniel Stenberg - Closes #9132 - -Daniel Stenberg (10 Jul 2022) -- [Tatsuhiro Tsujikawa brought this change] - - ngtcp2: fix stall or busy loop on STOP_SENDING with upload data - - Fixes #9122 - Closes #9123 - -- [Xiaoke Wang brought this change] - - tool_operate: better cleanup of easy handle in exit path - - Closes #9114 - -- [Xiaoke Wang brought this change] - - getinfo: return better error on NULL as first argument - - Closes #9114 - -- tool_getparam: repair cleanarg - - Regression since 9e5669f. - - Make sure the "cleaning" of command line arguments is done on the - original argv[] pointers. As a bonus, it also exits better on out of - memory error. - - Reported-by: Litter White - Fixes #9128 - Closes #9130 - -Jay Satiro (10 Jul 2022) -- docs: explain curl_easy_escape/unescape curl handle is ignored - - 26101421 (precedes 7.82.0) removed character conversion support used by - very old legacy operating systems and since then the curl handle passed - to curl_easy_escape/unescape is always ignored. - - Bug: https://github.com/curl/curl/discussions/9115 - Reported-by: Ted Lyngmo - - Closes https://github.com/curl/curl/pull/9121 - -Viktor Szakats (8 Jul 2022) -- openssl: add `CURL_BORINGSSL_VERSION` to identify BoringSSL - - BoringSSL doesn't keep a version number, and doesn't self-identify itself - via any other revision number via its own headers. We can identify - BoringSSL revisions by their commit hash. This hash is typically known by - the builder. This patch adds a way to pass this hash to libcurl, so that - it can display in the curl version string: - - For example: - - `CFLAGS=-DCURL_BORINGSSL_VERSION="c239ffd0"` - - ``` - curl 7.84.0 (x86_64-w64-mingw32) libcurl/7.84.0 BoringSSL/c239ffd0 (Schannel) zlib/1.2.12 [...] - Release-Date: 2022-06-27 - Protocols: dict file ftp ftps gopher gophers http https imap imaps ldap ldaps mqtt pop3 [...] - Features: alt-svc AsynchDNS brotli gsasl HSTS HTTP2 HTTP3 HTTPS-proxy IDN IPv6 Kerberos [...] - ``` - - The setting is optional, and if not passed, BoringSSL will appear without - a version number, like before this patch. - - Closes #9113 - -Jay Satiro (8 Jul 2022) -- escape: remove outdated comment - - Bug: https://github.com/curl/curl/discussions/9115 - Reported-by: Ted Lyngmo - -- [Tatsuhiro Tsujikawa brought this change] - - ngtcp2: Fix missing initialization of nghttp3_nv.flags - - Closes https://github.com/curl/curl/pull/9118 - -Daniel Stenberg (6 Jul 2022) -- [Brad Forschinger brought this change] - - netrc.d: remove spurious quote - - Closes #9111 - -Viktor Szakats (6 Jul 2022) -- Makefile.m32: add `NGTCP2_LIBS` option [ci skip] - - Makefile.m32's ngtcp2 has its two libs hardwired for OpenSSL. - Add `NGTCP2_LIBS` envvar to override them with a custom list, - making it possible to use BoringSSL, or any other backend. - - Closes #9109 - -Jay Satiro (6 Jul 2022) -- [Evgeny Grin (Karlson2k) brought this change] - - digest: fix missing increment of 'nc' value for auth-int - - - Increment nc regardless of qop type. - - Prior to this change nc was only incremented for qop type auth even - though libcurl sends nc with any qop. - - Closes https://github.com/curl/curl/pull/9090 - -Daniel Stenberg (5 Jul 2022) -- RELEASE-NOTES: synced - - Bumped to 7.85.0 - -- urldata: reduce size of four ftp related members - - ftp_filemethod, ftpsslauth and ftp_ccc are now uchars - - accepttimeout is now unsigned int - almost 50 days ought to be enough - for this value. - - Closes #9106 - -- urldata: reduce three type-members from int to uchar - - - timecondition - - proxytype - - method - - ... previously used their enum type in the struct, which made them - unnecesarily large. - - Closes #9105 - -- CURLOPT_SERVER_RESPONSE_TIMEOUT: the new name - - Starting now, CURLOPT_FTP_RESPONSE_TIMEOUT is the alias instead of the - other way around. - - Since 7.20.0, CURLOPT_SERVER_RESPONSE_TIMEOUT has existed as an alias - but since the option is for more protocols than FTP the more "correct" - version of the option is the "server" one so now we switch. - - Closes #9104 - -- urldata: make 'ftp_create_missing_dirs' a uchar - - It only ever holds the values 0-2. - - Closes #9103 - -- [Don J Olmstead brought this change] - - cmake: support ngtcp2 boringssl backend - - Update the ngtcp2 find module to detect the boringssl backend. Determine - if the underlying OpenSSL implementation is BoringSSL and if so use that - as the ngtcp2 backend. - - Reviewed-by: Jakub Zakrzewski - Closes #9065 - -- urldata: change 4 timeouts to unsigned int from long - - They're not used for that long times anyway, 32 bit milliseconds is long - enough. - - Closes #9101 - -- urldata: make 'use_netrc' a uchar - - Closes #9102 - -- urldata: make 'buffer_size' an unsigned int - - It is already capped at READBUFFER_MAX which fits easily in 32 bits. - - Closes #9098 - -- urldata: remove the unused 'rtspversion' struct member - - Closes #9100 - -- urldata: make 'use_port' an usigned short - - ... instead of a long. It is already enforced to not attempt to set any - value outside of 16 bits unsigned. - - Closes #9099 - -- urldata: store dns cache timeout in an int - - 68 years ought to be enough for most. - - Closes #9097 - -- curl: proto2num: make sure obuf is inited - - Detected by Coverity. CID 1507052. - - Closes #9096 - -- cookie: use %zu to infof() for size_t values - - Detected by Coverity. CID 1507051 - Closes #9095 - -Viktor Szakats (4 Jul 2022) -- makefile.m32: add support for custom ARCH [ci skip] - - When building curl for target platform other than x64 and x86, it is now - possible to pass `ARCH=custom`, that will omit all hardcoded logic for - setting up CFLAGS/LDFLAGS/RCFLAGS for these platforms, and let these be - customized via `CURL_CFLAG_EXTRAS`, `CURL_LDFLAG_EXTRAS`, and a newly - added one for the resource compiler: `CURL_RCFLAG_EXTRAS`. - - This makes it possible to use `makefile.m32` to build for ARM64 for - example. - - Reviewed-by: Daniel Stenberg - Closes #9092 - -- cmake: do not force Windows target versions - - The goal of this patch is to avoid CMake forcing specific Windows - versions and rely on toolchain defaults or manual selection instead. - This gives back control to the user. This also brings CMake closer to - how autotools and `Makefile.m32` behaves in this regard. - - - CMake had a setting `ENABLE_INET_PTON` defaulting to `ON`, which did - nothing else than fixing the Windows build target to Vista. This also - happened when the toolchain did not have Vista support (e.g. original - MinGW), breaking such builds. - - In other environments it did not make a user-facing difference, - because libcurl has its own pton() implementation, so it works well - with or without Vista's inet_pton(). - - This patch drops this setting. inet_pton() is now used whenever - building for Vista or newer, either when requested manually or by - default with modern toolchains (e.g. mingw-w64). Older envs will fall - back to curl's pton(). - - Ref: https://github.com/curl/curl/pull/9027#issuecomment-1164157604 - Ref: https://github.com/curl/curl/pull/8997#issuecomment-1164344155 - - - When the user did no select a Windows target version manually, stop - explicitly targeting Windows XP, and instead use the toolchain default. - - This may pose an issue with old toolchains defaulting to pre-XP - targets. In such case you must manually target Windows XP via: - `-DCURL_TARGET_WINDOWS_VERSION=0x0501` - or - `-DCMAKE_C_FLAGS=-D_WIN32_WINNT=0x0501` - - Reviewed-by: Jay Satiro - Reviewed-by: Marcel Raad - Closes #9046 - -- windows: improve random source - - - Use the Windows API to seed the fallback random generator. - - This ensures to always have a random seed, even when libcurl is built - with a vtls backend lacking a random generator API, such as rustls - (experimental), GSKit and certain mbedTLS builds, or, when libcurl is - built without a TLS backend. We reuse the Windows-specific random - function from the Schannel backend. - - - Implement support for `BCryptGenRandom()` [1] on Windows, as a - replacement for the deprecated `CryptGenRandom()` [2] function. - - It is used as the secure random generator for Schannel, and also to - provide entropy for libcurl's fallback random generator. The new - function is supported on Vista and newer via its `bcrypt.dll`. It is - used automatically when building for supported versions. It also works - in UWP apps (the old function did not). - - - Clear entropy buffer before calling the Windows random generator. - - This avoids using arbitrary application memory as entropy (with - `CryptGenRandom()`) and makes sure to return in a predictable state - when an API call fails. - - [1] https://docs.microsoft.com/windows/win32/api/bcrypt/nf-bcrypt-bcryptgenrandom - [2] https://docs.microsoft.com/windows/win32/api/wincrypt/nf-wincrypt-cryptgenrandom - - Closes #9027 - -Daniel Stenberg (4 Jul 2022) -- setopt: add CURLOPT_PROTOCOLS_STR and CURLOPT_REDIR_PROTOCOLS_STR - - ... as replacements for deprecated CURLOPT_PROTOCOLS and - CURLOPT_REDIR_PROTOCOLS as these new ones do not risk running into the - 32 bit limit the old ones are facing. - - CURLINFO_PROTCOOL is now deprecated. - - The curl tool is updated to use the new options. - - Added test 1597 to verify the libcurl protocol parser. - - Closes #8992 - -- digest: simplify a switch() to a simple if - -- digest: provide a special bit for "sess" algos - - Also shortened the names and moved them to the .c file since they are - private for this source file only. Also made them #defines instead of - enum. - - Closes #9079 - -Jay Satiro (4 Jul 2022) -- [Thomas Weißschuh brought this change] - - select: do not return fatal error on EINTR from poll() - - The same was done for select() in 5912da25 but poll() was missed. - - Bug: https://bugs.archlinux.org/task/75201 - Reported-by: Alexandre Bury (gyscos at archlinux) - - Ref: https://github.com/curl/curl/issues/8921 - Ref: https://github.com/curl/curl/pull/8961 - Ref: https://github.com/curl/curl/commit/5912da25#r77584294 - - Closes https://github.com/curl/curl/pull/9091 - -- [Kai Pastor brought this change] - - cmake: fix build for mingw cross compile - - - Change normaliz lib name to all lowercase. - - This is from a standing patch in vcpkg: - Mingw has libnormaliz.a. For case-sensitive file systems (e.g. cross - builds from Linux), the spelling must match exactly. - - Closes https://github.com/curl/curl/pull/9084 - -- easy_lock: fix build for mingw - - - Define SRWLOCK symbols missing in some mingw environments. - - Closes https://github.com/curl/curl/pull/8997 - -Daniel Stenberg (2 Jul 2022) -- tool_progress: avoid division by zero in parallel progress meter - - Reported-by: Brian Carpenter - Fixes #9082 - Closes #9083 - -- http_aws_sigv4.c: remove two unusued includes - - Closes #9080 - -- .mailmap: additional edit - - Follow-up to 861e2a8aca6c7 so that Evgeny appears with the same in git - logs even when using old email. - -- RELEASE-NOTES: synced - - bumped to 7.84.1 - -- [Evgeny Grin (Karlson2k) brought this change] - - .mailmap: updated - -- [Evgeny Grin (Karlson2k) brought this change] - - THANKS: merged two entries for Evgeny Grin - - Also updated THANKS-filter file - - Closes #9076 - -- [Jilayne Lovejoy brought this change] - - lib/curl_path.c: add ISC to license expression - - THe text of the ISC license is in this file, so the SPDX license - expression should be updated - - Closes #9073 - -- [Sean McArthur brought this change] - - hyper: use wakers for curl pause/resume - - Closes #9070 - -Viktor Szakats (30 Jun 2022) -- Makefile.m32: do not set the libcurl.rc debug flag [ci skip] - - Delete `-DDEBUGBUILD=0` windres option. This was likely meant to - disable VS_FF_DEBUG in FILEFLAGS, but any assigned value enabled - it instead. Delete this unnecessary option and thus sync up with - how CMake compiles libcurl.rc by default. - - Reviewed-by: Jay Satiro - Closes #9069 - -Daniel Stenberg (29 Jun 2022) -- curl.h: CURLE_CONV_FAILED is obsoleted - - The last use was removed in 7.82.0. Updated some docs too to reflect the - current error code situation. - - Closes #9067 - -- curl: output warning when a cookie is dropped due to size - - Dropped from the request, that is. - - Closes #9064 - -- curl_mime_data.3: polish the wording - - Closes #9063 - -- configure: check for the stdatomic.h header in configure - - ... and only set HAVE_ATOMIC if that header exists since we use - typedefes set in it. - - Reported-by: Ryan Schmidt - Fixes #9059 - Closes #9060 - -- easy_lock: fix the #ifdef conditional for ia32_pause - - To work better with new and old clang compilers. - - Reported-by: Ryan Schmidt - Assisted-by: Joshua Root - - Fixes #9058 - Closes #9062 - -- easy_lock: switch to using atomic_int instead of bool - - To work with more compilers without requiring separate libs to - link. Like with gcc-12 for RISC-V on Linux. - - Reported-by: Adam Sampson - Fixes #9055 - Closes #9061 - -- [vvb2060 brought this change] - - ngtcp2: fix incompatible function pointer types - - Closes #9056 - -- [vvb2060 brought this change] - - easy_lock.h: use __asm__ instead of asm to fix build - - Closes #9056 - -- [Samuel Henrique brought this change] - - libcurl-security.3: fix typo on macro "SH_" - - During the packaging of the latest curl release for Debian, Lintian - warned me about a typo which causes the section name "Secrets in memory" - to not be rendered in the manpage due to "SH_" not being recognized as a - header. - - Closes #9057 - -- easy_lock.h: include sched.h if available to fix build - - Patched-by: Harry Sintonen - - Closes #9054 - -Version 7.84.0 (27 Jun 2022) - -Daniel Stenberg (27 Jun 2022) -- RELEASE-NOTES: synced - - Version 7.84.0 release - -- THANKS: contributors from 7.84.0 release notes - -- hsts: use Curl_fopen() - -- altsvc: use Curl_fopen() - -- fopen: add Curl_fopen() for better overwriting of files - - Bug: https://curl.se/docs/CVE-2022-32207.html - CVE-2022-32207 - Reported-by: Harry Sintonen - Closes #9050 - -- test444: test many received Set-Cookie: - - The amount of sent cookies in the test is limited to 80 because hyper - has its own strict limits in how many headers it allows to be received - which triggers at some point beyond this number. - -- test442/443: test cookie caps - - 442 - verify that only 150 cookies are sent - 443 - verify that the cookie: header remains less than 8K in size - -- cookie: apply limits - - - Send no more than 150 cookies per request - - Cap the max length used for a cookie: header to 8K - - Cap the max number of received Set-Cookie: headers to 50 - - Bug: https://curl.se/docs/CVE-2022-32205.html - CVE-2022-32205 - Reported-by: Harry Sintonen - Closes #9048 - -- test387: verify rejection of compression chain attack - -- content_encoding: return error on too many compression steps - - The max allowed steps is arbitrarily set to 5. - - Bug: https://curl.se/docs/CVE-2022-32206.html - CVE-2022-32206 - Reported-by: Harry Sintonen - Closes #9049 - -- krb5: return error properly on decode errors - - Bug: https://curl.se/docs/CVE-2022-32208.html - CVE-2022-32208 - Reported-by: Harry Sintonen - Closes #9051 - -- easy_lock.h: remove use of the deprecated ATOMIC_VAR_INIT macro - - clang 14 warns about its use. It is being deprecated by the working - group for the programming language C: "The macro ATOMIC_VAR_INIT is - basically useless for the purpose for which it was designed" - - Ref: https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2886.htm - - Reported-by: Tatsuhiro Tsujikawa - Fixes #9041 - Closes #9042 - -- [Stefan Eissing brought this change] - - ngtcp2: avoid supplying 0 length `msg_control` to sendmsg() - - Testing on macOS 12.4, sendmsg() fails with EINVAL when a msg_control - buffer is provided in sengmsg(), even though msg_controllen was set to - 0. - - Initialize msg.msg_controllen just as needed and also perform the size - assertion only when needed. - - Closes #9039 - -- [Tom Eccles brought this change] - - ftp: restore protocol state after http proxy CONNECT - - connect_init() (lib/http_proxy.c) swaps out the protocol state while - working on the proxy connection, this is then restored by - Curl_connect_done() after the connection completes. - - ftp_do_more() extracted the protocol state pointer to a local variable - at the start of the function then calls Curl_proxy_connect(). If the proxy - connection completes, Curl_proxy_connect() will call Curl_connect_done() - (via Curl_proxyCONNECT()), which restores data->req.p to point to the ftp - protocol state instead of the http proxy protocol state, but the local - variable in ftp_do_more still pointed to the old value. - - Ultimately this meant that the state worked on by ftp_do_more() was the - http proxy state not the ftp state initialised by ftp_connect(), but - subsequent calls to any ftp_ function would use the original state. - - For my use-case, the visible consequence was that ftp->downloadsize was - never set and so downloaded data was never returned to the application. - - This commit updates the ftp protocol state pointer in ftp_do_more() after - Curl_proxy_connect() returns, ensuring that the correct state pointer is - used. - - Fixes #8737 - Closes #9043 - -Jay Satiro (23 Jun 2022) -- THANKS: add contributor missing from aea8ac1 - - aea8ac1 fixed #8980 which was reported by Sgharat on github, but that - info was not included in the commit message. - -- curl_setup: include _mingw.h - - Prior to this change _mingw.h needed to be included in each unit before - evaluating __MINGW{32,64}_xxx_VERSION macros since it defines them. It - is included only in some mingw headers (eg stdio.h) and not others - (eg windows.h) so it's better to explicitly include it once. - - Closes https://github.com/curl/curl/pull/9036 - -Viktor Szakats (22 Jun 2022) -- rand: stop detecting /dev/urandom in cross-builds - - - Prevent CMake to auto-detect /dev/urandom when cross-building. - Before this patch, it would detect it in a cross-build scenario on *nix - hosts with this device present. This was a problem for example with - Windows builds, but it could affect any target system with this device - missing. This also syncs detection behaviour with autotools, which also - skips it for cross-builds. - - Also, make sure to never use the file RANDOM_FILE as entropy for libcurl's - fallback random number generator on Windows. Windows does not have the - concept of reading a random stream from a filename, nor any guaranteed - non-world-writable path on disk. With this, a manual misconfiguration or - an overeager auto-detection can no longer result in a user-controllable - seed source. - - Reviewed-by: Daniel Stenberg - Closes #9038 - -Daniel Stenberg (22 Jun 2022) -- [Emanuele Torre brought this change] - - ci: avoid `cmake -Hpath` - - This is an undocumented option similar to the `-Spath' option introduced - in cmake 3.13. - Replace all instances of `-Hpath' with `-Spath' in macos workflow. - Replace `-H. -Bpath' with `mkdir path; cd ./path; cmake ..' in zuul - scripts since it runs an older version of cmake. - - Fixes #9008 - Closes #9014 - -- INTERNALS: bring back the "Library symbols" section - - Most contents was moved, but this text should remain here. - - Follow-up to: d324ac8 - Reported-by: Viktor Szakats - Bug: https://github.com/curl/curl/pull/9027#discussion_r903382326 - Closes #9037 - -Viktor Szakats (22 Jun 2022) -- Makefile.m32: stop forcing XP target with ipv6 enabled [ci skip] - - Since this [1] commit in 2011, `_WIN32_WINNT` was set fixed to Windows - XP when the `-ipv6` option is selected. Maybe this was added to support - pre-XP Windows versions (?). These days libcurl builds fine for both XP - and post-XP versions with IPv6 support enabled. The relevance of pre-XP - version is also low by now. Other build methods also do not impose such - limitation for a similar configuration. So, drop this hard-wired - `_WIN32_WINNT` limit from `Makefile.m32`, thus building for the default - Windows version set by the compiler. This is Vista for recent MinGW - versions. - - Old behaviour can be restored by setting this envvar: - export CURL_CFLAG_EXTRAS=-D_WIN32_WINNT=0x0501 - - [1] 98a61d8e2e8982786aaf3916cbbcac96838316e7 - - Closes #9035 - -Daniel Stenberg (21 Jun 2022) -- CONTRIBUTE: mention how we maintain REUSE compliance - - for copyright and license information of all files stored in git - - Closes #9032 - -- CURLOPT_ALTSVC.3: document the file format - - Closes #9033 - -Jay Satiro (21 Jun 2022) -- runtests: add "threadsafe" to detected features - - Follow-up to recent commits which added thread-safety support. - - Bug: https://github.com/curl/curl/pull/9012#discussion_r902018782 - Reported-by: Marc Hörsken - - Closes https://github.com/curl/curl/pull/9030 - -Daniel Stenberg (20 Jun 2022) -- easy: remove dead code - - Follow-up from 5912da253b64d - - Detected by Coverity (CID 1506519) - - Closes #9029 - -- [Glenn Strauss brought this change] - - transfer: upload performance; avoid tiny send - - Append to the upload buffer when only small amount remains in buffer - rather than performing a separate tiny send to empty buffer. - - Avoid degenerative upload behavior which might cause curl to send mostly - 1-byte DATA frames after exhausing the h2 send window size - - Related discussion: https://github.com/nghttp2/nghttp2/issues/1722 - - Signed-off-by: Glenn Strauss - Closes #8965 - -- [Steve Holme brought this change] - - projects: fix third-party SSL library build paths for Visual Studio - - The paths used by the build batch files were inconsistent with those in - the Visual Studio project files. - - Closes #8991 - -- [Pierrick Charron brought this change] - - urlapi: make curl_url_set(url, CURLUPART_URL, NULL, 0) clear all parts - - As per the documentation : - - > Setting a part to a NULL pointer will effectively remove that - > part's contents from the CURLU handle. - - But currently clearing CURLUPART_URL does nothing and returns - CURLUE_OK. This change will clear all parts of the URL at once. - - Closes #9028 - -- [Philip H brought this change] - - CI: bump FreeBSD 13.0 to 13.1 - - Signed-off-by: Philip H <47042125+pheiduck@users.noreply.github.com> - Closes #8815 - -- RELEASE-NOTES: synced - - and updated release date in RELEASE-PROCEDURE.md - -- [divinity76 brought this change] - - CURLOPT_HTTPHEADER.3: improve comment in example - - Closes #9025 - -Marc Hoersken (16 Jun 2022) -- CI/azure: reduce flakiness by retrying install/prepare steps - - Closes #9010 - -- CI/cirrus: align Windows timeout with Azure CI at 120 minutes - - Closes #9009 - -Jay Satiro (16 Jun 2022) -- vtls: make curl_global_sslset thread-safe - - .. and update some docs to explain curl_global_* is now thread-safe. - - Follow-up to 23af112 which made curl_global_init/cleanup thread-safe. - - Closes https://github.com/curl/curl/pull/9016 - -- curl_easy_pause.3: remove explanation of progress function - - - Remove misleading text that says progress function "gets called at - least once per second, even if the connection is paused." - - The progress function behavior is more nuanced and the user is better - served reading the progress function doc rather than attempt to explain - it in the curl_easy_pause doc. - - The progress function can only be called at least once per second if an - appropriate multi transfer function is called (eg curl_multi_perform) in - that time. For a paused transfer there may not be such a call. Rather - than explain this in detail in the curl_easy_pause doc, rely on the user - reading the CURLOPT_PROGRESSFUNCTION doc. - - Ref: https://github.com/curl/curl/issues/8983 - - Closes https://github.com/curl/curl/pull/9015 - -Daniel Stenberg (15 Jun 2022) -- libssh: skip the fake-close when libssh does the right thing - - Starting in libssh 0.10.0 ssh_disconnect() will no longer close our - socket. Instead it will be kept alive as we want it, and it is our - responsibility to close it later. - - Ref: #8718 - Ref: https://gitlab.com/libssh/libssh-mirror/-/merge_requests/240 - Closes #9021 - -- configure: warn about rustls being experimental - - Right now a dozen test cases are disabled because they don't work with - rustls. - - Closes #9019 - -- runtests: skip starting the ssh server if user name is lacking - - Because the ssh server startup script *requires* a user name there's no - point in invoking it if no name was found. - - Reported-by: Ricardo M. Correia - Ref: #9007 - Closes #9013 - -- copyright.pl: parse and use .reuse/dep5 for skips - - Also scan skipped files to be able to find superfluous ignores, shown with -v. - - Closes #9006 - -- reuse/dep5: adjusted to parse better - - ... adjusted a few files to contain copyright and license info. - - Closes #9006 - -- buildconf.bat: update copyright year range - - Closes #9006 - -- README.md: use the common "Copyright" style formatting - - Closes #9006 - -- reuse: move license info from .mailmap.license to .reuse/dep5 - - Closes #9006 - -- README.md: add a REUSE badge - - Closes #9004 - -- .reuse/dep5: remove recursive docs ignore, only skip markdown files - - ... and some additional non-markdown individual files in docs/ - - Closes #9005 - -- docs/cmdline-opts: add copyright and license identifier to each file - - gen.pl now insists on C: and SPDX-License-Identifier: fields to be - present in all files. - - Closes #9002 - -- copyright: info for/ignore .github/ISSUE_TEMPLATE/bug_report.md - - Follow-up from 448f7ef9ab2afb7. The adding of the copyright text in that - file broke site functionality. - - Closes #9001 - -- bug_report.md: revert the REUSE template to see if it works again - -Viktor Szakats (13 Jun 2022) -- version: rename threadsafe-init to threadsafe - - Referring to Daniel's article [1], making the init function thread-safe - was the last bit to make libcurl thread-safe as a whole. So the name of - the feature may as well be the more concise 'threadsafe', also telling - the story that libcurl is now fully thread-safe, not just its init - function. Chances are high that libcurl wants to remain so in the - future, so there is little likelihood of ever needing any other distinct - `threadsafe-` feature flags. - - For consistency we also shorten `CURL_VERSION_THREADSAFE_INIT` to - `CURL_VERSION_THREADSAFE`, update its description and reference libcurl's - thread safety documentation. - - [1]: https://daniel.haxx.se/blog/2022/06/08/making-libcurl-init-more-thread-safe/ - - Reviewed-by: Daniel Stenberg - Reviewed-by: Jay Satiro - Closes #8989 - -Daniel Stenberg (13 Jun 2022) -- test3026: disable on win32 - - ... as it's not likely to have working pthreads - - Closes #8996 - -- GHA: shorten the reuse CI job name - - "REUSE compliance / check" should be good enough - - Closes #9000 - -- misc: add missing SPDX-License-Identifier info - - For some reason the REUSE CI job did not find these. - - Closes #8999 - -- copyright: verify SPDX-License-Identifier presence as well - -- easy_lock: add SPDX license identifier - - Closes #8998 - -- mailmap: Max Mehl - -- [Max Mehl brought this change] - - git: ignore large commit making the curl REUSE compliant - -- [Max Mehl brought this change] - - copyright: make repository REUSE compliant - - Add licensing and copyright information for all files in this repository. This - either happens in the file itself as a comment header or in the file - `.reuse/dep5`. - - This commit also adds a Github workflow to check pull requests and adapts - copyright.pl to the changes. - - Closes #8869 - -- curl_url_set.3: clarify by default using known schemes only - - Closes #8994 - -- scripts/copyright.pl: ignore leading spaces - -Viktor Szakats (10 Jun 2022) -- ngtcp2: fix typo in preprocessor condition - - Ref: 927ede7edcb7b05b8e8bbf9ced6aed523ae594a7 - - Bug: https://github.com/curl/curl/pull/8981#discussion_r894312185 - Reported-by: Emil Engler - Closes #8987 - -Daniel Stenberg (10 Jun 2022) -- RELEASE-NOTES: synced - -- [Tatsuhiro Tsujikawa brought this change] - - ngtcp2: build without sendmsg - - Closes #8981 - -- [Tatsuhiro Tsujikawa brought this change] - - ngtcp2: use handshake helper funcs to simplify TLS handshake integration - - Closes #8968 - -- test390: verify --parallel - - Closes #8985 - -- test1543: verify CURLINFO_EFFECTIVE_URL with CURLOPT_CURLU set - - Triggered by a bug report from Adam Light: - https://curl.se/mail/lib-2022-06/0013.html - which ended up being mostly - a misunderstanding of how CURLINFO_EFFECTIVE_URL works. - - Closes #8971 - -- url: URL encode the path when extracted, if spaces were set - -- urlapi: support CURLU_URLENCODE for curl_url_get() - -- server/sws: support spaces in the HTTP request path - -- tests/getpart: fix getpartattr to work with "data" and "data2" - -- select: return error from "lethal" poll/select errors - - Adds two new error codes: CURLE_UNRECOVERABLE_POLL and - CURLM_UNRECOVERABLE_POLL one each for the easy and the multi interfaces. - - Reported-by: Harry Sintonen - Fixes #8921 - Closes #8961 - -- test3026: add missing control file - - Follow-up from 2ed101256414ea5 - - Makes the test run, makes 'make dist' work - - This single test takes 24-25 seconds on my machine (with valgrind). For - this reason I tag it with a "slow" keyword. - - Closes #8976 - -- runtests: fix skipping tests not done event-based - - ... and call timestampskippedevents() to avoid the flood of - uninitialized variable warnings. - - Closes #8977 - -- transfer: maintain --path-as-is after redirects - - Reported-by: Marcus T - Fixes #8974 - Closes #8975 - -- test391: verify --path-as-is with redirect - -Jay Satiro (8 Jun 2022) -- curl_global_init.3: Separate the Windows loader lock warning - - This is a slight correction of the parent commit which implied the - loader lock warning only applied if not thread-safe. In fact the loader - lock warning applies either way. - - Ref: https://github.com/curl/curl/pull/8972#discussion_r891987030 - -Daniel Stenberg (8 Jun 2022) -- curl_global_init.3: this is now (usually) thread-safe - - Follow-up to 23af112f5556 - - Closes #8972 - -Jay Satiro (8 Jun 2022) -- [Haxatron brought this change] - - libcurl-security.3: Document CRLF header injection - - - Document that user input to header options is not sanitized, which - could result in CRLF used to modify the request in a way other than - what was intended. - - Ref: https://hackerone.com/reports/1589877 - Ref: https://medium.com/@tomnomnom/crlf-injection-into-phps-curl-options-e2e0d7cfe545 - - Closes https://github.com/curl/curl/pull/8964 - -- CURLOPT_RANGE.3: remove ranged upload advice - - The e-mail link in the advice contains instructions that are prone to - error. We need an example that works and can demonstrate how to properly - perform a ranged upload, and then we can refer to that example instead. - - Bug: https://github.com/curl/curl/issues/8969 - Reported-by: Simon Berger - - Closes https://github.com/curl/curl/pull/8970 - -Daniel Stenberg (7 Jun 2022) -- [Thomas Guillem brought this change] - - curl_version_info: add CURL_VERSION_THREADSAFE_INIT - - This flag can be used to make sure that curl_global_init() is - thread-safe. - - This can be useful for libraries that can't control what other - dependencies are doing with Curl. - - Closes #8680 - -- [Thomas Guillem brought this change] - - lib: make curl_global_init() threadsafe when possible - - Use a posix pthread or a Windows SRWLOCK to lock curl_global_init*() and - curl_global_cleanup(). - - Closes #8680 - -- RELEASE-NOTES: synced - -- [Fabian Keil brought this change] - - test414: add the '--resolve' keyword - - ... so the test can be automatically skipped when - using an external proxy like Privoxy. - - Closes #8959 - -- [Fabian Keil brought this change] - - test{440,441,493,977}: add "HTTP proxy" keywords - - ... so the tests can be automatically skipped when - using an external proxy like Privoxy. - - Closes #8959 - -- [Fabian Keil brought this change] - - runtests.pl: add the --repeat parameter to the --help output - - Closes #8959 - -- [Fabian Keil brought this change] - - test 2081: add a valid reply for the second request - - ... so the test works when using a HTTP proxy like - Privoxy that sends an error message if the server - doesn't send data. - - Closes #8959 - -- [Fabian Keil brought this change] - - test 675: add missing CR so the test passes when run through Privoxy - - Closes #8959 - -- ftp: when failing to do a secure GSSAPI login, fail hard - - ... instead of switching to cleartext. For the sake of security. - - Reported-by: Harry Sintonen - Bug: https://hackerone.com/reports/1590102 - Closes #8963 - -- http2: reject overly many push-promise headers - - Getting more than a thousand of them is rather a sign of some kind of - attack. - - Reported-by: Harry Sintonen - Bug: https://hackerone.com/reports/1589847 - Closes #8962 - -- [Fabian Keil brought this change] - - misc: spelling improvements - - Closes #8956 - -- [Tatsuhiro Tsujikawa brought this change] - - ngtcp2: fix assertion failure on EMSGSIZE - - Closes #8958 - -- easy/transfer: fix cookie-disabled build - - Follow-up from 45de940cebf6a - Reported-by: Marcel Raad - Fixes #8953 - Closes #8954 - -- examples/crawler.c: use the curl license - - With permission from Jeroen Ooms - - URL: https://github.com/curl/curl/pull/8869#issuecomment-1144742731 - Closes #8950 - -- speed-limit/time.d: mention these affect transfers in either direction - - Reported-by: Ladar Levison - Fixes #8948 - Closes #8951 - -- scripts/copyright.pl: fix the exclusion to not ignore man pages - - Ref: #8869 - Closes #8952 - -- examples: remove fopen.c and rtsp.c - - To simplify the license situation, as they were the only files in the - source tree using these specific BSD-3 clause licenses. - - For an fopen style API, we recommend instead going - https://github.com/curl/fcurl - - Ref: #8869 - Closes #8949 - -- [Wolf Vollprecht brought this change] - - netrc: check %USERPROFILE% as well on Windows - - Closes #8855 - -- CURLOPT_SSH_HOSTKEYDATA/FUNCTION.3: minor polish - -- [michael musset brought this change] - - libssh2: add CURLOPT_SSH_HOSTKEYFUNCTION - - The callback set by CURLOPT_SSH_HOSTKEYFUNCTION is called to check - wether or not the connection should continue. - - The host key is passed in argument with a custom handle for the - application. - - It overrides CURLOPT_SSH_KNOWNHOSTS - - Closes #7959 - -- docs/CONTRIBUTE.md: document the 'needs-votes' concept - - A pull request sent to the project might get labeled `needs-votes` by a - project maintainer. This label means that in addition to meeting all - other checks and qualifications this pull request must also receive - proven support/thumbs-ups from more community members to be considered - for merging. - - Closes #8910 - -- [Evgeny Grin (Karlson2k) brought this change] - - digest: tolerate missing "realm" - - Server headers may not define "realm", avoid NULL pointer dereference - in such cases. - - Closes #8912 - -- [Evgeny Grin (Karlson2k) brought this change] - - digest: added detection of more syntax error in server headers - - Invalid headers should not be processed otherwise they may create - a security risk. - - Closes #8912 - -- [Evgeny Grin (Karlson2k) brought this change] - - digest: unquote realm and nonce before processing - - RFC 7616 (and 2617) requires values to be "unquoted" before used for - digest calculations. The only place where unquoting can be done - correctly is header parsing function (realm="DOMAIN\\host" and - realm=DOMAN\\host are different realms). - - This commit adds unquoting (de-escaping) of all values during header - parsing and quoting of the values during header forming. This approach - should be most straightforward and easy to read/maintain as all values - are processed in the same way as required by RFC. - - Closes #8912 - -- headers: handle unfold of space-cleansed headers - - Detected by OSS-fuzz - - Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=47767 - - Updated test 1274 - - Closes #8947 - -- lib: make more protocol specific struct fields #ifdefed - - ... so that they don't take up space if the protocols are disabled in - the build. - - Closes #8944 - -- DISABLED: disable 1021 for hyper again - - due to flakiness in the CI builds - -- urldata: store tcp_keepidle and tcp_keepintvl as ints - - They can't be set larger than INT_MAX in the setsocket API calls. - - Also document the max values in their respective man pages. - - Closes #8940 - -- urldata: reduce size of a few struct fields - - When the values are never larger than 32 bit, ints are better than longs. - - Closes #8940 - -- urldata: remove three unused booleans from struct UserDefined - - - is_fwrite_set - - free_referer - - strip_path_slash - - Closes #8940 - -- remote-name.d: mention --output-dir - - plus add two see-alsos - - Closes #8945 - -Jay Satiro (1 Jun 2022) -- configure: skip libidn2 detection when winidn is used - - Prior to this change --with-winidn could be overridden by libidn2 - detection. - - Closes https://github.com/curl/curl/pull/8934 - -Daniel Stenberg (31 May 2022) -- CURLOPT_FILETIME.3: fix the protocols this works with - -- test681: verify --no-remote-name - - Follow-up to 83ee5c428d960 (from #8931) - - Closes #8942 - -- [Tatsuhiro Tsujikawa brought this change] - - ngtcp2: enable Linux GSO - - Enable Linux GSO in ngtcp2 QUIC. In order to recover from the - EAGAIN/EWOULDBLOCK by sendmsg with multiple packets in one GSO write, - packet buffer is now held by struct quicsocket. GSO write might fail in - runtime depending on NIC. Disable GSO if sendmsg returns EIO. - - Closes #8909 - -- CURLOPT_PORT.3: We discourage using this option - - Closes #8941 - -- RELEASE-NOTES: synced - -- headers_push: error out if a folded header has no previous header - - As that would indicate an illegal header. The fuzzer reached the assert - in unfold_value() proving that this case can happen. - - Follow-up to c9b60f005358a364 - - Closes #8939 - -- [Boris Verkhovskiy brought this change] - - curl: re-enable --no-remote-name - - Closes #8931 - -- test680: require 'http' since it uses such a URL - - Follow-up to d1b376c03524 - -- CURLOPT_NETRC.3: document the .netrc file format - -- test680: verify rejection of malformatted .netrc quoted password - -- test679: verify netrc quoted string - -- netrc: support quoted strings - - The .netrc parser now accepts strings within double-quotes in order to - deal with for example passwords containing white space - which - previously was not possible. - - A password that starts with a double-quote also ends with one, and - double-quotes themselves are escaped with backslashes, like \". It also - supports \n, \r and \t for newline, carriage return and tabs - respectively. - - If the password does not start with a double quote, it will end at first - white space and no escaping is performed. - - WARNING: this change is not entirely backwards compatible. If anyone - previously used a double-quote as the first letter of their password, - the parser will now get it differently compared to before. This is - highly unfortunate but hard to avoid. - - Reported-by: ImpatientHippo on GitHub - Fixes #8908 - Closes #8937 - -- curl_getdate.3: document that some illegal dates pass through - - Closes #8938 - -- CI: remove configure --enable-headers-api flags - -- headers api: remove EXPERIMENTAL tag - - Closes #8900 - -Daniel Gustafsson (30 May 2022) -- cookies: fix documentation comment - - Commit 4073cd83b2 added the noexpire parameter to Curl_cookie_add but - missed updating the documentation comment at the head of the file. - -Daniel Stenberg (30 May 2022) -- [Marc Hoersken brought this change] - - tests/data/test1940: use binary mode for expected stdout - - The generated stdout data is written in binary mode with [LF] - line endings, therefore we also need to do a binary comparison. - - Assisted-by: Jay Satiro - Assisted-by: Daniel Stenberg - - Follow up to c9b60f005358a364cbcddbebd8d12593acffdd84 - Fixes #8920 - Closes #8936 - -- CURLINFO_CAINFO/PATH.3: clarify the multiple TLS situation - - Spell out the multi-TLS situation. - - Reported-by: Dan Fandrich - Fixes #8926 - Closes #8932 - -Jay Satiro (28 May 2022) -- [JustAnotherArchivist brought this change] - - tool_getparam: fix --parallel-max maximum value constraint - - - Clamp --parallel-max to MAX_PARALLEL (300) instead of resetting to - default value. - - Previously, --parallel-max 300 would use 300 concurrent transfers, but - --parallel-max 301 would unexpectedly use only 50. This change clamps - higher values to the maximum (ie --parallel-max 301 would use 300). - - Closes https://github.com/curl/curl/pull/8930 - -Daniel Stenberg (27 May 2022) -- curl.1: add a few see also --tls-max - - Closes #8929 - -Viktor Szakats (26 May 2022) -- cmake: do not add libcurl.rc to the static libcurl library - - Fixes: https://github.com/curl/curl/pull/8918#issuecomment-1138263855 - - Reviewed-By: Karlson2k@users.noreply.github.com - Closes #8923 - -- cmake: support adding a suffix to the OS value - - CMake automatically uses the `CMAKE_SYSTEM_NAME` value to fill the OS - string appearing in the --version output after the curl version number, - for example: - - 'curl 7.83.1 (Windows)' - - This patchs adds the ability to pass a suffix that is appended to this - value. It's useful to add CPU info or other platform details, - for example: - - 'curl 7.83.1 (Windows-x64)' - - Closes #8919 - -- cmake: enable curl.rc for all Windows targets - - Before this patch, it was only enabled for MSVC. This syncs this - configuration with libcurl.rc, which was already included with - every Windows compiler. - - Closes #8918 - -- cmake: fix detecting libidn2 - - Without this patch, libidn2 detection doesn't even seem to be - attempted. With this patch, cmake can be configured to pick it - up and enable it. Necessary configuration remains manual and - differs from most other dependencies. - - If you are aware of a better fix, we're glad hearing about it - in a new Issue. - - Closes #8917 - -- version: allow stricmp() for sorting the feature list - - In CMakeLists.txt there is an attempt to detect `stricmp()`, and in - certain cases, this attempt is the only successful one to detect a - case-insensitive comparison function. `HAVE_STRICMP` is defined as - a result, but this macro wasn't used anywhere in the source. This - patch makes use of it as an alternative when alpha-sorting the - `--version` feature list. - - Reviewed-by: Daniel Stenberg - Closes #8916 - -Daniel Stenberg (25 May 2022) -- DISABLED: add six tests that fail with hyper - - 1117 1274 1940 1941 1942 1943 - -- c-hyper: mark status line as status for Curl_client_write() - - To make sure the headers API can filter it out as not a regular header. - - Reported-by: Gisle Vanem - Fixes #8894 - Closes #8914 - -Marc Hoersken (25 May 2022) -- tests/data/test1501: kill ftp server after slow LIST response - - This test is contributing to flakiness on the Windows CI runs. - Killing the ftp server after the test run like other slowness - tests already do may help resolve or reduce the flakiness. - - Closes #8907 - -Daniel Stenberg (25 May 2022) -- headers: fix the unfold realloc to use proper new size - - Previously it didn't take the old name length into acount - - Follow-up to: c9b60f005358a364 - Closes #8913 - -Marc Hoersken (25 May 2022) -- GHA: align all install, configure and build steps again - - First step towards more unified build steps on GitHub Actions. - - Closes #8873 - -- CI/azure: remove obsolete strategy for single builds - - This shortens these CI job names on GitHub even more. - Follow up to #8906 which also increased their timeout. - - Closes #8911 - -- CI/azure: shorten names of Windows CI jobs - - Suggested-by: Daniel Stenberg - Closes #8906 - -Daniel Stenberg (24 May 2022) -- http: restore header folding behavior - - Folded header lines will now get passed through like before. The headers - API is adapted and will provide the content unfolded. - - Added test 1274 and extended test 1940 to verify. - - Reported-by: Petr Pisar - Fixes #8844 - Closes #8899 - -Viktor Szakats (24 May 2022) -- Makefile.m32: delete obsolete options, improve -On [ci skip] - - - `-D_AMD64_` has not been necessary for mingw-w64 builds for a long time now. - - `-fno-strict-aliasing` is mentioned for Intel C compiler in autotools, and - I used this with VxWorks in another project, but otherwise this isn't - necessary anymore as a default. If a target still needs it, it can be - added with `CURL_CFLAG_EXTRAS=-fno-strict-aliasing` - - bump up default optimization level to `-O3` (from `-O2`), and also rearrange - option order so the default can now be overridden via - `CURL_CFLAG_EXTRAS`. - - delete `-g` (generate debug info) from `CFLAGS` and `-s` from `LDFLAGS` - (strip debug info). They were working against each other. Now, if someone - needs debug info, it can be enabled via `CURL_CFLAG_EXTRAS=-g` - - Closes #8904 - -Daniel Gustafsson (24 May 2022) -- ntlm: fix one more hostname test fallout - - This fixup was missed in commit 5a41abef6dca19. - - Closes: #8901 - Reviewed-by: Daniel Stenberg - -- doh: remove UNITTEST macro definition - - The UNITTEST macro is defined by curl_setup.h so there is no use in - carry a local copy of the logic. - - Closes: #8902 - Reviewed-by: Daniel Stenberg - -Daniel Stenberg (24 May 2022) -- cookie: fix false positive "potentially uninitialized local variable" - - Reviewed-by: Daniel Gustafsson - Closes #8903 - -- curl: add --rate to set max request rate per time unit - - --rate "12/m" - for 12 per minute or - --rate "5/h" - for 5 per hour - - Removed from TODO - - Closes #8671 - -- [Jay Satiro brought this change] - - max-time.d: clarify max-time sets max transfer time - - Prior to this change the doc said --max-time set the maximum time of the - 'whole operation' which is not accurate. The option maps to - CURLOPT_TIMEOUT_MS which sets maximum transfer time. - - For example, the maximum time on a transfer is reset if the transfer is - retried (--retry). - - Reported-by: Nuru@users.noreply.github.com - - Fixes https://github.com/curl/curl/issues/8877 - Closes #8879 - -- GHA/hyper: enable debug in the build - -- hyper: use 'alt-used' - - Makes test 412+413 work - - Closes #8898 - -- RELEASE-NOTES: synced - -- CURLINFO_CAPATH/CAINFO: get the default CA paths from libcurl - - Closes #8888 - -- links: update dead links - - The wiki pages are gone, remove and link to more long-living docs. - - Closes #8897 - -- ntlm: (void) typecast msnprintf() where we ignore return code - - Follow-up to 5a41abef6, to please Coverity - -Daniel Gustafsson (22 May 2022) -- ntlm: copy NTLM_HOSTNAME to host buffer - - Commit 709ae2454f43 added a fake hostname to avoid leaking the local - hostname, but omitted copying it to the host buffer. Fix by copying - and adjust the test fallout. - - Closes: #8895 - Fixes: #8893 - Reported-by: Patrick Monnerat - Reviewed-by: Daniel Stenberg - -- configure: use the SED value to invoke sed - - Rather than assuming sed in PATH, use the resolved $SED variable - like in all other invocations of sed in configure. - - Closes: #8891 - Reviewed-by: Daniel Stenberg - Reviewed-by: Marcel Raad - -Daniel Stenberg (20 May 2022) -- [Tatsuhiro Tsujikawa brought this change] - - ngtcp2: Allow curl to send larger UDP datagrams - - Allow curl to send larger UDP datagram if Path MTU Discovery finds the - availability of larger path MTU. To make it work and not to send - fragmented packet, we need to set DF bit. That makes send(2) fail with - EMSGSIZE if UDP datagram is too large. In that case, just let it be - lost. This patch enables DF bit for Linux only. - - Closes #8883 - -- libcurl-security.3: add "Secrets in memory" - - Closes #8881 - -- tests: update NTLM tests to use new host name - - Also drop the debug requirement, remove the setenv sections, remove - prechecks and add NTLM to the top keywords. - - Closes #8889 - -- ntlm: provide a fixed fake host name - - The NTLM protocol includes providing the local host name, but apparently - other implementations already provide a fixed fake name instead to avoid - leaking the real local name. - - The exact name used is 'WORKSTATION', because Firefox uses that. - - The change is written to allow someone to "back-pedal" fairly easy in - case of need. - - Reported-by: Carlo Alberto - Fixes #8859 - Closes #8889 - -Daniel Gustafsson (20 May 2022) -- KNOWN_BUGS: fix typo in problem description - - s/TSL/TLS/ - -- FEATURES: remove yassl as TLS library for NTLM - - yassl was added in commit 9d904ee41b880b but is no longer available - and is thus not a library to use for NTLM. This aligns the FEATURES - doc with the FAQ. - - Closes: #8886 - Reviewed-by: Daniel Stenberg - -- FEATURES: reorder footnotes - - The empty left-behind footnote confused the website rendering into - creating a nested emoty list, making the resulting page look quite - odd. Remove and re-order the remaining ones to avoid a gap in the - sequence. - - Closes: #8886 - Reviewed-by: Daniel Stenberg - -- FAQ: remove opinionated sentence on NTLM - - curl is a tool that support many different things, and it doesn't - really seem like our job to tell other what to use (as they might - not have much say in the matter even). Also tidy up wording. - - Closes: #8886 - Reviewed-by: Daniel Stenberg - -Viktor Szakats (20 May 2022) -- log2changes: do not indent empty lines [ci skip] - - This will omit two spaces of indentation from lines with no content, - thus avoiding 'spaces @ EOL'. - - Reviewed-by: Daniel Stenberg - Closes #8887 - -Daniel Stenberg (19 May 2022) -- wolfssl: correct the failf() message when a handle can't be made - - Closes #8885 - -Viktor Szakats (19 May 2022) -- Makefile.m32: delete two obsolete OpenSSL options [ci skip] - - - -DOPENSSL_NO_KRB5: No longer used by OpenSSL 1.1.x, 3.x, or - LibreSSL 3.5.x, yet it collides with the latter, which defines - it unconditionally, resulting in this warning: - ../../libressl/include/openssl/opensslfeatures.h:14:9: warning: 'OPENSSL_NO_KRB5' macro redefined [-Wmacro-redefined] - It was originally added to curl in 2004. - - - -DHAVE_OPENSSL_PKCS12_H: No longer used by OpenSSL 1.1.x, 3.x, or - LibreSSL back to at least 2.5.5. Originally added in the same - commit as the above, in 2004. - - Closes #8884 - -Daniel Stenberg (19 May 2022) -- RELEASE-NOTES: synced - - bump to 7.84.0 - -- [Christian Weisgerber via curl-library brought this change] - - Makefile.am: fix portability issues - - Commit a04f0b961333e1a19848d073d8c7db9c20b2a371 made me notice that - there is a portability issue in curl's top-level Makefile.am. - - $< can only be used in rules that deal with .SUFFIXES. Its use - for general prerequisites is a GNU make extension. - - $< could be replaced by $?, but I think in an autotools context, - something like this is better: - - Bug: https://curl.se/mail/lib-2022-05/0024.html - Closes #8861 - -- [Balakrishnan Balasubramanian brought this change] - - socks: support unix sockets for socks proxy - - Usage: - curl -x "socks5h://localhost/run/tor/socks" "https://example.com" - - Updated runtests.pl to run a socksd server listening on unix socket - - Added tests test1467 test1468 - - Added documentation for proxy command line option and socks proxy - options - - Closes #8668 - -- [Vincent Torri brought this change] - - cmake: add libpsl support - - Fixes #8865 - Closes #8867 - -- [Tatsuhiro Tsujikawa brought this change] - - ngtcp2: extend QUIC transport parameters buffer - - Extend QUIC transport parameters buffer because 64 bytes are too - short for the ever increasing parameters. - - Closes #8872 - -- [Tatsuhiro Tsujikawa brought this change] - - ngtcp2: handle error from ngtcp2_conn_submit_crypto_data - - Closes #8871 - -- [Tatsuhiro Tsujikawa brought this change] - - ngtcp2: send appropriate connection close error code - - Closes #8870 - -- test1561: adjusted for the cookie fix - -- test414: verify secure cookie domain overlay - -- [Harry Sintonen brought this change] - - cookie: address secure domain overlay - - Bug: https://hackerone.com/reports/1560324 - Co-authored-by: Daniel Stenberg - Closes #8840 - -- [Frank Gevaerts brought this change] - - strcase: some optimisations - - Lookup tables for toupper() and tolower() make Curl_strcasecompare() - about 1.5 times faster. Reorganising Curl_strcasecompare() to fully exit - early then also allows simplifying the check at the end, for another - 15%. In total, the changes make Curl_strcasecompare() around 1.6 to 1.7 - times faster. - - Note that these optimisation assume ASCII. The original - Curl_raw_toupper() and raw_tolower() look like they already made that - assumption. - - Closes #8875 - -- BUG-BOUNTY.md: mention the audit exception - - Dedicated - paid for - security audits that are performed in - collaboration with curl developers are not eligible for bounties. - - (plus I changed the sub-titles to use ## instead of # in the markdown) - - Closes #8880 - -- lib/vssh/wolfssh.h: removed - - Unused header file - - Reported-by: Illarion Taev - Fixes #8863 - Closes #8866 - -- [Elms brought this change] - - wolfSSL: explicitly use compatibility layer - - This change removes adding an include `$prefix/wolfssl` or similar to - allow for openssl include aliasing. Include paths of `wolfssl/openssl/` - are used to explicitly use wolfSSL includes. This fixes cmake builds as - well as avoiding potentially using openSSL headers since include path - order is not guaranteed. - - Closes #8864 - -- curl: deprecate --random-file and --egd-file - - As libcurl no longer has any functionality for them, the tool now does - nothing with them. - - Closes #8670 - -- opts: deprecate RANDOM_FILE and EGDSOCKET - - These two options were only ever used for the OpenSSL backend for - versions before 1.1.0. They were never used for other backends and they - are not used with recent OpenSSL versions. They were never used much by - applications. - - The defines RANDOM_FILE and EGD_SOCKET can still be set at build-time - for ancient EOL OpenSSL versions. - - Closes #8670 - -- [Harry Sintonen brought this change] - - bindlocal: don't use a random port if port number would wrap - - Earlier if CURLOPT_LOCALPORT + CURLOPT_LOCALPORTRANGE would go past port - 65535 the code would fall back to random port rather than giving up. - - Closes #8862 - -Daniel Gustafsson (16 May 2022) -- transfer: Fix potential NULL pointer dereference - - Commit 0ef54abf5208 accidentally used the conn variable before the - assertion for it being NULL. Fix by moving the assignment which use - conn to after the assertion. - - Closes: #8857 - Reviewed-by: Daniel Stenberg - -- docs: clarify data replacement policy for MIME API - - The API documentation for the MIME functions specify that the parts - can be set twice, with the last call winning. While true, the user - can set the parts n times for n > 2, reword to specify multiple API - calls instead. - - Closes: #8860 - Reviewed-by: Daniel Stenberg - -Daniel Stenberg (16 May 2022) -- [vvb2060 on github brought this change] - - ngtcp2: support boringssl crypto backend - - Closes #8789 - -- [Tatsuhiro Tsujikawa brought this change] - - quic: add Curl_quic_idle - - Add Curl_quic_idle which is called when no HTTP level read or write is - performed. It is a good place to handle timer expiry for QUIC transport - (.e.g, retransmission). - - Closes #8698 - -- [Gregor Jasny brought this change] - - mprintf: ignore clang non-literal format string - - Closes #8740 - -- [Nick Zitzmann brought this change] - - sectransp: check for a function defined when __BLOCKS__ is undefined - - SecTrustEvaluateAsync() is defined in the macOS 10.7 SDK, but it - requires Grand Central Dispatch to be supported by the compiler, and - some third-party macOS compilers do not support Grand Central Dispatch. - SecTrustCopyPublicKey() is not present in macOS 10.6, so this shouldn't - adversely affect anything. - - Fixes #8846 - Reported-by: Egor Pugin - Closes #8854 - -Daniel Gustafsson (16 May 2022) -- test412/413: Use version macro for User-Agent - - Commit 46d45ea3a incorrectly hardcoded the User-Agent in the test - output file which breaks when curlver is updated. Shift to using - the %VERSION macro instead. - - Closes: #8856 - -- macos9: remove partial support - - The support for compiling on Mac OS 9 hasn't been modified since 2001 - and has no active maintainer or packager, so it's time to remove it as - it's incredibly unlikely to work. If a maintainer re-emerges it can be - resurrected from Git history. - - Closes: #8836 - Reviewed-by: Daniel Stenberg - -Daniel Stenberg (16 May 2022) -- test1635: verify --fail-with-body with --retry - - Almost a dupe of 1634 - - Closes #8847 - -- tool_operate: make sure --fail-with-body works with --retry - - ... in the same way --fail already does. - - Reported-by: Jakub Bochenski - Fixes #8845 - Closes #8847 - -- [Tatsuhiro Tsujikawa brought this change] - - ngtcp2: Correct use of ngtcp2 and nghttp3 signed integer types - - Closes #8851 - -- [Tatsuhiro Tsujikawa brought this change] - - ngtcp2: Fix alert_read_func return value - - Closes #8852 - -- [Harry Sintonen brought this change] - - Curl_parsenetrc: don't access local pwbuf outside of scope - - Accessing local variables outside of the scope is forbidden and - depending on the compiler can result in the value being - overwritten. Fixed by moving the pwbuf to be in scope. - - Closes #8850 - -- RELEASE-NOTES: synced - - and bump curlver to 7.83.2 for now (but likely to become 7.84.0 soon) - -- [Frazer Smith brought this change] - - ci: update github actions - - - bump actions/checkout from 2 to 3 - - bump actions/upload-artifact from 1 to 3 - - bump github/codeql-actions from 1 to 2 - - use version tag for actions/checkout - - Closes #8843 - -- test1919: verify CURLOPT_XOAUTH2_BEARER leak fix - -- url: free old conn better on reuse - - Make use of conn_free() better and avoid duplicate code. - - Reported-by: Andrea Pappacoda - Fixes #8841 - Closes #8842 - -Jay Satiro (14 May 2022) -- FAQ: Clarify Windows double quote usage - - - Windows command prompt doesn't use literal quoting via single quotes. - - - Windows command prompt inner double quotes are escaped with a - backslash. - - - Windows powershell does use single quotes but curl is not a powershell - script so the arguments may not be passed on correctly. - - - Windows powershell inner double quotes seems can be passed to curl if - the outer quotes are double quotes and an escape of backslash-backtick - is used. - - Command prompt example: - - ~~~ - getargs -v -d "\"a\"" - - argv[0]: getargs - argv[1]: -v - argv[2]: -d - argv[3]: "a" - ~~~ - - Ref: https://github.com/curl/curl/issues/8818 - Ref: https://gist.github.com/jay/19aba48653bd591cf4b90eb9249a302c - - Reported-by: KotlinIsland@users.noreply.github.com - - Closes https://github.com/curl/curl/pull/8823 - -Daniel Stenberg (12 May 2022) -- github/workflows/nss: apt update first - - Fix "libnss3-dev_3.49.1-1ubuntu1.6_amd64.deb 404 Not Found" - - Closes #8837 - -- page-footer: mention exit code zero too - - Success (zero) is also an "exit code" worth mentioning. - - Closes #8833 - -Daniel Gustafsson (12 May 2022) -- gssapi: initialize gss_buffer_desc strings - - Explicitly initialize gss_buffer_desc strings such that a call to - freeing resources will succeed even if no data has been allocated - to it. - - Reported-by: Jay Satiro - -- gssapi: improve handling of errors from gss_display_status - - In case gss_display_status() returns an error, avoid trying to add - it to the buffer as the message may well be a NULL pointer. - - Originally this fix comes from a discussion in issue #8816. - - Closes: #8832 - Reviewed-by: Jay Satiro - -Jay Satiro (12 May 2022) -- [steini2000 brought this change] - - http2: always debug print stream id in decimal with %u - - Prior to this change the stream id shown could be hex or decimal which - was inconsistent and confusing. - - Closes https://github.com/curl/curl/pull/8808 - -Kamil Dudka (11 May 2022) -- url: remove redundant #ifdefs in allocate_conn() - - No change in behavior intended by this commit. - -Daniel Stenberg (11 May 2022) -- [Fabian Keil brought this change] - - tests 266, 116 and 1540: add a small write delay - - This makes it more likely that the trailer is received - seperately from the last-chunk. - - curl doesn't seem to care about this but it makes the tests - more useful when testing external proxies like Privoxy. - -- [Fabian Keil brought this change] - - tests 1117,1238,1523: adjust writedelay servercmds - - ... so the delays are the same now that the unit - is in milliseconds. - -- [Fabian Keil brought this change] - - tests/server/sws.c: change the HTTP writedelay unit to milliseconds - - This allows to use write delays for large responses without - resulting in the test taking an unreasonable amount of time. - - In many cases delaying writes by a whole second or more isn't - necessary for the desired effect. - - Closes #8827 - -Daniel Gustafsson (11 May 2022) -- aws-sigv4: fix potentional NULL pointer arithmetic - - We need to check if the strchr() call returns NULL (due to missing - char) before we use the returned value in arithmetic. There is no - live bug here, but fixing it before it can become for hygiene. - - Closes: #8814 - Reviewed-by: Daniel Stenberg - -Daniel Stenberg (11 May 2022) -- quiche: support ca-fallback - - Follow-up to b01f3e679f4c1ea3 which added this for ngtcp2/openssl - - Removed from KNOWN_BUGS - - Fixes #8696 - Closes #8830 - -Daniel Gustafsson (11 May 2022) -- x509asn1: mark msnprintf return as unchecked - - We have lots of unchecked msnprintf calls, and this particular msnprintf - call isn't more interesting than the others, but this one yields a Coverity - warning so let's implicitly silence it. Going over the other invocations - is probably a worthwhile project, but for now let's keep the static - analyzers happy. - - Closes: #8831 - Reviewed-by: Daniel Stenberg - -Version 7.83.1 (11 May 2022) - -Daniel Stenberg (11 May 2022) -- RELEASE-NOTES: synced - - curl 7.83.1 release - -- THANKS: added contributors from 7.83.1 - -- zuul: fix the ngtcp2-gnutls build - - Add packages and tweak the configure options. - - Use the GnuTLS 3.7.4 branch (not main). - - Closes #8829 - -- [Tatsuhiro Tsujikawa brought this change] - - ngtcp2: add ca-fallback support for OpenSSL backend - - Closes #8828 - -- url: check SSH config match on connection reuse - - CVE-2022-27782 - - Reported-by: Harry Sintonen - Bug: https://curl.se/docs/CVE-2022-27782.html - Closes #8825 - -- tls: check more TLS details for connection reuse - - CVE-2022-27782 - - Reported-by: Harry Sintonen - Bug: https://curl.se/docs/CVE-2022-27782.html - Closes #8825 - -- cookies: make bad_domain() not consider a trailing dot fine - - The check for a dot in the domain must not consider a single trailing - dot to be fine, as then TLD + trailing dot is fine and curl will accept - setting cookies for it. - - CVE-2022-27779 - - Reported-by: Axel Chong - Bug: https://curl.se/docs/CVE-2022-27779.html - Closes #8820 - -- test977: reproduce ability to set cookie on TLD - - When PSL is not enabled - -- scripts/contributors.sh: correct the copyright range - -- docs/RELEASE-PROCEDURE.md: refreshed and adjsuted the release dates - -- test379: verify --remove-on-error with --no-clobber - -- post_per_transfer: remove the updated file name - - When --remove-on-error is used with --no-clobber, it might have an - updated file name to remove. - - Bug: https://curl.se/docs/CVE-2022-27778.html - - CVE-2022-27778 - - Reported-by: Harry Sintonen - - Closes #8824 - -- hsts: ignore trailing dots when comparing hosts names - - CVE-2022-30115 - - Reported-by: Axel Chong - Bug: https://curl.se/docs/CVE-2022-30115.html - Closes #8821 - -- test440/441: verify HSTS with trailing dots - -- libtest/lib1560: verify the host name percent decode fix - -- urlapi: reject percent-decoding host name into separator bytes - - CVE-2022-27780 - - Reported-by: Axel Chong - Bug: https://curl.se/docs/CVE-2022-27780.html - Closes #8826 - -- nss: return error if seemingly stuck in a cert loop - - CVE-2022-27781 - - Reported-by: Florian Kohnhäuser - Bug: https://curl.se/docs/CVE-2022-27781.html - Closes #8822 - -- test412/413: verify alt-svc with trailing dots - -- altsvc: fix host name matching for trailing dots - - Closes #8819 - -- [Garrett Squire brought this change] - - hyper: fix test 357 - - This change fixes the hyper API such that PUT requests that receive a - 417 response can retry without the Expect header. - - Closes #8811 - -- [Harry Sintonen brought this change] - - sectransp: bail out if SSLSetPeerDomainName fails - - Before the code would just warn about SSLSetPeerDomainName() errors. - - Closes #8798 - -- http_proxy/hyper: handle closed connections - - Enable test 1021 for hyper builds. - - Patched-by: Prithvi MK - Fixes #8700 - Closes #8806 - -- KNOWN_BUGS: timeout when reusing a http3 connection - - Closes #8764 - -- KNOWN_BUGS: configure --with-ca-fallback is not supported by h3 - - Closes #8696 - -- [Ryan Schmidt brought this change] - - Makefile: fix "make ca-firefox" - - Closes #8804 - -Daniel Gustafsson (5 May 2022) -- tests: fix markdown formatting in README - - The asterisk in the abbreviation *NIX (for UNIX/Linux) needs to be - escaped to not mean start of italic formatting. This is consistent - with docs/RELEASE-PROCEDURE.md. - - Closes: #8802 - Reviewed-by: Daniel Stenberg - -Daniel Stenberg (5 May 2022) -- TODO: expand on "Expose tried IP addresses that failed" - - Ref: #8794 - -Daniel Gustafsson (5 May 2022) -- [Fabian Keil brought this change] - - tests/server: declare variable 'reqlogfile' static - - Silences the warning: - - CC socksd-socksd.o - socksd.c:143:13: warning: no previous extern declaration for - non-static variable 'reqlogfile' [-Wmissing-variable-declarations] - const char *reqlogfile = DEFAULT_REQFILE; - ^ - socksd.c:143:7: note: declare 'static' if the variable is not - intended to be used outside of this translation unit - const char *reqlogfile = DEFAULT_REQFILE; - ^ - 1 warning generated. - - ... when compiling with clang 13. - - Closes: #8799 - Reviewed-by: Daniel Gustafsson - -- HTTP-COOKIES: add missing CURLOPT_COOKIESESSION - - Commit 980a47b42 added support for ignoring session cookies, but it - was never added to the documentation. - - Closes: #8795 - Reviewed-by: Daniel Stenberg - -Daniel Stenberg (5 May 2022) -- docs/THANKS: remove name duplicate - -- [Philip H brought this change] - - .mailmap: update - - Closes #8800 - -Jay Satiro (5 May 2022) -- mbedtls: fix some error messages - - Prior to this change some of the error messages misidentified the - function that failed. - -Daniel Stenberg (5 May 2022) -- RELEASE-NOTES: synced - -- [Sergey Markelov brought this change] - - x509asn1: make do_pubkey handle EC public keys - - Closes #8757 - -- [Harry Sintonen brought this change] - - mbedtls: bail out if rng init fails - - There was a failf() call but no actual error return. - - Closes #8796 - -- [Sergey Markelov brought this change] - - urlapi: address (harmless) UndefinedBehavior sanitizer warning - - `while(i--)` causes runtime error: unsigned integer overflow: 0 - 1 - cannot be represented in type 'size_t' (aka 'unsigned long') - - Closes #8797 - -- [Fabian Keil brought this change] - - test{898,974,976}: add 'HTTP proxy' keywords - - ... so the tests can be automatically skipped when - testing external HTTP proxies like Privoxy. - - Closes #8791 - -- [Harry Sintonen brought this change] - - gskit_connect_step1: fixed bogus setsockopt calls - - setsockopt takes a reference to value, not value. With the current - code this just leads to -1 return value with errno EFAULT. - - Closes #8793 - -- CURLOPT_SSH_AUTH_TYPES.3: fix the default - - The default is all possible methods. - - Closes #8792 - -- CURLOPT_DOH_URL.3: mention the known bug - - It is mostly duplicating info from KNOWN_BUGS but make it easier to find - for users of this option. - - Closes #8790 - -- CURLOPT_HSTS*FUNCTION.3: document the involved structs as well - - Reviewed-By: Daniel Gustafsson - Closes #8788 - -- docs/SECURITY-PROCESS.md: "Visible command line arguments" - -- SECURITY-PROCESS: mention "URL inconsistencies" - - ... as common problems that are *not* vulns. - -Daniel Gustafsson (2 May 2022) -- contributors: strip off final comma - - The final row of contributors should not end with a comma as it's the - end of the list. - - Closes: #8785 - Reviewed-by: Daniel Stenberg - -Daniel Stenberg (2 May 2022) -- [Philip H brought this change] - - misc: use "autoreconf -fi" instead buildconf - - Signed-off-by: Philip H <47042125+pheiduck@users.noreply.github.com> - Closes #8777 - -Daniel Gustafsson (2 May 2022) -- [Philip H brought this change] - - cirrus: Use pip for Python packages on FreeBSD - - Using pip instead of easy_install is more in line with how other - CI images are being maintained. - - Closes: #8783 - Reviewed-by: Daniel Gustafsson - -- [Philip H brought this change] - - cirrus: Update to FreeBSD 12.3 - - Closes: #8783 - Reviewed-by: Daniel Gustafsson - -- tool_getparam: simplify conditional statement - - param_place cannot be NULL here since we immediately efter this block - perform arithmetic on it (and use it in order to get here) so there is - little reason to check. - - Closes: #8786 - Reviewed-by: Daniel Stenberg - -- RELEASE-NOTES: synced - -- gskit: remove unused function set_callback - - This function has been unused since the initial commit of the GSKit - backend in 0eba02fd4. The motivation for the code was getting the - whole certificate chain: the only place where the latter is available - is as a callback parameter. Unfortunately it is not possible to pass - a user pointer to this callback, which precludes the possibility to - associate the cert chain with a data/conn structure. - - For further information, search for pgsk_cert_validation_callback on: - https://www.ibm.com/docs/api/v1/content/ssw_ibm_i_71/apis/gsk_attribute_set_callback.htm - - As the upstream library never added a parameter like that to the API, - we give up the wait and remove the dead code. - - Closes: #8782 - Reviewed-by: Patrick Monnerat - -- curl: free resource in error path - - If the new filename cannot be generated due to memory pressure, free - the allocated aname on the way out to avoid a small leak. - - Closes: #8770 - Reviewed-by: Daniel Stenberg - -- curl: guard against size_t wraparound in no-clobber code - - When generating the new filename, make sure we aren't overflowing the - size_t limit when calculating the new length. This is mostly academic - but good code hygeine nonetheless. - - Closes: #8771 - Reviewed-by: Daniel Stenberg - -Daniel Stenberg (30 Apr 2022) -- gha: build msh3 - - Closes #8779 - -- scripts/cijobs.pl: try "current branch" first then "master" - -- [Yusuke Nakamura brought this change] - - msh3: get msh3 version from MsH3Version - - Closes #8762 - -- [Yusuke Nakamura brought this change] - - msh3: psss remote_port to MsH3ConnectionOpen - - MsH3 supported additional "Port" parameter to connect not hosted on - 443 port QUIC website. - - * https://github.com/nibanks/msh3/releases/tag/v0.3.0 - * https://github.com/nibanks/msh3/pull/37 - - Closes #8762 - -- [Christian Weisgerber brought this change] - - openssl: define HAVE_SSL_CTX_SET_EC_CURVES for libressl - - SSL_CTX_set1_curves_list() has been available since LibreSSL 2.5.3, - released five years ago. - - Bug: https://curl.se/mail/lib-2022-04/0059.html - Closes #8773 - -- http: move Curl_allow_auth_to_host() - - It was mistakenly put within the CURL_DISABLE_HTTP_AUTH #ifdef - - Reported-by: Michael Olbrich - Fixes #8772 - Closes #8775 - -Daniel Gustafsson (29 Apr 2022) -- msh3: print boolean value as text representation - - Print the boolean value as its string representation instead of with - %hhu which isn't a format we typically use. - - Closes: #8763 - Reviewed-by: Nick Banks - -Daniel Stenberg (29 Apr 2022) -- data/test376: set a proper name - -- GHA/mbedtls: enabled nghttp2 in the build - - Closes #8767 - -- mbedtls: fix compile when h2-enabled - - Fixes #8766 - Reported-by: LigH-de on github - Closes #8768 - -- RELEASE-NOTES: synced - - bumped curlver to 7.83.1-dev - -- SECURITY-PROCESS: extended - - Also clarify BUG-BOUNTY.md with IBB details. - - Closes #8754 - -- [Adam Rosenfield brought this change] - - conn: fix typo 'connnection' -> 'connection' in two function names - - Closes #8759 - -Version 7.83.0 (27 Apr 2022) - -Daniel Stenberg (27 Apr 2022) -- RELEASE-NOTES: synced - - The 7.83.0 release - -- docs/THANKS: contributors from 7.83.0 - -- test 898/974/976: require proxy to run - - Fixes #8755 - Reported-by: Marc Hörsken - Closes #8756 - -- gnutls: don't leak the SRP credentials in redirects - - Follow-up to 620ea21410030 and 139a54ed0a172a - - Reported-by: Harry Sintonen - Closes #8752 - -- CURLOPT*TLSAUTH: they only work with OpenSSL or GnuTLS - - Closes #8753 - -- openssl: don't leak the SRP credentials in redirects either - - Follow-up to 620ea21410030 - - Reported-by: Harry Sintonen - Closes #8751 - -- [Liam Warfield brought this change] - - hyper: fix tests 580 and 581 for hyper - - Hyper now has the ability to preserve header order. This commit adds a - few lines setting the connection options for this feature. - - Related to issue #8617 - Closes #8707 - -- conncache: remove name arg from Curl_conncache_find_bundle - - To simplify, and also since the returned name is not the full actual - name used for the check. The port number and zone id is also involved, - so just showing the name is misleading. - - Closes #8750 - -- tests: verify the fix for CVE-2022-27774 - - - Test 973 redirects from HTTP to FTP, clear auth - - Test 974 redirects from HTTP to HTTP different port, clear auth - - Test 975 redirects from HTTP to FTP, permitted to keep auth - - Test 976 redirects from HTTP to HTTP different port, permitted to keep - auth - -- transfer: redirects to other protocols or ports clear auth - - ... unless explicitly permitted. - - Bug: https://curl.se/docs/CVE-2022-27774.html - Reported-by: Harry Sintonen - Closes #8748 - -- connect: store "conn_remote_port" in the info struct - - To make it available after the connection ended. - -- cookie.d: clarify when cookies are always sent - -- test898: verify the fix for CVE-2022-27776 - - Do not pass on Authorization headers on redirects to another port - -- http: avoid auth/cookie on redirects same host diff port - - CVE-2022-27776 - - Reported-by: Harry Sintonen - Bug: https://curl.se/docs/CVE-2022-27776.html - Closes #8749 - -- libssh2: make the md5 comparison fail if wrong length - - Making it just skip the check unless exactly 32 is too brittle. Even if - the docs says it needs to be exactly 32, it is be safer to make the - comparison fail here instead. - - Reported-by: Harry Sintonen - Bug: https://hackerone.com/reports/1549461 - Closes #8745 - -- conncache: include the zone id in the "bundle" hashkey - - Make connections to two separate IPv6 zone ids create separate - connections. - - Reported-by: Harry Sintonen - Bug: https://curl.se/docs/CVE-2022-27775.html - Closes #8747 - -- [Patrick Monnerat brought this change] - - url: check sasl additional parameters for connection reuse. - - Also move static function safecmp() as non-static Curl_safecmp() since - its purpose is needed at several places. - - Bug: https://curl.se/docs/CVE-2022-22576.html - - CVE-2022-22576 - - Closes #8746 - -- libssh2: compare sha256 strings case sensitively - - Reported-by: Harry Sintonen - Bug: https://hackerone.com/reports/1549435 - Closes #8744 - -- tool_getparam: error out on missing -K file - - Add test 411 to verify. - - Reported-by: Median Median Stride - Bug: https://hackerone.com/reports/1542881 - Closes #8731 - -- [Tatsuhiro Tsujikawa brought this change] - - ngtcp2: deal with sub-millisecond timeout - - Closes #8738 - -- misc: update copyright year ranges - -- c_escape: escape '?' in generated --libcurl code - - In order to avoid the risk of it being used in an accidental trigraph in - the generated code. - - Reported-by: Harry Sintonen - Bug: https://hackerone.com/reports/1548535 - Closes #8742 - -- [Philip H brought this change] - - mlc: curl.zuul.vexxhost.dev is reachable again - - remove it from ignorelist for linkcheck - - Closes #8736 - -- [Tatsuhiro Tsujikawa brought this change] - - ngtcp2: avoid busy loop in low CWND situation - - Closes #8739 - -- TODO: telnet - exit immediately upon connection if stdin is /dev/null - - Suggested-by: Robin A. Meade - URL: https://curl.se/mail/archive-2022-04/0027.html - -- [Kushal Das brought this change] - - docs: updates spellings with full words - - Closes #8730 - -- tests/FILEFORMAT.md: spellfix - -Daniel Gustafsson (21 Apr 2022) -- misc: fix typos - - Fix a few random typos is comments and workflow names. - -- macos: fix .plist installation into framework - - The copy command introduced in e498a9b1f had leftover '>' from the - previous sed command it replaced, which broke its syntax. Fix by - removing. - - Reported-by: Emanuele Torre - -Daniel Stenberg (21 Apr 2022) -- [Christopher Degawa brought this change] - - Makefile: fix ca-bundle due to mk-ca-bundle.pl being moved - - The script was moved in 8e22fc68e7dda43e9f but the lines that called it - was not changed to reflect it's new position - - Signed-off-by: Christopher Degawa - - Closes #8728 - -Daniel Gustafsson (20 Apr 2022) -- macos: set .plist version in autoconf - - Set the libcurl version in libcurl.plist like how libcurl.vers is - created. - - Closes: #8692 - Reviewed-by: Daniel Stenberg - Reviewed-by: Nick Zitzmann - -- cookies: Improve errorhandling for reading cookiefile - - The existing programming had some issues with errorhandling for reading - the cookie file. If the file failed to open, we would silently ignore it - and continue as if there was no file (or stdin) passed. In this case, we - would also call fclose() on the NULL FILE pointer, which is undefined - behavior. Fix by ensuring that the FILE pointer is set before calling - fclose on it, and issue a warning in case the file cannot be opened. - Erroring out on nonexisting file would break backwards compatibility of - very old behavior so we can't really go there. - - Closes: #8699 - Reviewed-by: Daniel Stenberg - Reviewed-by: Jay Satiro - -Daniel Stenberg (20 Apr 2022) -- libcurl-tutorial.3: spellfix and minor polish - -- CURLINFO_PRIMARY_PORT.3: spellfix - - Reported-by: Patrick Monnerat - -- [Jay Dommaschk brought this change] - - libssh: fix double close - - libssh closes the socket in ssh_diconnect() so make sure that libcurl - does not also close it. - - Fixes #8708 - Closes #8718 - -Jay Satiro (20 Apr 2022) -- [Gisle Vanem brought this change] - - unit1620: call global_init before calling Curl_open - - Curl_open calls the resolver init and on Windows if the resolver backend - is c-ares then the Windows sockets library (winsock) must already have - been initialized (via global init). - - Ref: https://github.com/curl/curl/pull/8540#issuecomment-1059771800 - - Closes https://github.com/curl/curl/pull/8719 - -Daniel Stenberg (19 Apr 2022) -- CURLINFO_PRIMARY_PORT.3: clarify which port this is - - As it was not entirely clear previously. - - Closes #8725 - -- CURLOPT_UNRESTRICTED_AUTH.3: extended explanation - - Include details about Authentication headers. - - Reported-by: Brad Spencer - Fixes #8724 - Closes #8726 - -- .github/workflows/macos.yml: add a libssh job with c-ares - - ... to enable the memdebug system - - Closes #8720 - -- RELEASE-NOTES: synced - -Jay Satiro (17 Apr 2022) -- [Gisle Vanem brought this change] - - docs/HTTP3.md: fix typo - - also fix msh3 section formatting - - Ref: https://github.com/curl/curl/commit/37492ebb#r70980087 - -Marc Hoersken (17 Apr 2022) -- timediff.[ch]: add curlx helper functions for timeval conversions - - Also move timediff_t definitions from timeval.h to timediff.h and - then make timeval.h include the new standalone-capable timediff.h. - - Reviewed-by: Jay Satiro - Reviewed-by: Daniel Stenberg - - Supersedes #5888 - Closes #8595 - -Daniel Stenberg (17 Apr 2022) -- [Balakrishnan Balasubramanian brought this change] - - tests: refactor server/socksd.c to support --unix-socket - - Closes #8687 - -- [Emanuele Torre brought this change] - - tool_paramhlp: use feof(3) to identify EOF correctly when using fread(3) - - This loop was using the number of bytes read from the file as condition - to keep reading. - - From Linux's fread(3) man page: - > On success, fread() and fwrite() return the number of items read or - > written. This number equals the number of bytes transferred only when - > size is 1. If an error occurs, or the end of the file is reached, the - > return value is a short item count (or zero). - > - > The file position indicator for the stream is advanced by the number - > of bytes successfully read or written. - > - > fread() does not distinguish between end-of-file and error, and - > callers must use feof(3) and ferror(3) to determine which occurred. - - This means that nread!=0 doesn't make much sense as an end condition for - the loop: nread==0 doesn't necessarily mean that EOF has been reached or - an error has occured (but that is usually the case) and nread!=0 doesn't - necessarily mean that EOF has not been reached or that no read errors - have occured. feof(3) and ferror(3) should be uses when using fread(3). - - Currently curl has to performs an extra fread(3) call to get a return - value equal to 0 to stop looping. - - This usually "works" (even though nread==0 shouldn't be interpreted as - EOF) if stdin is a pipe because EOF usually marks the "real" end of the - stream, so the extra fread(3) call will return immediately and the extra - read syscall won't be noticeable: - - bash-5.1$ strace -e read curl -s -F file=@- 0x0.st <<< a 2>&1 | - > tail -n 5 - read(0, "a\n", 4096) = 2 - read(0, "", 4096) = 0 - read(0, "", 4096) = 0 - http://0x0.st/oRs.txt - +++ exited with 0 +++ - bash-5.1$ - - But this doesn't work if curl is reading from stdin, stdin is a - terminal, and the EOF is being emulated using a shell with ^D. Two - consecutive ^D will be required in this case to actually make curl stop - reading: - - bash-5.1$ curl -F file=@- 0x0.st - a - ^D^D - http://0x0.st/oRs.txt - bash-5.1$ - - A possible workaround to this issue is to use a program that handles EOF - correctly to indirectly send data to curl's stdin: - - bash-5.1$ cat - | curl -F file=@- 0x0.st - a - ^D - http://0x0.st/oRs.txt - bash-5.1$ - - This patch makes curl handle EOF properly when using fread(3) in - file2memory() so that the workaround is not necessary. - - Since curl was previously ignoring read errors caused by this fread(3), - ferror(3) is also used in the condition of the loop: read errors and EOF - will have the same meaning; this is done to somewhat preserve the old - behaviour instead of making the command fail when a read error occurs. - - Closes #8701 - -- gen.pl: change wording for mutexed options - - Instead of saying "This option overrides NNN", now say "This option is - mutually exclusive to NNN" in the generated man page ouput, as the - option does not in all cases actually override the others but they are - always mutually exclusive. - - Ref: #8704 - Closes #8716 - -- curl: error out if -T and -d are used for the same URL - - As one implies PUT and the other POST, both cannot be used - simultaneously. - - Add test 378 to verify. - - Reported-by: Boris Verkhovskiy - Fixes #8704 - Closes #8715 - -- lib: remove exclamation marks - - ... from infof() and failf() calls. Make them less attention seeking. - - Closes #8713 - -- fail.d: tweak the description - - Reviewed-by: Daniel Gustafsson - Suggested-by: Robert Charles Muir - Ref: https://twitter.com/rcmuir/status/1514915401574010887 - - Closes #8714 - -Daniel Gustafsson (15 Apr 2022) -- docs: Fix missing semicolon in example code - - Multiple share examples were missing a semicolon on the line defining - the CURLSHcode variable. - - Closes: #8697 - Reported-by: Michael Kaufmann - Reviewed-by: Daniel Stenberg - -- infof: consistent capitalization of warning messages - - Ensure that all infof calls with a warning message are capitalized - in the same way. At some point we should probably set up a style- - guide for infof but until then let's aim for a little consistenncy - where we can. - - Closes: #8711 - Reviewed-by: Daniel Stenberg - -- RELEASE-NOTES: synced - -- [Matteo Baccan brought this change] - - perl: removed a double semicolon at end of line - - Remove double semicolons at end of line in Perl code. - - Closes: #8709 - Reviewed-by: Daniel Gustafsson - -- curl_easy_header: fix typos in documentation - - Closes: #8694 - Reviewed-by: Daniel Stenberg - -Marcel Raad (11 Apr 2022) -- appveyor: add Cygwin build - - Closes https://github.com/curl/curl/pull/8693 - -- appveyor: only add MSYS2 to PATH where required - - Closes https://github.com/curl/curl/pull/8693 - -Daniel Stenberg (10 Apr 2022) -- [Tatsuhiro Tsujikawa brought this change] - - ngtcp2: fix memory leak - - Closes #8691 - -- [Tatsuhiro Tsujikawa brought this change] - - ngtcp2: remove remote_addr which is not used in a meaningful way - - Closes #8689 - -- [Tatsuhiro Tsujikawa brought this change] - - ngtcp2: enlarge H3_SEND_SIZE - - Make h3_SEND_SIZE larger because current value (20KiB) is too small - for the high latency environment. - - Closes #8690 - -- [Tatsuhiro Tsujikawa brought this change] - - ngtcp2: fix HTTP/3 upload stall and avoid busy loop - - This commit fixes HTTP/3 upload stall if upload data is larger than - H3_SEND_SIZE. Only check writability of socket if a stream is - writable to avoid busy loop when QUIC flow control window is filled - up, or upload buffer is full. - - Closes #8688 - -- [Nick Banks brought this change] - - msh3: add support for QUIC and HTTP/3 using msh3 - - Considered experimental, as the other HTTP/3 backends. - - Closes #8517 - -- TODO: "SFTP with SCP://" - -- GHA: move bearssl jobs over from zuul - - Closes #8684 - -- data/DISABLED: disable test 313 on bearssl builds - - Closes #8684 - -- runtests: add 'bearssl' as testable feature - - Closes #8684 - -- GHA: add openssl3 jobs moved over from zuul - - Closes #8683 - -- schannel: remove dead code that will never run - - As the condition can't ever evaluate true - - Reported-by: Andrey Alifanov - Ref: #8675 - Closes #8677 - -- connecache: remove duplicate connc->closure_handle check - - The superfluous extra check could cause analyzer false positives - and doesn't serve any purpose. - - Closes #8676 - -- [MichaÅ‚ Antoniak brought this change] - - mbedtls: remove server_fd from backend - - Closes #8682 - -- [Tatsuhiro Tsujikawa brought this change] - - ngtcp2: use token when detecting :status header field - - Closes #8679 - -- [Tatsuhiro Tsujikawa brought this change] - - ngtcp2: make curl 1ms faster - - Pass 0 for an already expired timer. - - Closes #8678 - -- [Tatsuhiro Tsujikawa brought this change] - - ngtcp2: fix QUIC_IDLE_TIMEOUT - - QUIC_IDLE_TIMEOUT should be of type ngtcp2_duration which is - nanoseconds resolution. - - Closes #8678 - -- English: use American spelling consistently - - Authorization, Initialization, Organization etc. - - Closes #8673 - -Daniel Gustafsson (5 Apr 2022) -- [Sascha Zengler brought this change] - - BUGS: Fix incorrect punctuation - - Closes #8672 - Reviewed-by: Daniel Gustafsson - -Daniel Stenberg (4 Apr 2022) -- tool_listhelp.c: uppercase URL - -- RELEASE-NOTES: synced - -- http: streamclose "already downloaded" - - Instead of connclose()ing, since when HTTP/2 is used it doesn't need to - close the connection as stopping the current transfer is enough. - - Reported-by: Evangelos Foutras - Closes #8665 - -Jay Satiro (1 Apr 2022) -- ftp: fix error message for partial file upload - - - Show the count of bytes written on partial file upload. - - Prior to this change the error message mistakenly showed the count of - bytes read, not written. - - Bug: https://github.com/curl/curl/discussions/8637 - Reported-by: Taras Kushnir - - Closes https://github.com/curl/curl/pull/8649 - -Daniel Stenberg (1 Apr 2022) -- http: correct the header error message to say colon - - Not semicolon - - Reported-by: Gisle Vanem - Ref: #8666 - Closes #8667 - -- lib: #ifdef on USE_HTTP2 better - - ... as nghttp2 might not be the library that provides HTTP/2 support. - - Closes #8661 - -- [MichaÅ‚ Antoniak brought this change] - - mbedtls: remove 'protocols' array from backend when ALPN is not used - - Closes #8663 - -- http2: RST the stream if we stop it on our own will - - For the "simulated 304" case the done-call isn't considered "premature" - but since the server didn't close the stream it needs to be reset to - stop delivering data. - - Closes #8664 - -- http: close the stream (not connection) on time condition abort - - Closes #8664 - -- http2: handle DONE called for the paused stream - - As it could otherwise stall all streams on the connection - - Reported-by: Evangelos Foutras - Fixes #8626 - Closes #8664 - -- tls: make mbedtls and NSS check for h2, not nghttp2 - - This makes them able to also negotiate HTTP/2 even when built to use - hyper for h2. - - Closes #8656 - -- tests/libtest/lib670.c: fixup the copyright year range - - follow-up to b54e18640ea4b7 - -- [Leandro Coutinho brought this change] - - lib670: avoid double check result - - Closes #8660 - -- vtls: use a generic "ALPN, server accepted" message - - Closes #8657 - -- vtls: use a backend standard message for "ALPN: offers %s" - - I call it VTLS_INFOF_ALPN_OFFER_1STR, the '1str' meaning that the - infof() call also needs a string argument: the ALPN ID. - - Closes #8657 - -- [Christian Schmitz brought this change] - - strcase.h: add comment about the return code - - Tool often we run into expecting this to work like strcmp, but it - returns 1 instead of 0 for match. - - Closes #8658 - -- vtls: provide a unified APLN-disagree string for all backends - - Also rephrase to make it sound less dangerous: - - "ALPN: server did not agree on a protocol. Uses default." - - Reported-by: Nick Coghlan - Fixes #8643 - Closes #8651 - -- projects/README: converted to markdown - - Closes #8652 - -- misc: spelling fixes - - Mostly in comments but also in the -w documentation for headers_json. - - Closes #8647 - -- KNOW_BUGS: HTTP3/Transfer closed with n bytes remaining to read - - "HTTP/3 does not support client certs" considered fixed, at least with - the ngtcp2 backend. - - Closes #8523 - -- CURLOPT_PREQUOTE.3: only works for FTP file transfers, not dirs - - Also add to quote.d. Add to TODO as something to add in a future. - - Reported-by: anon00000000 on github - Closes #8602 - Closes #8648 - -- RELEASE-NOTES: synced - -- pop3/smtp: return *WEIRD_SERVER_REPLY when not understood - - This leaves the CURLE_RECV_ERROR error code for explicit failure to - receive network data and allows users to better separate the problems. - - Ref #8356 - Reported-by: Rianov Viacheslav - Closes #8506 - -- docs: lots of minor language polish - - Mostly based on recent language decisions from "everything curl": - - - remove contractions (isn't => is not) - - *an* HTTP (consistency) - - runtime (no hyphen) - - backend (no hyphen) - - URL is uppercase - - Closes #8646 - -Jay Satiro (29 Mar 2022) -- projects: Update VC version names for VS2017, VS2022 - - - Rename VC15 -> VC14.10, VC17 -> VC14.30. - - The projects directory that holds the pre-generated Visual Studio - project files uses VC to indicate the MSVC version. At some point - support for Visual Studio 2017 (Visual Studio version 15 which uses MSVC - 14.10) was added as VC15. Visual Studio 2022 (Visual Studio version 17 - which uses MSVC 14.30) project files were recently added and followed - that same format using VC17. - - There is no such MSVC version (yet) as VC15 or VC17. - - For VS 2017 for example, the name we use is correct as either VS17, - VS2017, VC14.10. I opted for the latter since we use VC for earlier - versions (eg VC10, VC12, etc). - - Ref: https://github.com/curl/curl/pull/8438#issuecomment-1037070192 - - Closes https://github.com/curl/curl/pull/8447 - -Daniel Stenberg (29 Mar 2022) -- mqtt: better handling of TCP disconnect mid-message - - Reported-by: Jenny Heino - Bug: https://hackerone.com/reports/1521610 - Closes #8644 - -- CURLOPT_DISALLOW_USERNAME_IN_URL.3: use uppercase URL - -- [Ian Blanes brought this change] - - docs/DYNBUF: clarify documentation for Curl_dyn_ptr and Curl_dyn_uptr - - Closes #8606 - -- [Ian Blanes brought this change] - - curl: fix segmentation fault for empty output file names. - - Function glob_match_url set *result to NULL when called with filename = - "", producing an indirect NULL pointer dereference. - - Closes #8606 - -- TODO: Read keys from ~/.ssh/id_ecdsa, id_ed25519 - - It would be nice to expand the list of key locations curl uses for the - newer key types supported by libssh2. - - Closes #8586 - -- ngtcp2: update to work after recent ngtcp2 updates - - Assisted-by: Tatsuhiro Tsujikawa - Reported-by: jurisuk on github - Fixes #8638 - Closes #8639 - -- [Farzin brought this change] - - CURLOPT_PROGRESSFUNCTION.3: fix typo in example - - Closes #8636 - -- curl/header_json: output the header names in lowercase - - To better allow json[“headerâ€]. - - Reported-by: Peter Korsgaard - Bug: https://daniel.haxx.se/blog/2022/03/24/easier-header-picking-with-curl/comment-page-1/#comment-25878 - Closes #8633 - -- RELEASE-NOTES: synced - -- headers.h: make Curl_headers_push() be CURLE_OK when not built - - ... to avoid errors when the function isn't there. - - Reported-by: Marcel Raad - Fixes #8627 - Closes #8628 - -- scripts: move three scripts from lib/ to scripts/ - - Move checksrc.pl, firefox-db2pem.sh and mk-ca-bundle.pl since they don't - particularly belong in lib/ - - Also created an EXTRA_DIST= in scripts/Makefile.am instead of specifying - those files in the root Makefile.am - - Closes #8625 - -Marc Hoersken (23 Mar 2022) -- lib/warnless.[ch]: only check for WIN32 and ignore _WIN32 - - curl_setup.h automatically defines WIN32 if just _WIN32 is defined. - - Therefore make sure curl_setup.h is included through warnless.h. - - Reviewed-by: Daniel Stenberg - Reviewed-by: Jay Satiro - - Closes #8594 - -- tests/server/util.h: align WIN32 condition with util.c - - There is no need to test for both _WIN32 and WIN32 as curl_setup.h - automatically defines the later if the first one is defined. - - Also tests/server/util.c is only checking for WIN32 arouund the - implementation of win32_perror, so just defining _WIN32 - would not be sufficient for a successful compilation. - - Reviewed-by: Daniel Stenberg - Reviewed-by: Jay Satiro - - Closes #8594 - -Daniel Stenberg (22 Mar 2022) -- [Philip H brought this change] - - firefox-db2pem.sh: make the shell script safer - - Reported by lift - - Closes #8616 - -Jay Satiro (22 Mar 2022) -- gtls: fix build for disabled TLS-SRP - - Prior to this change if, at build time, the GnuTLS backend was found to - have TLS-SRP support (HAVE_GNUTLS_SRP) but TLS-SRP was disabled in curl - via --disable-tls-srp (!USE_TLS_SRP) then a build error would occur. - - Bug: https://curl.se/mail/lib-2022-03/0046.html - Reported-by: Robert Brose - - Closes https://github.com/curl/curl/pull/8604 - -- winbuild: Add a Visual Studio example to the README - - - Add an example that explains in detail how the user can add libcurl to - their Visual Studio project. - - Ref: https://github.com/curl/curl/issues/8591 - - Closes https://github.com/curl/curl/pull/8592 - -- docs/opts: Mention Schannel client cert type is P12 - - Schannel backend code behaves same as Secure Transport, it expects a P12 - certificate file or the name of a certificate already in the user's OS - key store. Also, both backends ignore CURLOPT_SSLKEY (tool: --key) - because they expect the private key to already be available from the - keystore or P12 certificate. - - Ref: https://github.com/curl/curl/discussions/8581#discussioncomment-2337260 - - Closes https://github.com/curl/curl/pull/8587 - -Daniel Stenberg (22 Mar 2022) -- lib1945: fix compiler warning 4706 on MSVC - - Follow-up from d1e4a677340c - - Closes #8623 - -- [Philip H brought this change] - - ci/event-based.yml: improve impacket install - - skip python3-pip - install impacket with library module - - Closes #8621 - -- test1459: disable for oldlibssh - - This test with libssh 0.9.3 works fine on github but fails on circleci. - Might as well disable this test for oldlibssh installations. - - Closes #8622 - -- test1135: sync with recent API updates - - This test verifies that the order of functions in public headers remain - the same but hasn't been updated to care for recently added header - files. The order is important for some few platforms - or VERSIONINFO - needs to updated. - - This fix also updates VERSIONINFO to be sure. - - Closes #8620 - -- curl_easy_nextheader.3: fix two typos - - Reported-by: Timothe Litt - Bug: https://curl.se/mail/lib-2022-03/0060.html - -- options: remove mistaken space before paren in prototype - -- cirrus: add --enable-headers-api for some windows builds - -- GHA: --enable-headers-api in all workflows - -- lib: make the headers API depend on --enable-headers-api - -- configure: add --enable-headers-api to enable the headers API - - Defaults to disabled while labeled EXPERIMENTAL. - - Make all the headers API tests require 'headers-api' to run. - -- test1671: verify -w '%{header_json} - -- test1670: verify -w %header{} - -- curl: add %{header_json} support in -w handling - - Outputs all response headers as a JSON object. - -- curl: add %header{name} support in -w handling - - Outputs the response header 'name' - -- header api: add curl_easy_header and curl_easy_nextheader - - Add test 1940 to 1946 to verify. - - Closes #8593 - -- test1459: remove the different exit code for oldlibssh - - When using libssh/0.9.3/openssl/zlib, we seem to be getting the "right" - error code. - - Closes #8490 - -- libssh: unstick SFTP transfers when done event-based - - Test 604 and 606 (at least). - - Closes #8490 - -- gha: move the event-based test over from Zuul - - Switched libssh2 to libssh - - Closes #8490 - -- RELEASE-NOTES: synced - -- http: return error on colon-less HTTP headers - - It's a protocol violation and accepting them leads to no good. - - Add test case 398 to verify - - Closes #8610 - -- test718: edited slightly to return better HTTP - - Since hyper is picky and won't play ball otherwise. - - Bug: https://github.com/hyperium/hyper/issues/2783 - Reported-by: Daniel Valenzuela - Closes #8614 - -- hyper: no h2c support - - Make tests require h2c feature present to run, and only set h2c if - nghttp2 is used in the build. Hyper does not support it. - - Remove those tests from DISABLED - - Fixes #8605 - Closes #8613 - -- configure: bump the copyright year range int the generated output - -- [Andreas Falkenhahn brought this change] - - BINDINGS.md: add Hollywood binding - - Closes #8609 - -- HISTORY: add some 2022 data - -- scripts/copyright.pl: ignore the new mlc_config.json file - -- [Philip H brought this change] - - mlc_config.json: add file to ignore known troublesome URLs - - This is the config file for the CI markdown link checker and lets us - filter URLs that are known to cause problems. Like - https://curl.zuul.vexxhost.dev/ for now. - - Closes #8597 - -- [Philip H brought this change] - - winbuild/README.md: fixup dead link - - Closes #8597 - -Jay Satiro (18 Mar 2022) -- rtsp: don't let CSeq error override earlier errors - - - When done, if an error has already occurred then don't check the - sequence numbers for mismatch. - - A sequence number may not have been received if an error occurred. - - Prior to this change a sequence mismatch error would override earlier - errors. For example, a server that returns nothing would cause error - CURLE_GOT_NOTHING in Curl_http_done which was then overridden by - CURLE_RTSP_CSEQ_ERROR in rtsp_done. - - Closes https://github.com/curl/curl/pull/8525 - -- lib: fix some misuse of curlx_convert_wchar_to_UTF8 - - curlx_convert_wchar_to_UTF8 must be freed by curlx_unicodefree, but - prior to this change some uses mistakenly called free. - - I've reviewed all other uses of curlx_convert_wchar_to_UTF8 and - curlx_convert_UTF8_to_wchar. - - Ref: https://github.com/curl/curl/commit/1d5d0ae - - Closes https://github.com/curl/curl/pull/8521 - -- mk-ca-bundle.pl: Use stricter logic to process the certificates - - .. and bump version to 1.29. - - This change makes the script properly ignore unknown blocks and - otherwise fail when Mozilla changes the certdata format in ways we - don't expect. Though this is less flexible behavior it makes it far less - likely that an invalid certificate can slip through. - - Prior to this change the state machine did not always properly reset, - and it was possible that a certificate marked as invalid could then - later be marked as valid when there was conflicting trust info or - an unknown block was erroneously processed as part of the certificate. - - Ref: https://github.com/curl/curl/pull/7801#pullrequestreview-768384569 - - Closes https://github.com/curl/curl/pull/8411 - -Marcel Raad (17 Mar 2022) -- test375: fix line endings on Windows - - Closes https://github.com/curl/curl/pull/8599 - -Daniel Stenberg (17 Mar 2022) -- http: reject header contents with nul bytes - - They are not allowed by the protocol and allowing them risk that curl - misbehaves somewhere where C functions are used but won't work on the - full contents. Further, they are not supported by hyper and they cause - problems for the new coming headers API work. - - Updated test 262 to verify and enabled it for hyper as well - - Closes #8601 - -- [Philip H brought this change] - - CI: Do not use buildconf. Instead, just use: autoreconf -fi - - Closes #8596 - -- RELEASE-NOTES: synced - -Jay Satiro (14 Mar 2022) -- libssh: Improve fix for missing SSH_S_ stat macros - - - If building libcurl against an old libssh version missing SSH_S_IFMT - and SSH_S_IFLNK then use the values from a supported version. - - Prior to this change if libssh did not define SSH_S_IFMT and SSH_S_IFLNK - then S_IFMT and S_IFLNK, respectively, were used instead. The problem - with that is the user's S_ stat macros don't have the same values across - platforms. For example Windows has values different from Linux. - - Follow-up to 7b0fd39. - - Ref: https://github.com/curl/curl/pull/8511#discussion_r815292391 - Ref: https://github.com/curl/curl/pull/8574 - - Closes https://github.com/curl/curl/pull/8588 - -Marc Hoersken (13 Mar 2022) -- tool and tests: force flush of all buffers at end of program - - On Windows data can be lost in buffers in case of abnormal program - termination, especially in process chains as seen due to flaky tests. - Therefore flushing all buffers manually should avoid this data loss. - - In the curl tool we play the safe game by only flushing write buffers, - but in the testsuite where we manage all buffers, we flush everything. - - This should drastically reduce Windows CI and testsuite flakiness. - - Reviewed-by: Daniel Stenberg - - Supersedes #7833 and #6064 - Closes #8516 - -Daniel Stenberg (12 Mar 2022) -- [Jan Venekamp brought this change] - - BearSSL: add CURLOPT_SSL_CTX_FUNCTION support - - Closes #8478 - -- [Jan Venekamp brought this change] - - BearSSL: add CURLOPT_SSL_CIPHER_LIST support - - Closes #8477 - -Dan Fandrich (11 Mar 2022) -- tool_cb_hdr: Turn the Location: into a terminal hyperlink - - This turns even relative URLs into clickable hyperlinks in a supported - terminal when --styled-output is enabled. Many terminals already turn - URLs into clickable links but there is not enough information in a - relative URL to do this automatically otherwise. - -- keepalive-time.d: It takes many probes to detect brokenness - -Daniel Stenberg (11 Mar 2022) -- [HexTheDragon brought this change] - - curl: add --no-clobber - - Does not overwrite output files if they already exist - - Closes #7708 - Co-authored-by: Daniel Stenberg - -- RELEASE-NOTES: synced - - also bump next pending version to become 7.83.0 - -- [Jean-Philippe Menil brought this change] - - openssl: check SSL_get_peer_cert_chain return value - - Signed-off-by: Jean-Philippe Menil - Closes #8579 - -- [Jay Satiro brought this change] - - mk-ca-bundle.vbs: delete this script in favor of mk-ca-bundle.pl - - mk-ca-bundle.vbs is a Windows-specific script for Mozilla certificate - extraction, similar to mk-ca-bundle.pl which runs on any platform. The - vbs version has not been maintained while the perl version has been - maintained with improvements and security fixes. I don't think it's - worth the work to maintain both versions. Windows users should be able - to use mk-ca-bundle.pl without any problems, as long as they have perl. - - Closes #8412 - -- CURLSHOPT_UNLOCKFUNC.3: fix the callback prototype - - Copy and paste error - - Reported-by: Francisco Olarte - Fixes #8573 - Closes #8577 - -- remove-on-error.d: typo - - Reported-by: Colin Leroy - Bug: https://github.com/curl/curl/pull/8503#pullrequestreview-906520081 - -- curl: add --remove-on-error - - If a transfer returns an error, using this option makes curl remove the - leftover downloded (partial) local file before exiting. - - Added test 376 to verify - - Closes #8503 - -- libssh: fix build with old libssh versions - - ... that don't have the SSH_S_* defines. Spotted on a machine using - libssh 0.7.3 - - Closes #8574 - -- hyper: fix status_line() return code - - Detected while working on #7708 that happened to trigger an error here - with a new test case. - - Closes #8572 - -- [Alejandro R. Sedeño brought this change] - - configure.ac: move -pthread CFLAGS setting back where it used to be - - The fix for #8276 proposed in #8374 set `CFLAGS="$CFLAGS -pthead"` - earlier than it used to be set, applying it in cases where it should not - have been applied. - - This moves the AIX XLC check to a new `case $host in` block inside of - the `if test "$USE_THREADS_POSIX" != "1"` block, where `CFLAGS="$CFLAGS - -pthead"` used to happen. - - Fixes #8541 - Closes #8542 - -- [Tatsuhiro Tsujikawa brought this change] - - ngtcp2: add client certificate authentication for OpenSSL - - Closes #8522 - -- tool_operate: fix a scan-build warning - - ... and avoid the temp storing of the return code in a diff variable. - - Closes #8565 - -- test375: verify that --proxy errors out if proxy is disabled in the build - - Closes #8565 - -- curl: error out when options need features not present in libcurl - - Trying to use a proxy when libcurl was built with proxy support disabled - should make curl error out properly. - - Remove knowledge of disabled features from the tool code and instead - make it properly respond to what libcurl returns. Update all tests to - properly require the necessary features to be present/absent so that the - test suite can still be run even with libcurl builds with disabled - features. - - Ref: https://curl.se/mail/archive-2022-03/0013.html - Closes #8565 - -- ngtcp2: disconnect the QUIC connection proper - - Reported-by: mehatzri on github - Reviewed-by: Tatsuhiro Tsujikawa - Fixes #8534 - closes #8569 - -Dan Fandrich (9 Mar 2022) -- test386: Fix an incorrect test markup tag - -Daniel Stenberg (9 Mar 2022) -- [Don J Olmstead brought this change] - - nonblock: restore setsockopt method to curlx_nonblock - - The implementation using setsockopt was removed when BeOS support was - purged. However this functionality wasn't BeOS specific, it is still - used by for example Orbis OS (Playstation 4/5 OS). - - Closes #8562 - -- openssl: fix CN check error code - - Due to a missing 'else' this returns error too easily. - - Regressed in: d15692ebb - - Reported-by: Kristoffer Gleditsch - Fixes #8559 - Closes #8560 - -- [Frank Meier brought this change] - - connect: make Curl_getconnectinfo work with conn cache from share handle - - Closes #8524 - -- [lwthiker brought this change] - - openssl: enable CURLOPT_SSL_EC_CURVES with BoringSSL - - The CURLOPT_SSL_EC_CURVES option (used by the '--curves' flag) in - libcurl was ignored when compiling with BoringSSL because - HAVE_SSL_CTX_SET_EC_CURVES was explicitly disabled if BoringSSL was - detected. However, this feature is supported in BoringSSL since - 5fd1807d. This commit enables it, and also reduces the required minimal - OpenSSL version to 1.0.2 as per OpenSSL's official documentation. - - Fixes #8553 - Closes #8556 - -- [Samuel Henrique brought this change] - - json.d: fix typo (overriden -> overridden) - - Closes #8557 - -- wolfssl: fix compiler error without IPv6 - - Reported-by: Joseph Chen - Fixes #8550 - Closes #8552 - -- RELEASE-NOTES: synced - - and bump pending version to 7.82.1 - -- [Paul Howarth brought this change] - - runtests: make 'oldlibssh' be before 0.9.4 - - The 'oldlibssh' feature indicates that the error code returned by libssh - for a broken known_hosts file should be 67 rather than 60 (test1459). - This feature was added as part of #8444 with 'oldlibssh' mapping to - libssh versions prior to 0.9.6, and then refined as part of #8511 to map - to versions prior to 0.9.5. - - In Red Hat Enterprise Linux 8.5 there is a patched version of libssh - version 0.9.4 (https://git.centos.org/rpms/libssh/blob/c8/f/SOURCES) in - which test1459 fails because it returns the "new" value rather than the - "old" one. It's plausible that one of the patches is responsible for - this rather than the underlying code but I don't think so. - - This change therefore drops the 'oldlibssh' version check to map to - libssh versions older than 0.9.4, which fixes builds on RHEL-8. - - Closes #8548 - -- ipv4/6.d: clarify that they are about using IP addresses - - ... they may still *resolve* other families, but not use those - addresses. - - Ref: #8530 - Closes #8543 - -- [r-a-sattarov brought this change] - - curl/system.h: update ifdef condition for MCST-LCC compiler - - in mcst-lcc compiler => 1.25 added a new macro definition to determine - compiler - - Closes #8546 - -Marc Hoersken (6 Mar 2022) -- CI: install Python package impacket to run SMB test 1451 - - Install Python package impacket in relevant CI workflows. - - Follow up to #7935 - Supersedes #7940 - Closes #8544 - -Daniel Stenberg (5 Mar 2022) -- [MichaÅ‚ Antoniak brought this change] - - connect: use TCP_KEEPALIVE only if TCP_KEEPIDLE is not defined - - Closes #8539 - -- docs/HYPER.md: updated to reflect current hyper build needs - -- GHA: build hyper with nightly rustc - - Closes #8545 - -Version 7.82.0 (5 Mar 2022) - -Daniel Stenberg (5 Mar 2022) -- RELEASE-NOTES: synced - - The 7.82.0 release - -- THANKS: updates from the 7.82.0 release notes - -- misc: update copyright year ranges - -Jay Satiro (5 Mar 2022) -- unit1610: init SSL library before calling SHA256 functions - - The SSL library must be initialized (via global initialization) because - libcurl's SHA256 functions may call SHA256 functions in the SSL library. - - Reported-by: Gisle Vanem - - Fixes https://github.com/curl/curl/issues/8538 - Closes https://github.com/curl/curl/pull/8540 - -- examples/curlx: support building with OpenSSL 1.1.0+ - - - Access members of X509_STORE_CTX in OpenSSL 1.1.0+ by using API - functions. - - The X509_STORE_CTX struct has been opaque since OpenSSL 1.1.0. - - Ref: https://curl.se/mail/lib-2022-03/0004.html - - Closes https://github.com/curl/curl/pull/8529 - -- h2h3: fix typo - - Bug: https://github.com/curl/curl/issues/8381#issuecomment-1055440241 - Reported-by: Michael Kaufmann - -- [Farzin brought this change] - - CURLOPT_XFERINFOFUNCTION.3: fix example struct assignment - - Closes https://github.com/curl/curl/pull/8519 - -Daniel Stenberg (26 Feb 2022) -- azure-pipelines: add a build on Windows with libssh - - Closes #8511 - -- runtests: make 'oldlibssh' be before 0.9.5 - - Closes #8511 - -- libssh: fix include files and defines use for Windows builds - - Reported-by: 梦终无痕 - Bug: https://curl.se/mail/lib-2022-02/0131.html - Closes #8511 - -- RELEASE-NOTES: synced - -- [illusory-dream brought this change] - - winbuild: add parameter WITH_SSH - - For building with libssh - Closes #8514 - -- configure: change output for cross-compiled alt-svc support - - It said 'no', while it actually is 'yes' - - Closes #8512 - -- gha: add a macOS CI job with libssh - - Closes #8513 - -- TODO: remove "Bring back libssh tests on Travis" - - The job was added to Circle CI in d8ddd0e7536 - -- TODO: remove "better persistency for HTTP/1.0" - - Let's not bother. - -- TODO: remove "Option to ignore private IP" - - ... as curl ignores the IP entirely by default these days. - -- TODO: remove "hardcode the "localhost" addresses" - - This is implmented since 1a0ebf6632f88 - -- TODO: 1.24 was a dupe of 1.1 - -- TODO: remove "Typesafe curl_easy_setopt()" - - I don't consider this a serious TODO item - -- KNOWN_BUGS: remove "Uploading HTTP/3 files gets interrupted" - - This works now - -- KNOWN_BUGS: remove "HTTP/3 multipart POST with quiche fails" - - It works now - -- quiche: remove two leftover debug infof() outputs - -- [Tatsuhiro Tsujikawa brought this change] - - ngtcp2: Reset dynbuf when it is fully drained - - Reported-by: vl409 on github - Fixes #7351 - Closes #8504 - -- [Stewart Gebbie brought this change] - - hostip: avoid unused parameter error in Curl_resolv_check - - When built without DNS-over-HTTP and without asynchronous resolvers, - neither the dns nor the data parameters are used. - - That is Curl_resolv_check appears to call - Curl_resolver_is_resolved(data, dns). But, - with CURL_DISABLE_DOH without CURLRES_ASYNCH, the call is actually - elided via a macro definition. - - This fix resolves the resultant: "unused parameter 'data'" error. - - Closes #8505 - -- http2: move two infof calls to debug-h2-only - - and remove a superflous one - - Ref: https://github.com/curl/curl/discussions/8498 - Closes #8502 - -- [Jean-Philippe Menil brought this change] - - quiche: fix upload for bigger content-length - - Signed-off-by: Jean-Philippe Menil - Closes #8421 - -Jay Satiro (23 Feb 2022) -- [Farzin brought this change] - - CURLOPT_PROGRESSFUNCTION.3: fix example struct assignment - - Closes https://github.com/curl/curl/pull/8500 - -Daniel Stenberg (22 Feb 2022) -- [Rob Boeckermann brought this change] - - OS400/README: clarify compilation steps - - Closes #8494 - -- [Rob Boeckermann brought this change] - - OS400: fix typos in rpg include file - - This resolves issues compiling rpg code that includes the curl header - file. - - Closes #8494 - -- [MichaÅ‚ Antoniak brought this change] - - vtls: fix socket check conditions - - fix condition to check the second socket during associate and - disassociate connection - - Closes #8493 - -- libssh2: don't typecast socket to int for libssh2_session_handshake - - Since libssh2_socket_t uses SOCKET on windows which can be larger than - int. - - Closes #8492 - -- RELEASE-NOTES: fix typo and make one desc shorter - -- RELEASE-NOTES: synced - -- CURLOPT_XFERINFOFUNCTION.3: fix typo in example - - Reported-by: coralw on github - Fixes #8487 - Closes #8488 - -- README: disable linkchecks for the sponsor links - - Closes #8489 - -Jay Satiro (21 Feb 2022) -- openssl: check if sessionid flag is enabled before retrieving session - - Ideally, Curl_ssl_getsessionid should not be called unless sessionid - caching is enabled. There is a debug assertion in the function to help - ensure that. Therefore, the pattern in all vtls is basically: - - if(primary.sessionid) {lock(); Curl_ssl_getsessionid(...); unlock();} - - There was one instance in openssl.c where sessionid was not checked - beforehand and this change fixes that. - - Prior to this change an assertion would occur in openssl debug builds - during connection stage if session caching was disabled. - - Reported-by: Jim Beveridge - - Fixes https://github.com/curl/curl/issues/8472 - Closes https://github.com/curl/curl/pull/8484 - -- multi: allow user callbacks to call curl_multi_assign - - Several years ago a change was made to block user callbacks from calling - back into the API when not supported (recursive calls). One of the calls - blocked was curl_multi_assign. Recently the blocking was extended to the - multi interface API, however curl_multi_assign may need to be called - from within those user callbacks (eg CURLMOPT_SOCKETFUNCTION). - - I can't think of any callback where it would be unsafe to call - curl_multi_assign so I removed the restriction entirely. - - Reported-by: Michael Wallner - - Ref: https://github.com/curl/curl/commit/b46cfbc - Ref: https://github.com/curl/curl/commit/340bb19 - - Fixes https://github.com/curl/curl/issues/8480 - Closes https://github.com/curl/curl/pull/8483 - -Daniel Stenberg (21 Feb 2022) -- [MichaÅ‚ Antoniak brought this change] - - ssl: reduce allocated space for ssl backend when FTP is disabled - - Add assert() for the backend pointer in many places - - Closes #8471 - -- [MichaÅ‚ Antoniak brought this change] - - checkprefix: remove strlen calls - - Closes #8481 - -Jay Satiro (20 Feb 2022) -- [1337vt brought this change] - - curl.h: fix typo - - Closes https://github.com/curl/curl/pull/8482 - -- [Jan Venekamp brought this change] - - sectransp: mark a 3DES cipher as weak - - - Change TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA strength to weak. - - All other 3DES ciphers are already marked as weak. - - Closes https://github.com/curl/curl/pull/8479 - -- [Jan Venekamp brought this change] - - bearssl: fix EXC_BAD_ACCESS on incomplete CA cert - - - Do not create trust anchor object for a CA certificate until after it - is processed. - - Prior to this change the object was created at state BR_PEM_BEGIN_OBJ - (certificate processing begin state). An incomplete certificate (for - example missing a newline at the end) never reaches BR_PEM_END_OBJ - (certificate processing end state) and therefore the trust anchor data - was not set in those objects, which caused EXC_BAD_ACCESS. - - Ref: https://github.com/curl/curl/pull/8106 - - Closes https://github.com/curl/curl/pull/8476 - -- [Jan Venekamp brought this change] - - bearssl: fix connect error on expired cert and no verify - - - When peer verification is disabled use the x509_decode engine instead - of the x509_minimal engine to parse and extract the public key from - the first cert of the chain. - - Prior to this change in such a case no key was extracted and that caused - CURLE_SSL_CONNECT_ERROR. The x509_minimal engine will stop parsing if - any validity check fails but the x509_decode won't. - - Ref: https://github.com/curl/curl/pull/8106 - - Closes https://github.com/curl/curl/pull/8475 - -- [Jan Venekamp brought this change] - - bearssl: fix session resumption (session id) - - Prior to this change br_ssl_client_reset was mistakenly called with - resume_session param set to 0, which disabled session resumption. - - Ref: https://github.com/curl/curl/pull/8106 - - Closes https://github.com/curl/curl/pull/8474 - -Daniel Stenberg (18 Feb 2022) -- [MichaÅ‚ Antoniak brought this change] - - openssl: fix build for version < 1.1.0 - - Closes #8470 - -- [Joel Depooter brought this change] - - schannel: move the algIds array out of schannel.h - - This array is only used by the SCHANNEL_CRED struct in the - schannel_acquire_credential_handle function. It can therefore be kept as - a local variable. This is a minor update to - bbb71507b7bab52002f9b1e0880bed6a32834511. - - This change also updates the NUM_CIPHERS value to accurately count the - number of ciphers options listed in schannel.c, which is 47 instead of - 45. It is unlikely that anyone tries to set all 47 values, but if they - had tried, the last two would not have been set. - - Closes #8469 - -- [Alejandro R. Sedeño brought this change] - - configure.ac: use user-specified gssapi dir when using pkg-config - - Using the system pkg-config path in the face of a user-specified - library path is asking to link the wrong library. - - Reported-by: Michael Kaufmann - Fixes #8289 - Closes #8456 - -- [Kevin Adler brought this change] - - os400: Add link to QADRT devkit to README.OS400 - - Closes #8455 - -- [Kevin Adler brought this change] - - os400: Add function wrapper for system command - - The wrapper will exit if the system command failed instead of blindly - continuing on. - - In addition, only copy docs which exist, since now the copy failure will - cause the build to stop. - - Closes #8455 - -- [Kevin Adler brought this change] - - os400: Default build to target current release - - V6R1M0 is not available as a target release since IBM i 7.2. To keep - from having to keep this up to date in git, default to the current - release. Users can configure this to whatever release they want to - actually build for. - - Closes #8455 - -- docs/INTERNALS.md: clean up, refer to the book - - The explanatory parts are now in the everything curl book (which can - also use images etc). This document now refers to that resource and only - leaves listings of supported versions of libs, tools and operating - systems. See https://everything.curl.dev/internals - - Closes #8467 - -Marcel Raad (17 Feb 2022) -- des: fix compile break for OpenSSL without DES - - When `USE_OPENSSL` was defined but OpenSSL had no DES support and a - different crypto library was used for that, `Curl_des_set_odd_parity` - was called but not defined. This could for example happen on Windows - and macOS when using OpenSSL v3 with deprecated features disabled. - - Use the same condition for the function definition as used at the - caller side, but leaving out the OpenSSL part to avoid including - OpenSSL headers. - - Closes https://github.com/curl/curl/pull/8459 - -Daniel Stenberg (17 Feb 2022) -- RELEASE-NOTES: synced - -- docs/DEPRECATE: remove NPN support in August 2022 - - Closes #8458 - -- ftp: provide error message for control bytes in path - - Closes #8460 - -- http: fix "unused parameter ‘conn’" warning - - Follow-up from 7d600ad1c395 - - Spotted on appveyor - - Closes #8465 - -Jay Satiro (17 Feb 2022) -- [Alejandro R. Sedeño brought this change] - - sha256: Fix minimum OpenSSL version - - - Change the minimum OpenSSL version for using their SHA256 - implementation from 0.9.7 to 0.9.8. - - EVP_sha256() does not appear in the OpenSSL source before 0.9.7h, and - does not get built by default until 0.9.8, so trying to use it for all - 0.9.7 is wrong, and before 0.9.8 is unreliable. - - Closes https://github.com/curl/curl/pull/8464 - -Daniel Stenberg (16 Feb 2022) -- KNOWN_BUGS: remove "slow connect to localhost on Windows" - - localhost is not resolved anymore since 1a0ebf6632f88 - -- KNOWN_BUGS: remove "HTTP/3 download is 5x times slower than HTTP/2" - - It's not actually a bug. More like room for improvement. - -- KNOWN_BUGS: remove "HTTP/3 download with quiche halts after a while" - - Follow-up to 96f85a0fef694 - -- KNOWN_BUGS: remove "pulseUI vpn" as a problem - - We haven't heard about this for a long time and rumours have it they - might have fixed it. - -- urldata: remove conn->bits.user_passwd - - The authentication status should be told by the transfer and not the - connection. - - Reported-by: John H. Ayad - Fixes #8449 - Closes #8451 - -- [Kevin Adler brought this change] - - gskit: Convert to using Curl_poll - - As mentioned in 32766cb, gskit was the last user of Curl_select which is - now gone. Convert to using Curl_poll to allow build to work on IBM i. - - Closes #8454 - -- [Kevin Adler brought this change] - - gskit: Fix initialization of Curl_ssl_gskit struct - - In c30bf22, Curl_ssl_getsock was factored out in to a member of - struct Curl_ssl but the gskit initialization was not updated to reflect - this new member. - - Closes #8454 - -- [Kevin Adler brought this change] - - gskit: Fix errors from Curl_strerror refactor - - 2f0bb864c1 replaced sterror with Curl_strerror, but the strerror buffer - shadows the set_buffer "buffer" parameter. To keep consistency with the - other functions that use Curl_strerror, rename the parameter. - - In addition, strerror.h is needed for the definition of STRERROR_LEN. - - Closes #8454 - -Marcel Raad (15 Feb 2022) -- ntlm: remove unused feature defines - - They're not used anymore and always supported. - - Closes https://github.com/curl/curl/pull/8453 - -Daniel Stenberg (15 Feb 2022) -- [Kantanat Wannapaka brought this change] - - README.md: fix link and layout - - replace tags and tags - - Closes #8448 - -- KNOWN_BUGS: fix typo "libpsl" - -Jay Satiro (14 Feb 2022) -- h2h3: fix compiler warning due to function prototype mismatch - - - Add missing const qualifier in Curl_pseudo_headers declaration. - -Daniel Stenberg (14 Feb 2022) -- [Stefan Eissing brought this change] - - urlapi: handle "redirects" smarter - - - avoid one malloc when setting a new url via curl_url_set() - and CURLUPART_URL. - - extract common pattern into a new static function. - - Closes #8450 - -- cijobs: pick up circleci configure lines better - -- circleci: add a job using wolfSSH - - Build only, no tests. - - Closes #8445 - -- scripts/ciconfig.pl: show used options not available - -- circleci: add a job using libssh - - Closes #8444 - -- runtests: set 'oldlibssh' for libssh versions before 0.9.6 - - ... and make test 1459 check for the different return code then. - - Closes #8444 - -Jay Satiro (13 Feb 2022) -- Makefile.am: Generate VS 2022 projects - - Follow-up to f13d4d0 which added VS 2022 project support. - - Ref: https://github.com/curl/curl/pull/8438 - -- [Daniel Stenberg brought this change] - - projects: remove support for MSVC before VC10 (Visual Studio 2010) - - - Remove Visual Studio project files for VC6, VC7, VC7.1, VC8 and VC9. - - Those versions are too old to be maintained any longer. - - Closes https://github.com/curl/curl/pull/8442 - -- [Stav Nir brought this change] - - projects: add support for Visual Studio 17 (2022) - - Closes https://github.com/curl/curl/pull/8438 - -Daniel Stenberg (13 Feb 2022) -- RELEASE-NOTES: synced - -- connect: follow-up fix the copyright year - -- [MichaÅ‚ Antoniak brought this change] - - misc: remove unused data when IPv6 is not supported - - Closes #8430 - -- scripts/ciconfig: show CI job config info - - Closes #8446 - -- quiche: handle stream reset - - A stream reset now causes a CURLE_PARTIAL_FILE error. I'm not convinced - this is the right action nor the right error code. - - Reported-by: Lucas Pardue - Fixes #8437 - Closes #8440 - -- mime: use a define instead of the magic number 24 - - MIME_BOUNDARY_DASHES is now the number of leading dashes in the - generated boundary string. - - Closes #8441 - -- [Henrik Holst brought this change] - - hostcheck: reduce strlen calls on chained certificates - - Closes #8428 - -- [Patrick Monnerat brought this change] - - mime: some more strlen() call removals. - - Closes #8423 - -- scripts/cijobs.pl: detect zuul cmake jobs better - -- url: exclude zonefrom_url when no ipv6 is available - - Closes #8439 - -- if2ip: make Curl_ipv6_scope a blank macro when IPv6-disabled - - Closes #8439 - -- [Henrik Holst brought this change] - - mprintf: remove strlen calls on empty strings in dprintf_formatf - - Turns out that in dprintf_formatf we did a strlen on empty strings, a - bit strange is how common this actually is, 24 alone when doing a simple - GET from https://curl.se - - Closes #8427 - -- wolfssl: return CURLE_AGAIN for the SSL_ERROR_NONE case - - Closes #8431 - -- wolfssl: when SSL_read() returns zero, check the error - - Returning zero indicates end of connection, so if there's no data read - but the connection is alive, it needs to return -1 with CURLE_AGAIN. - - Closes #8431 - -- quiche: after leaving h3_recving state, poll again - - This could otherwise easily leave libcurl "hanging" after the entire - transfer is done but without noticing the end-of-transfer signal. - - Assisted-by: Lucas Pardue - Closes #8436 - -- quiche: when *recv_body() returns data, drain it before polling again - - Assisted-by: Lucas Pardue - - Closes #8429 - -- [gaoxingwang on github brought this change] - - configure: fix '--enable-code-coverage' typo - - Fixes #8425 - Closes #8426 - -- lib/h2h3: #ifdef on ENABLE_QUIC, not the wrong define - - Otherwise the build fails when H3 is enabled but the build doesn't - include nghttp2. - - Closes #8424 - -- hostcheck: pass in pattern length too, to avoid a strlen call - - Removes one strlen() call per SAN name in a cert-check. - - Closes #8418 - -- [Henrik Holst brought this change] - - misc: remove strlen for Curl_checkheaders + Curl_checkProxyheaders - - Closes #8409 - -- configure: requires --with-nss-deprecated to build with NSS - - Add deprecation plans to docs/DEPRECATE.md - - Closes #8395 - -- mqtt: free 'sendleftovers' in disconnect - - Fix a memory-leak - - Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43646 - Closes #8415 - -- [Patrick Monnerat brought this change] - - openldap: pass string length arguments to client_write() - - This uses the new STRCONST() macro and saves 2 strlen() calls on short - string constants per LDIF output line. - - Closes #8404 - -- [Henrik Holst brought this change] - - misc: reduce strlen() calls with Curl_dyn_add() - - Use STRCONST() to switch from Curl_dyn_add() to Curl_dyn_addn() for - string literals. - - Closes #8398 - -- http2: fix the array copy to nghttp2_nv - - Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=44517 - Follow-up to 9f985a11e794 - Closes #8414 - -- RELEASE-NOTES: synced - -- scripts/cijobs.pl: output data about all currect CI jobs - - This script parses the config files for all the CI services currently in - use and output the information in a uniform way. The idea is that the - output from this script should be possible to massage into informational - tables or graphs to help us visualize what they are all testing and NOT - testing. - - Closes #8408 - -- maketgz: return error if 'make dist' fails - - To better detect this problem in CI jobs - - Reported-by: Marcel Raad - Bug: https://curl.se/mail/lib-2022-02/0070.html - Closes #8402 - -- h2h3: pass correct argument types to infof() - - Detected by Coverity. CID 1497993 - - Closes #8401 - -- lib/Makefile: remove config-tpf.h from the dist - - Follow-up from da15443dddea2bfb. Missed before because the 'distcheck' - CI job was not working as intended. - - Reported-by: Marcel Raad - Bug: https://curl.se/mail/lib-2022-02/0070.html - Closes #8403 - -- configure: remove support for "embedded ares" - - In March 2010 (commit 4259d2df7dd) we removed the embedded 'ares' - directory from the curl source tree but we have since supported - especially detecting and using that build directory. The time has come - to remove that kludge and ask users to specify the c-ares dir correctly - with --enable-ares. - - Closes #8397 - -- [Sebastian Sterk brought this change] - - github/workflows/mbedtls: fix indent & remove unnecessary line breaks - - Closes #8399 - -- CI: move the NSS job from zuul to GHA - - Closes #8396 - -- tests/unit/Makefile.am: add NSS_LIBS to build with NSS fine - - Closes #8396 - -Marcel Raad (7 Feb 2022) -- curl-openssl: fix SRP check for OpenSSL 3.0 - - When OpenSSL 3.0 is built with `--api=3.0` and `no-deprecated`, the SRP - functions exist in the library, but are disabled for user code. Check - if they are actually usable instead of only if they exist. Also, check - for the functions actually required for TLS-SRP. - - TLS-SRP support is still enabled if OpenSSL is configured with just - `--api=3.0` or with `--api=1.1.1 no-deprecated`. - - Closes https://github.com/curl/curl/pull/8394 - -Daniel Stenberg (7 Feb 2022) -- [Henrik Holst brought this change] - - http: make Curl_compareheader() take string length arguments too - - Also add STRCONST, a macro that returns a string literal and it's length - for functions that take "string,len" - - Removes unnecesary calls to strlen(). - - Closes #8391 - -- vquic/vquic.h: removed the unused H3 psuedo defines - -- ngtcp2: use Curl_pseudo_headers - -- quiche: use Curl_pseudo_headers - -- http2: use Curl_pseudo_headers - -- h2h3: added Curl_pseudo_headers() - - For use with both http2 and http3 requests. - -- ngtcp2/quiche: make :scheme possible to set - -- http2: allow CURLOPT_HTTPHEADER change ":scheme" - - The only h2 psuedo header that wasn't previously possible to change by a - user. This change also makes it impossible to send a HTTP/1 header that - starts with a colon, which I don't think anyone does anyway. - - The other pseudo headers are possible to change indirectly by doing the - rightly crafted request. - - Reported-by: siddharthchhabrap on github - Fixes #8381 - Closes #8393 - -- h2/h3: provide and refer to pseudo headers as defines - - ... and do sizeof() on the defines to use constants better. - - Closes #8389 - -- [MichaÅ‚ Antoniak brought this change] - - smb: passing a socket for writing and reading data instead of FIRSTSOCKET - - Closes #8383 - -- x509asn1: toggle off functions not needed for diff tls backends - - ... and clean the header file from private defines/structs (move to C - file) and unused function prototypes. - - Closes #8386 - -- lib: move hostcheck and x509sn1 sources to vtls/ - - ... since they are used strictly by TLS code. - - Closes #8386 - -Marcel Raad (4 Feb 2022) -- version_win32: fix warning for `CURL_WINDOWS_APP` - - The build version is not supported by the UWP code. - - Closes https://github.com/curl/curl/pull/8385 - -Daniel Stenberg (4 Feb 2022) -- tests/disable-scan.pl: properly detect multiple symbols per line - - Test 1165 would fail on some systems because it didn't detect - CURL_DISABLE_* symbols that were used to the right of another one on the - same line! The script would only detect and extract the first one. - - Reported-by: Marcel Raad - Fixes #8384 - Closes #8388 - -Jay Satiro (4 Feb 2022) -- config.d: Clarify _curlrc filename is still valid on Windows - - Recent changes added support for filename .curlrc on Windows, and - when it's not found curl falls back on the original Windows filename - _curlrc. _curlrc was removed from the doc, however it is still valid. - - Closes https://github.com/curl/curl/pull/8382 - -Daniel Stenberg (4 Feb 2022) -- lib: remove support for CURL_DOES_CONVERSIONS - - TPF was the only user and support for that was dropped. - - Closes #8378 - -- TPF: drop support - - There has been no TPF related changes done since September 2010 (commit - 7e1a45e224e57) and since this is a platform that is relatively different - than many others (== needs attention), I draw the conclusion that this - build is broken since a long time. - - Closes #8378 - -- scripts/delta: check the file delta for current branch - - ... also polish the output style a little bit - -Jay Satiro (3 Feb 2022) -- [Fabian Keil brought this change] - - runtests.pl: tolerate test directories without Makefile.inc - - Silences the following warnings when using a Makefile.inc-free - TESTDIR using the "-o" argument: - - readline() on closed filehandle D at ./runtests.pl line 592. - Use of uninitialized value $disttests in pattern match (m//) at - ./runtests.pl line 3602. - - Closes https://github.com/curl/curl/pull/8379 - -Daniel Stenberg (3 Feb 2022) -- [Henrik Holst brought this change] - - setopt: do bounds-check before strdup - - Curl_setstropt() allocated memory for the string before checking if the - string was within bounds. The bounds check should be done first. - - Closes #8377 - -- [MichaÅ‚ Antoniak brought this change] - - mbedtls: enable use of mbedtls without filesystem functions support - - Closes #8376 - -- [Bernhard Walle brought this change] - - configure: support specification of a nghttp2 library path - - This enables using --with-nghttp2= on systems without pkg-config. - - Closes #8375 - -- scripts/release-notes.pl: remove leftover debug output - -- RELEASE-NOTES: synced - -- scripts/release-notes.pl: fix number extraction for full URLs - -- [Leah Neukirchen brought this change] - - scripts/completion.pl: improve zsh completion - - - Detect all spellings of , etc as well as . - - Only complete directories for . - - Complete URLs for . - - Complete --request and --ftp-method. - - Closes #8363 - -- [Davide Cassioli brought this change] - - configure: use correct CFLAGS for threaded resolver with xlC on AIX - - Fixes #8276 - Closes #8374 - -- mailmap: Henrik Holst - -Jay Satiro (2 Feb 2022) -- build: fix ngtcp2 crypto library detection - - - Change library link check for ngtcp2_crypto_{gnutls,openssl} to - to use function ngtcp2_crypto_recv_client_initial_cb instead of - ngtcp2_crypto_ctx_initial. - - The latter function is no longer external since two days ago in - ngtcp2/ngtcp2@533451f. curl HTTP/3 CI builds have been failing since - then because they would not link to the ngtcp2 crypto library. - - Ref: https://github.com/ngtcp2/ngtcp2/pull/356 - - Closes https://github.com/curl/curl/pull/8372 - -- [Henrik Holst brought this change] - - urlapi: remove an unnecessary call to strlen - - - Use strcpy instead of strlen+memcpy to copy the url path. - - Ref: https://curl.se/mail/lib-2022-02/0006.html - - Closes https://github.com/curl/curl/pull/8370 - -Daniel Stenberg (1 Feb 2022) -- scripts/copyright.pl: fix for handling removed files better - -- vxworks: drop support - - No changes or fixes in vxworks related code since 2009 leads me to - believe that this doesn't work anymore. - - Closes #8362 - -- [Henrik Holst brought this change] - - base64: remove an unnecessary call to strlen - - Closes #8369 - -- tool_getparam: initial --json support - - Adds these test cases: - - 383 - simple single command line option - 384 - reading it from stdin - 385 - getting two --json options on command line - 386 - --next works after --json - - Closes #8314 - -- [Bjarni Ingi Gislason brought this change] - - curl_getdate.3: remove pointless .PP line - - mandoc: WARNING: skipping paragraph macro: PP empty - - Reported-by: Samuel Henrique - Closes #8365 - -- [Sebastian Sterk brought this change] - - multi: grammar fix in comment - - After 'must', the verb is used without 'to'. Correct: "must" or "have - to" - - Closes #8368 - -- openldap: fix compiler warning when built without SSL support - - openldap.c:841:52: error: unused parameter ‘data’ [-Werror=unused-parameter] - - Closes #8367 - -- [Samuel Henrique brought this change] - - CURLSHOPT_LOCKFUNC.3: fix typo "relased" -> "released" - - Found when packaging 7.81.0 for Debian. - - Closes #8364 - -- netware: remove support - - There are no current users and no Netware related changes done in the - code for over 13 years is a clear sign this is abandoned. - - Closes #8358 - -- CI: move two jobs from Zuul to Circle CI - - - openssl-no-verbose - - openssl-no-proxy - - Closes #8359 - -- cirlceci: also run a c-ares job on arm with debug enabled - - Closes #8357 - -- ci: move the OpenSSL + c-ares job from Zuul to Circle CI - - Closes #8357 - -- mailmap: Jan-Piet Mens - -- [luminixinc on github brought this change] - - multi: remember connection_id before returning connection to pool - - Fix a bug that does not require a new CVE as discussed on hackerone.com. - Previously `connection_id` was accessed after returning connection to - the shared pool. - - Bug: https://hackerone.com/reports/1463013 - Closes #8355 - -Jay Satiro (31 Jan 2022) -- write-out.d: Fix num_headers formatting - -- [Jan-Piet Mens brought this change] - - docs: capitalize the name 'Netscape' - - Closes https://github.com/curl/curl/pull/8354 - -Daniel Stenberg (30 Jan 2022) -- RELEASE-NOTES: synced - -- [Antoine Pietri brought this change] - - docs: grammar proofread, typo fixes - - (Partially automated) proofread of most of the documentation, leading to - various typo fixes. - - Closes #8353 - -- urldata: CONN_IS_PROXIED replaces bits.close when proxy can be disabled - - To remove run-time checks for such builds. - - Closes #8350 - -- setopt: fix the TLSAUTH #ifdefs for proxy-disabled builds - - Closes #8350 - -- conncache: make conncache_add_bundle return the pointer - - Simplifies the logic a little and avoids a ternary operator. - - Ref: #8346 - Closes #8349 - -- mailmap: neutric on github - -Jay Satiro (30 Jan 2022) -- [neutric on github brought this change] - - docs/TheArtOfHttpScripting: fix example POST URL - - Closes https://github.com/curl/curl/pull/8352 - -Daniel Stenberg (28 Jan 2022) -- nss: handshake callback during shutdown has no conn->bundle - - The callback gets called because of the call to PR_Recv() done to - attempt to avoid RST on the TCP connection. The conn->bundle pointer is - already cleared at this point so avoid dereferencing it. - - Reported-by: Eric Musser - Fixes #8341 - Closes #8342 - -- [MichaÅ‚ Antoniak brought this change] - - mbedtls: remove #include - - mbedtls/certs.h file contains only certificates example (all definitions - is beginning by mbedtls_test_*). None of them is used so we can avoid - include the file. - - Closes #8343 - -- [MichaÅ‚ Antoniak brought this change] - - mbedtls: enable use of mbedtls without CRL support - - Closes #8344 - -- [Bernhard Walle brought this change] - - configure: set CURL_LIBRARY_PATH for nghttp2 - - To execute the test program, we might need the library path so that the - lib is found at runtime. - - Closes #8340 - -Jay Satiro (28 Jan 2022) -- schannel: restore debug message in schannel_connect_step2 - - This is a follow-up to recent commit 2218c3a which removed the debug - message to avoid an unused variable warning. The message has been - reworked to avoid the warning. - - Ref: https://github.com/curl/curl/pull/8320#issuecomment-1022957904 - - Closes https://github.com/curl/curl/pull/8336 - -- test3021: disable all msys2 path transformation - - - Disable all MSYS2 path transformation in test3021 and test3022. - - Prior to this change path transformation in those tests was disabled - only for arguments that start with forward slashes. However arguments - that are in base64 contain forward slashes at any position and caused - unwanted translations. - - == Info: Denied establishing ssh session: mismatch sha256 fingerprint. - Remote +/EYG2YDzDGm6yiwepEMSuExgRRMoTi8Di1UN3kixZw= is not equal to - +C:/msys64/EYG2YDzDGm6yiwepEMSuExgRRMoTi8Di1UN3kixZw - - In the above example an argument containing a base64 sha256 fingerprint - was passed to curl after MSYS2 translated +/ into +C:/msys64/, and then - the fingerprint didn't match what was expected. - - Ref: https://www.msys2.org/wiki/Porting/ - - Fixes https://github.com/curl/curl/issues/8084 - Closes https://github.com/curl/curl/pull/8325 - -Daniel Stenberg (27 Jan 2022) -- CI: move scan-build job from Zuul to Azure Pipelines - - Closes #8338 - -Marcel Raad (27 Jan 2022) -- openssl: fix `ctx_option_t` for OpenSSL v3+ - - The options have been changed to `uint64_t` in - https://github.com/openssl/openssl/commit/56bd17830f2d5855b533d923d4e0649d3ed61d11. - - Closes https://github.com/curl/curl/pull/8331 - -Daniel Stenberg (27 Jan 2022) -- CI: move 'distcheck' job from zuul to azure pipelines - - Assisted-by: Kushal Das - - Closes #8334 - -- vtls: pass on the right SNI name - - The TLS backends convert the host name to SNI name and need to use that. - This involves cutting off any trailing dot and lowercasing. - - Co-authored-by: Jay Satiro - Closes #8320 - -- url: revert the removal of trailing dot from host name - - Reverts 5de8d84098db1bd24e (May 2014, shipped in 7.37.0) and the - follow-up changes done afterward. - - Keep the dot in names for everything except the SNI to make curl behave - more similar to current browsers. This means 'name' and 'name.' send the - same SNI for different 'Host:' headers. - - Updated test 1322 accordingly - - Fixes #8290 - Reported-by: Charles Cazabon - Closes #8320 - -- [neutric on github brought this change] - - docs/TheArtOfHttpScripting: fix capitalization - - Closes #8333 - -- tests/memanalyze.pl: also count and show "total allocations" - - This is the total number of bytes allocated, increasing for new - allocations and never reduced when freed. The existing "Maximum - allocated" is the high water mark. - - Closes #8330 - -- mailmap: spellfix githuh => github - -- RELEASE-NOTES: synced - -- hostcheck: fixed to not touch used input strings - - Avoids the need to clone the strings before check, thus avoiding - mallocs, which for cases where there are many SAN names in a cert could - end up numerous. - - Closes #8321 - -- ngtcp2: adapt to changed end of headers callback proto - - Closes #8322 - -- [Xiaoke Wang brought this change] - - openssl: check SSL_get_ex_data to prevent potential NULL dereference - - Closes #8268 - -Jay Satiro (23 Jan 2022) -- md5: check md5_init_func return value - - Prior to this change the md5_init_func (my_md5_init) return value was - ignored. - - Closes https://github.com/curl/curl/pull/8319 - -- md5: refactor for standard compliance - - - Wrap OpenSSL / wolfSSL MD5 functions instead of taking their function - addresses during static initialization. - - Depending on how curl was built the old way may have used a dllimport - function address during static initialization, which is not standard - compliant, resulting in Visual Studio warning C4232 (nonstandard - extension). Instead the function pointers now point to the wrappers - which call the MD5 functions. - - This change only affects OpenSSL and wolfSSL because calls to other SSL - libraries' md5 functions were already wrapped. Also sha256.c already - does this for all SSL libraries. - - Ref: https://github.com/curl/curl/pull/8298 - - Closes https://github.com/curl/curl/pull/8318 - -Daniel Stenberg (21 Jan 2022) -- [Lucas Pardue brought this change] - - docs: update IETF links to use datatracker - - The tools.ietf.org domain has been deprecated a while now, with the - links being redirected to datatracker.ietf.org. - - Rather than make people eat that redirect time, this change switches the - URL to a more canonical source. - - Closes #8317 - -- [Harry Sarson brought this change] - - CI: test building wolfssl with --enable-opensslextra - - Closes #8315 - -- [Harry Sarson brought this change] - - misc: allow curl to build with wolfssl --enable-opensslextra - - put all #include of openssl files behind wolfssl ifdefs so that we can - use the wolfssl/ prefixed include paths. Without these curl only builds - when wolfssl is built with enable-all. - - Fixes #8292 - Closes #8315 - -- [Lucas Pardue brought this change] - - quiche: change qlog file extension to `.sqlog` - - quiche has just switched it's qlog serialization format to JSON-SEQ by - default . The spec says this SHOULD use `.sqlog` extension. - - I believe ngtcp2 also supports JSON-SEQ by default as of - https://github.com/ngtcp2/ngtcp2/commit/9baf06fc3f352a1d062b6953ae1de22cae30639d - - Let's update curl so that tools know what format we are using! - - Closes #8316 - -Jay Satiro (21 Jan 2022) -- projects: Fix Visual Studio wolfSSL configurations - - - Change build-wolfssl.bat to disable SSLv3, enable TLSv1.3, enable - wolfSSL_DES_ecb_encrypt (needed by NTLM) and enable alt cert chains. - - - Disable warning C4214 'bit field types other than int'. - - - Add include directory wolfssl\wolfssl. - - wolfSSL offers OpenSSL API compatibility that libcurl uses, and some - recent change in libcurl included an include file for wolfSSL like - openssl/foo.h, which has a path like wolfssl\wolfssl\openssl\foo.h. - - The include directory issue was reported in #8292 but it's currently - unclear whether this type of change is needed for other build systems. - - Bug: https://github.com/curl/curl/issues/8292 - Reported-by: Harry Sarson - - Closes https://github.com/curl/curl/pull/8298 - -Daniel Stenberg (21 Jan 2022) -- openssl: return error if TLS 1.3 is requested when not supported - - Previously curl would just silently ignore it if the necessary defines - are not present at build-time. - - Reported-by: Stefan Eissing - Fixes #8309 - Closes #8310 - -- TODO: Passing NOTIFY option to CURLOPT_MAIL_RCPT - - Closes #8232 - -- [Philip H brought this change] - - workflows/wolfssl: install impacket - - needed Python Package for SMB tests - - Closes #8307 - -- url: make Curl_disconnect return void - - 1. The function would only ever return CURLE_OK anyway - 2. Only one caller actually used the return code - 3. Most callers did (void)Curl_disconnect() - - Closes #8303 - -- docs: document HTTP/2 not insisting on TLS 1.2 - - Both for --http2 and CURLOPT_HTTP_VERSION. - - Reported-by: jhoyla on github - Fixes #8235 - Closes #8300 - -- cmdline-opts/gen.pl: fix option matching to improve references - - Previously it could mistakenly match partial names when there are - options that start with the same prefix, leading to the wrong references - used. - - Closes #8299 - -- TODO: Less memory massaging with Schannel - -- [Patrick Monnerat brought this change] - - runtests.pl: disable debuginfod - - Valgrind and gdb implement this feature: as this highly slows down tests, - disable it. - - Closes #8291 - -- RELEASE-NOTES: synced - -- CURLMOPT_TIMERFUNCTION/DATA.3: fix the examples - - ... to not call libcurl recursively back. - - Closes #8286 - -- multi: set in_callback for multi interface callbacks - - This makes most libcurl functions return error if called from within a - callback using the same multi handle. For example timer or socket - callbacks calling curl_multi_socket_action. - - Reported-by: updatede on github - Fixes #8282 - Closes #8286 - -- docs/HISTORY.md: mention alt-svc and HSTS - -- misc: remove the final watcom references - - Follow-up to bbf8cae44dedc495e6 - - We removed support for the watcom builds files back in September - 2020. This removes all remaining watcom references and ifdefs. - - Closes #8287 - -- misc: remove BeOS code and references - - There has not been a mention of this OS in any commit since December - 2004 (58f4af7973e3d2). The OS is also long gone. - - Closes #8288 - -- tool_getparam: DNS options that need c-ares now fail without it - - Just silently accepting the options and then not having any effect is - not good. - - Ref: #8283 - Closes #8285 - -- curl: remove "separators" (when using globbed URLs) - - Unless muted (with -s) When doing globbing, curl would output mime-like - separators between the separate transfers. This is not documented - anywhere, surprises users and clobbers the output. Gone now. - - Updated test 18 and 1235 - - Reported-by: jonny112 on github - Bug: https://github.com/curl/curl/discussions/8257 - Closes #8278 - -Jay Satiro (15 Jan 2022) -- [Niels Martignène brought this change] - - mbedtls: fix CURLOPT_SSLCERT_BLOB (again) - - - Increase the buffer length passed to mbedtls_x509_crt_parse to account - for the null byte appended to the temporary blob. - - Follow-up to 867ad1c which uses a null terminated copy of the - certificate blob, because mbedtls_x509_crt_parse requires PEM data - to be null terminated. - - Ref: https://github.com/curl/curl/commit/867ad1c#r63439893 - Ref: https://github.com/curl/curl/pull/8146 - - Closes https://github.com/curl/curl/pull/8260 - -Daniel Stenberg (15 Jan 2022) -- [Alessandro Ghedini brought this change] - - quiche: verify the server cert on connect - - Similarly to c148f0f551f9bea0e3d0, make quiche correctly acknowledge - `CURLOPT_SSL_VERIFYPEER` and `CURLOPT_SSL_VERIFYHOST`. - - Fixes #8173 - Closes #8275 - -- [Ikko Ashimine brought this change] - - checksrc: fix typo in comment - - enfore -> enforce - - Closes #8281 - -- curl-openssl: remove the OpenSSL headers and library versions check - - It is more work to maintain that check than the (any?) benefit it - brings. - - Fixes #8279 - Reported-by: Satadru Pramanik - Closes #8280 - -- mqtt: free any leftover when done - - Oss-fuzz found an issue when the "sendleftovers" pointer could leak memory. - Fix this by always freeing it (if still assigned) in the done function. - - Bug: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=43515 - Closes #8274 - -- formdata: avoid size_t => long typecast overflows - - Typically a problem for platforms with 32 bit long and 64 bit size_t - - Reported-by: Fabian Yamaguchi - Bug: https://hackerone.com/reports/1444539 - Closes #8272 - -- RELEASE-NOTES: synced - - bump next release to become 7.82.0 - -Marcel Raad (13 Jan 2022) -- build: enable -Warith-conversion - - This makes the behavior consistent between GCC 10 and earlier versions. - - Closes https://github.com/curl/curl/pull/8271 - -- build: fix -Wenum-conversion handling - - Don't enable that warning when warnings are disabled. - Also add it to CMake. - - Closes https://github.com/curl/curl/pull/8271 - -- appveyor: use VS 2017 image for the autotools builds - - The newer images don't have all required MSYS2 packages. - - Fixes https://github.com/curl/curl/issues/8248 - Closes https://github.com/curl/curl/pull/8265 - -- appveyor: update images from VS 2019 to 2022 - - Closes https://github.com/curl/curl/pull/8265 - -Daniel Stenberg (12 Jan 2022) -- [MichaÅ‚ Antoniak brought this change] - - mbedtls: return CURLcode result instead of a mbedtls error code - - ... when a certificate fails to be loaded from a blob - - Closes #8266 - -- curl_multi_socket.3: remove callback and typical usage descriptions - - 1. The callback is better described in the option for setting it. Having - it in a single place reduces the risk that one of them is wrong. - - 2. The "typical usage" is wrong since the functions described in this - man page are both deprecated so they cannot be used in any "typical" way - anymore. - - Closes #8262 - -- curl-functions.m4: revert DYLD_LIBRARY_PATH tricks in CURL_RUN_IFELSE - - Mostly reverts ba0657c343f, but now instead just run the plain macro on - darwin. The approach as used on other platforms is simply not necessary - on macOS. - - Fixes #8229 - Reported-by: Ryan Schmidt - Closes #8247 - -- [Patrick Monnerat brought this change] - - openldap: implement SASL authentication - - As credentials can be quite different depending on the mechanism used, - there are no default mechanisms for LDAP and simple bind with a DN is - then used. - - The caller has to provide mechanism(s) using CURLOPT_LOGIN_OPTIONS to - enable SASL authentication and disable simple bind. - - Closes #8152 - -Jay Satiro (10 Jan 2022) -- [Cameron Will brought this change] - - CURLOPT_RESOLVE.3: change example port to 443 - - 83cc966 changed documentation from using http to https. However, - CURLOPT_RESOLVE being set to port 80 in the documentation means that it - isn't valid for the new URL. Update to 443. - - Closes https://github.com/curl/curl/pull/8258 - -Daniel Stenberg (10 Jan 2022) -- [Fabian Keil brought this change] - - test374: gif data without new line at the end - - Closes #8239 - -- [Fabian Keil brought this change] - - runtests.pl: support the nonewline attribute for the data part - - Added to FILEFORMAT - - Closes #8239 - -- [Patrick Monnerat brought this change] - - curl tool: erase some more sensitive command line arguments - - As the ps command may reveal sensitive command line info, obfuscate - options --tlsuser, --tlspasswd, --proxy-tlsuser, --proxy-tlspassword and - --oauth2-bearer arguments. - - Reported-by: Stephen Boost - - Closes #7964 - -- mesalink: remove support - - Mesalink has ceased development. We can no longer encourage use of it. - It seems to be continued under the name TabbySSL, but no attempts have - (yet) been to make curl support it. - - Fixes #8188 - Closes #8191 - -- ldap: return CURLE_URL_MALFORMAT for bad URL - - For consistency, use the same return code for URL malformats, - independently of what scheme that is used. Previously this would return - CURLE_LDAP_INVALID_URL, but starting now that error cannot be returned. - - Closes #8170 - -- docs/cmdline-opts: add "mutexed" options for more http versions - - Update four http version man page sections. - - Closes #8254 - -- [Stephen M. Coakley brought this change] - - rustls: add CURLOPT_CAINFO_BLOB support - - Add support for `CURLOPT_CAINFO_BLOB` `CURLOPT_PROXY_CAINFO_BLOB` to the - rustls TLS backend. Multiple certificates in a single PEM string are - supported just like OpenSSL does with this option. - - This is compatible at least with rustls-ffi 0.8+ which is our new - minimum version anyway. - - I was able to build and run this on Windows, pulling trusted certs from - the system and then add them to rustls by setting - `CURLOPT_CAINFO_BLOB`. Handy! - - Closes #8255 - -- scripts/copyright.pl: ignore missing files - -- RELEASE-NOTES: synced - -- data/DISABLED: disable test 313 for wolfssl builds - - It was previously disabled only in the CI jobs yaml - - Closes #8252 - -- runtests: make 'wolfssl' a testable feature - - Closes #8252 - -- GHA: install stunnel in the medbtls + wolfssl CI jobs - - Closes #8252 - -- CI: move the rustls CI job to GHA from Zuul - - Closes #8251 - -- DISABLE: disable a dozen tests in the rustls build - - Disables tests that don't yet work with the rustls backend. - - Fixes #8004 - Closes #8250 - -- runtests: make 'rustls' a testable feature - -- remote-header-name.d: clarify - - - it strips off the path from the server provided name - - it saves in current directory or --output-dir - - Ref: https://curl.se/mail/archive-2022-01/0032.html - Closes #8249 - -- url: given a user in the URL, find pwd for that user in netrc - - Add test 380 and 381 to verify, edited test 133 - - Reported-by: Manfred Schwarb - Fixes #8241 - Closes #8243 - -- [Niels Martignène brought this change] - - mbedtls: Fix ssl_init error with mbedTLS 3.1.0+ - - Since mbedTLS 3.1.0, mbedtls_ssl_setup() fails if the provided - config struct is not valid. - - mbedtls_ssl_config_defaults() needs to be called before the config - struct is passed to mbedtls_ssl_setup(). - - Closes #8238 - -- [Filip Lundgren brought this change] - - cmake: fix iOS CMake project generation error - - Closes #8244 - -- ngtcp2: fix declaration of ‘result’ shadows a previous local - - Follow-up to 8fbd6feddfa587cfd3 - - Closes #8245 - -- openssl.h: avoid including OpenSSL headers here - - ... by instead using the struct version of the typedef'ed pointer. To - fix build errors when both Schannel and OpenSSL are enabled. - - Fixes #8240 - Reported-by: Jan Ehrhardt - Closes #8246 - -- curl_url_set.3: mention when CURLU_ALLOW_SPACE was added - -- tool_findfile: free mem properly - - Follow-up to 764e4f066d5 - - Closes #8242 - -- tool_findfile: check ~/.config/curlrc too - - ... after the initial checks for .curlrc and if XDG_CONFIG_HOME is not - set, use $HOME and $CURL_HOME to check if ~/.config/curlrc is present. - - Add test 436 to verify - - Reported-by: Sandro Jaeckel - Fixes #8208 - Closes #8213 - -- runtests: allow client/file to specify multiple directories - - ... and make sure to mkdir them all - -- scripts/copyright.pl: support many provided file names on the cmdline - -- [Fabian Keil brought this change] - - tests/FILEFORMAT.md: fix typo - -- [Fabian Keil brought this change] - - Add test373: multiple chunks with binary zeros - -- [Fabian Keil brought this change] - - Add test372: binary zero in data element - -- [Fabian Keil brought this change] - - tests/server/getpart.c: properly deal with binary data containing NUL bytes - -- [Fabian Keil brought this change] - - runtests.pl: properly print the test if it contains binary zeros - -- mailmap: Xiaoke Wang - -- openssl: copyright year update - - Follow-up to 30aea2b1ede - -- scripts/copyright.pl: hush unless -v (for verbose) is used - -- [Xiaoke Wang brought this change] - - openssl: check the return value of BIO_new_mem_buf() - - Closes #8233 - -- examples/multi-app.c: call curl_multi_remove_handle as well - - Fixes #8234 - Reported-by: Melroy van den Berg - Closes #8236 - -- COPYING: bump copyright year range - -- RELEASE-NOTES: synced - - and bump curlver after release - -- docs: fix mandoc -T lint formatting complaints - - Closes #8228 - -- next.d. remove .fi/.nf as they are handled by gen.pl - - Closes #8228 - -- gen.pl: terminate "example" sections better - - If the example (section that is prefixed with spaces) ends the - description gen.pl would previously miss to output the terminating .fi - - Closes #8228 - -- [Satadru Pramanik brought this change] - - curl-functions.m4: fix LIBRARY_PATH adjustment to avoid eval - - $$ usage in a m4 file introduces the PID in linux. - Instead, just duplicate previous working code with a case switch. - - Fixes #8229 - Closes #8230 - -Version 7.81.0 (5 Jan 2022) - -Daniel Stenberg (5 Jan 2022) -- RELEASE-NOTES: synced - - curl 7.81.0 release - -- THANKS: add names from 7.81.0 release - -- curl_multi_init.3: fix the copyright year range - -- test719-721: require "proxy" feature present to run - - Bug: https://github.com/curl/curl/pull/8223#issuecomment-1005188696 - Reported-by: Marc Hörsken - - Closes #8226 - -- test719: require ipv6 support to run - - Follow-up to effd2bd7ba2a5fd244 - Reported-by: Marc Hörsken - Bug: https://github.com/curl/curl/pull/8217#issuecomment-1004681145 - - Closes #8223 - -- test719-721: verify SOCKS details - - Using the new verify/socks details - -- runtests: add verify/socks check - - If used, this data is compared with the data in log/socksd-request.log - which the socksd server logs. - - Added to FILEFORMAT.md - -- server/socksd: log atyp + address in a separate log - - To allow the test suite to verify that the right data arrived - -- socks5: use appropriate ATYP for numerical IP address host names - - When not resolving the address locallly (known as socks5h). - - Add test 719 and 720 to verify. - - Reported-by: Peter Piekarski - Fixes #8216 - Closes #8217 - -Jay Satiro (3 Jan 2022) -- curl_multi_init.3: fix EXAMPLE formatting - -Daniel Stenberg (3 Jan 2022) -- RELEASE-NOTES: synced - -- libtest: avoid "assignment within conditional expression" - - In lib530, lib540 and lib582 - - Closes #8218 - -- ftp: disable warning 4706 in MSVC - - Follow-up to 21248e052d - - Disabling "assignment within conditional expression" for MSVC needs to - be done before the function starts, for it to take effect. - - Closes #8218 - -- tool_operate: warn if too many output arguments were found - - More output instructions than URLs is likely a user error. - - Add test case 371 to verify - - Closes #8210 - -- .github/workflows/mbedtls.yml: bump to mbedtls 3.1.0 - - Closes #8215 - -- zuul: remove the mbedtls jobs - - Now running as github workflows - - Closes #8215 - -- github/workflows: add mbedtls and mbedtls-clang - - Closes #8215 - -- [Valentin Richter brought this change] - - mbedtls: fix private member designations for v3.1.0 - - "As a last resort, you can access the field foo of a structure bar by - writing bar.MBEDTLS_PRIVATE(foo). Note that you do so at your own risk, - since such code is likely to break in a future minor version of Mbed - TLS." - - https://github.com/ARMmbed/mbedtls/blob/f2d1199edc5834df4297f247f213e614f7782d1d/docs/3.0-migration-guide.md - - That future minor version is v3.1.0. I set the >= to == for the version - checks because v3.1.0 is a release, and I am not sure when the private - designation was reverted after v3.0.0. - - Closes #8214 - -- [Valentin Richter brought this change] - - cmake: prevent dev warning due to mismatched arg - - -- curl version=[7.81.0-DEV] - CMake Warning (dev) at /usr/share/cmake-3.22.1/Modules/FindPackageHandleStandardArgs.cmake:438 (message): - The package name passed to `find_package_handle_standard_args` (MBEDTLS) - does not match the name of the calling package (MbedTLS). This can lead to - problems in calling code that expects `find_package` result variables - (e.g., `_FOUND`) to follow a certain pattern. - Call Stack (most recent call first): - deps/curl/CMake/FindMbedTLS.cmake:31 (find_package_handle_standard_args) - deps/curl/CMakeLists.txt:473 (find_package) - This warning is for project developers. Use -Wno-dev to suppress it. - - Closes #8207 - -- urlapi: if possible, shorten given numerical IPv6 addresses - - Extended test 1560 to verify - - Closes #8206 - -- [MichaÅ‚ Antoniak brought this change] - - url: reduce ssl backend count for CURL_DISABLE_PROXY builds - - Closes #8212 - -- KNOWN_BUGS: "Trying local ports fails on Windows" - - Reported-by: gclinch on github - Closes #8112 - -- misc: update copyright year range - -- zuul: remove the wolfssl even more - - Follow-up to 1914465cf180d32b3d - -- examples/multi-single.c: remove WAITMS() - - As it isn't used. - - Reported-by: Melroy van den Berg - Fixes #8200 - Closes #8201 - -- gtls: add gnutls include for the session type - - Follow-up to 8fbd6feddfa5 to make it build more universally - -- m4/curl-compilers: tell clang -Wno-pointer-bool-conversion - - To hush compiler warnings we don't care for: error: address of function - 'X' will always evaluate to 'true' - - Fixes #8197 - Closes #8198 - -- http_proxy: don't close the socket (too early) - - ... and double-check in the OpenSSL shutdown that the socket is actually - still there before it is used. - - Fixes #8193 - Closes #8195 - - Reported-by: Leszek Kubik - -- ngtcp2: verify the server certificate for the gnutls case - - Closes #8178 - -- ngtcp2: verify the server cert on connect (quictls) - - Make ngtcp2+quictls correctly acknowledge `CURLOPT_SSL_VERIFYPEER` and - `CURLOPT_SSL_VERIFYHOST`. - - The name check now uses a function from lib/vtls/openssl.c which will - need attention for when TLS is not done by OpenSSL or is disabled while - QUIC is enabled. - - Possibly the servercert() function in openssl.c should be adjusted to be - able to use for both regular TLS and QUIC. - - Ref: #8173 - Closes #8178 - -- zuul: remove the wolfssl build - -- github workflow: add wolfssl - - Closes #8196 - -- [Nicolas Sterchele brought this change] - - zuul: fix quiche build pointing to wrong Cargo - - Fixes #8184 - Closes #8189 - -- checksrc: detect more kinds of NULL comparisons we avoid - - Co-authored-by: Jay Satiro - Closes #8180 - -- RELEASE-NOTES: synced - -- mesalink: remove the BACKEND define kludge - - Closes #8183 - -- schannel: remove the BACKEND define kludge - - Closes #8182 - -- gtls: check return code for gnutls_alpn_set_protocols - - Closes #8181 - -- [Stefan Huber brought this change] - - README: label the link to the support document - - Closes #8185 diff --git a/Engine/lib/curl/CMake/CMakeConfigurableFile.in b/Engine/lib/curl/CMake/CMakeConfigurableFile.in deleted file mode 100644 index b93e7539a..000000000 --- a/Engine/lib/curl/CMake/CMakeConfigurableFile.in +++ /dev/null @@ -1,24 +0,0 @@ -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### -@CMAKE_CONFIGURABLE_FILE_CONTENT@ diff --git a/Engine/lib/curl/CMake/CurlSymbolHiding.cmake b/Engine/lib/curl/CMake/CurlSymbolHiding.cmake deleted file mode 100644 index 75215a122..000000000 --- a/Engine/lib/curl/CMake/CurlSymbolHiding.cmake +++ /dev/null @@ -1,78 +0,0 @@ -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### -include(CheckCSourceCompiles) - -option(CURL_HIDDEN_SYMBOLS "Set to ON to hide libcurl internal symbols (=hide all symbols that aren't officially external)." ON) -mark_as_advanced(CURL_HIDDEN_SYMBOLS) - -if(CURL_HIDDEN_SYMBOLS) - set(SUPPORTS_SYMBOL_HIDING FALSE) - - if(CMAKE_C_COMPILER_ID MATCHES "Clang" AND NOT MSVC) - set(SUPPORTS_SYMBOL_HIDING TRUE) - set(_SYMBOL_EXTERN "__attribute__ ((__visibility__ (\"default\")))") - set(_CFLAG_SYMBOLS_HIDE "-fvisibility=hidden") - elseif(CMAKE_COMPILER_IS_GNUCC) - if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 3.4) - # note: this is considered buggy prior to 4.0 but the autotools don't care, so let's ignore that fact - set(SUPPORTS_SYMBOL_HIDING TRUE) - set(_SYMBOL_EXTERN "__attribute__ ((__visibility__ (\"default\")))") - set(_CFLAG_SYMBOLS_HIDE "-fvisibility=hidden") - endif() - elseif(CMAKE_C_COMPILER_ID MATCHES "SunPro" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 8.0) - set(SUPPORTS_SYMBOL_HIDING TRUE) - set(_SYMBOL_EXTERN "__global") - set(_CFLAG_SYMBOLS_HIDE "-xldscope=hidden") - elseif(CMAKE_C_COMPILER_ID MATCHES "Intel" AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 9.0) - # note: this should probably just check for version 9.1.045 but I'm not 100% sure - # so let's do it the same way autotools do. - set(SUPPORTS_SYMBOL_HIDING TRUE) - set(_SYMBOL_EXTERN "__attribute__ ((__visibility__ (\"default\")))") - set(_CFLAG_SYMBOLS_HIDE "-fvisibility=hidden") - check_c_source_compiles("#include - int main (void) { printf(\"icc fvisibility bug test\"); return 0; }" _no_bug) - if(NOT _no_bug) - set(SUPPORTS_SYMBOL_HIDING FALSE) - set(_SYMBOL_EXTERN "") - set(_CFLAG_SYMBOLS_HIDE "") - endif() - elseif(MSVC) - set(SUPPORTS_SYMBOL_HIDING TRUE) - endif() - - set(HIDES_CURL_PRIVATE_SYMBOLS ${SUPPORTS_SYMBOL_HIDING}) -elseif(MSVC) - if(NOT CMAKE_VERSION VERSION_LESS 3.7) - set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE) #present since 3.4.3 but broken - set(HIDES_CURL_PRIVATE_SYMBOLS FALSE) - else() - message(WARNING "Hiding private symbols regardless CURL_HIDDEN_SYMBOLS being disabled.") - set(HIDES_CURL_PRIVATE_SYMBOLS TRUE) - endif() -else() - set(HIDES_CURL_PRIVATE_SYMBOLS FALSE) -endif() - -set(CURL_CFLAG_SYMBOLS_HIDE ${_CFLAG_SYMBOLS_HIDE}) -set(CURL_EXTERN_SYMBOL ${_SYMBOL_EXTERN}) diff --git a/Engine/lib/curl/CMake/CurlTests.c b/Engine/lib/curl/CMake/CurlTests.c deleted file mode 100644 index e55e3a629..000000000 --- a/Engine/lib/curl/CMake/CurlTests.c +++ /dev/null @@ -1,565 +0,0 @@ -/*************************************************************************** - * _ _ ____ _ - * Project ___| | | | _ \| | - * / __| | | | |_) | | - * | (__| |_| | _ <| |___ - * \___|\___/|_| \_\_____| - * - * Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. - * - * This software is licensed as described in the file COPYING, which - * you should have received as part of this distribution. The terms - * are also available at https://curl.se/docs/copyright.html. - * - * You may opt to use, copy, modify, merge, publish, distribute and/or sell - * copies of the Software, and permit persons to whom the Software is - * furnished to do so, under the terms of the COPYING file. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - * SPDX-License-Identifier: curl - * - ***************************************************************************/ -#ifdef TIME_WITH_SYS_TIME -/* Time with sys/time test */ - -#include -#include -#include - -int -main () -{ -if ((struct tm *) 0) -return 0; - ; - return 0; -} - -#endif - -#ifdef HAVE_FCNTL_O_NONBLOCK - -/* headers for FCNTL_O_NONBLOCK test */ -#include -#include -#include -/* */ -#if defined(sun) || defined(__sun__) || \ - defined(__SUNPRO_C) || defined(__SUNPRO_CC) -# if defined(__SVR4) || defined(__srv4__) -# define PLATFORM_SOLARIS -# else -# define PLATFORM_SUNOS4 -# endif -#endif -#if (defined(_AIX) || defined(__xlC__)) && !defined(_AIX41) -# define PLATFORM_AIX_V3 -#endif -/* */ -#if defined(PLATFORM_SUNOS4) || defined(PLATFORM_AIX_V3) -#error "O_NONBLOCK does not work on this platform" -#endif - -int -main () -{ - /* O_NONBLOCK source test */ - int flags = 0; - if(0 != fcntl(0, F_SETFL, flags | O_NONBLOCK)) - return 1; - return 0; -} -#endif - -/* tests for gethostbyname_r */ -#if defined(HAVE_GETHOSTBYNAME_R_3_REENTRANT) || \ - defined(HAVE_GETHOSTBYNAME_R_5_REENTRANT) || \ - defined(HAVE_GETHOSTBYNAME_R_6_REENTRANT) -# define _REENTRANT - /* no idea whether _REENTRANT is always set, just invent a new flag */ -# define TEST_GETHOSTBYFOO_REENTRANT -#endif -#if defined(HAVE_GETHOSTBYNAME_R_3) || \ - defined(HAVE_GETHOSTBYNAME_R_5) || \ - defined(HAVE_GETHOSTBYNAME_R_6) || \ - defined(TEST_GETHOSTBYFOO_REENTRANT) -#include -#include -int main(void) -{ - char *address = "example.com"; - int length = 0; - int type = 0; - struct hostent h; - int rc = 0; -#if defined(HAVE_GETHOSTBYNAME_R_3) || \ - defined(HAVE_GETHOSTBYNAME_R_3_REENTRANT) - struct hostent_data hdata; -#elif defined(HAVE_GETHOSTBYNAME_R_5) || \ - defined(HAVE_GETHOSTBYNAME_R_5_REENTRANT) || \ - defined(HAVE_GETHOSTBYNAME_R_6) || \ - defined(HAVE_GETHOSTBYNAME_R_6_REENTRANT) - char buffer[8192]; - int h_errnop; - struct hostent *hp; -#endif - -#if defined(HAVE_GETHOSTBYNAME_R_3) || \ - defined(HAVE_GETHOSTBYNAME_R_3_REENTRANT) - rc = gethostbyname_r(address, &h, &hdata); -#elif defined(HAVE_GETHOSTBYNAME_R_5) || \ - defined(HAVE_GETHOSTBYNAME_R_5_REENTRANT) - rc = gethostbyname_r(address, &h, buffer, 8192, &h_errnop); - (void)hp; /* not used for test */ -#elif defined(HAVE_GETHOSTBYNAME_R_6) || \ - defined(HAVE_GETHOSTBYNAME_R_6_REENTRANT) - rc = gethostbyname_r(address, &h, buffer, 8192, &hp, &h_errnop); -#endif - - (void)length; - (void)type; - (void)rc; - return 0; -} -#endif - -#ifdef HAVE_SOCKLEN_T -#ifdef _WIN32 -#include -#else -#include -#include -#endif -int -main () -{ -if ((socklen_t *) 0) - return 0; -if (sizeof (socklen_t)) - return 0; - ; - return 0; -} -#endif -#ifdef HAVE_IN_ADDR_T -#include -#include -#include - -int -main () -{ -if ((in_addr_t *) 0) - return 0; -if (sizeof (in_addr_t)) - return 0; - ; - return 0; -} -#endif - -#ifdef HAVE_BOOL_T -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_STDBOOL_H -#include -#endif -int -main () -{ -if (sizeof (bool *) ) - return 0; - ; - return 0; -} -#endif - -#ifdef STDC_HEADERS -#include -#include -#include -#include -int main() { return 0; } -#endif -#ifdef HAVE_GETADDRINFO -#include -#include -#include - -int main(void) { - struct addrinfo hints, *ai; - int error; - - memset(&hints, 0, sizeof(hints)); - hints.ai_family = AF_UNSPEC; - hints.ai_socktype = SOCK_STREAM; -#ifndef getaddrinfo - (void)getaddrinfo; -#endif - error = getaddrinfo("127.0.0.1", "8080", &hints, &ai); - if (error) { - return 1; - } - return 0; -} -#endif -#ifdef HAVE_FILE_OFFSET_BITS -#ifdef _FILE_OFFSET_BITS -#undef _FILE_OFFSET_BITS -#endif -#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]; -int main () { ; return 0; } -#endif -#ifdef HAVE_IOCTLSOCKET -/* includes start */ -#ifdef HAVE_WINDOWS_H -# ifndef WIN32_LEAN_AND_MEAN -# define WIN32_LEAN_AND_MEAN -# endif -# include -# ifdef HAVE_WINSOCK2_H -# include -# endif -#endif - -int -main () -{ - -/* ioctlsocket source code */ - int socket; - unsigned long flags = ioctlsocket(socket, FIONBIO, &flags); - - ; - return 0; -} - -#endif -#ifdef HAVE_IOCTLSOCKET_CAMEL -/* includes start */ -#ifdef HAVE_WINDOWS_H -# ifndef WIN32_LEAN_AND_MEAN -# define WIN32_LEAN_AND_MEAN -# endif -# include -# ifdef HAVE_WINSOCK2_H -# include -# endif -#endif - -int -main () -{ - -/* IoctlSocket source code */ - if(0 != IoctlSocket(0, 0, 0)) - return 1; - ; - return 0; -} -#endif -#ifdef HAVE_IOCTLSOCKET_CAMEL_FIONBIO -/* includes start */ -#ifdef HAVE_WINDOWS_H -# ifndef WIN32_LEAN_AND_MEAN -# define WIN32_LEAN_AND_MEAN -# endif -# include -# ifdef HAVE_WINSOCK2_H -# include -# endif -#endif - -int -main () -{ - -/* IoctlSocket source code */ - long flags = 0; - if(0 != IoctlSocket(0, FIONBIO, &flags)) - return 1; - ; - return 0; -} -#endif -#ifdef HAVE_IOCTLSOCKET_FIONBIO -/* includes start */ -#ifdef HAVE_WINDOWS_H -# ifndef WIN32_LEAN_AND_MEAN -# define WIN32_LEAN_AND_MEAN -# endif -# include -# ifdef HAVE_WINSOCK2_H -# include -# endif -#endif - -int -main () -{ - - int flags = 0; - if(0 != ioctlsocket(0, FIONBIO, &flags)) - return 1; - - ; - return 0; -} -#endif -#ifdef HAVE_IOCTL_FIONBIO -/* headers for FIONBIO test */ -/* includes start */ -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif -#ifdef HAVE_SYS_SOCKET_H -# include -#endif -#ifdef HAVE_SYS_IOCTL_H -# include -#endif -#ifdef HAVE_STROPTS_H -# include -#endif - -int -main () -{ - - int flags = 0; - if(0 != ioctl(0, FIONBIO, &flags)) - return 1; - - ; - return 0; -} -#endif -#ifdef HAVE_IOCTL_SIOCGIFADDR -/* headers for FIONBIO test */ -/* includes start */ -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif -#ifdef HAVE_SYS_SOCKET_H -# include -#endif -#ifdef HAVE_SYS_IOCTL_H -# include -#endif -#ifdef HAVE_STROPTS_H -# include -#endif -#include - -int -main () -{ - struct ifreq ifr; - if(0 != ioctl(0, SIOCGIFADDR, &ifr)) - return 1; - - ; - return 0; -} -#endif -#ifdef HAVE_SETSOCKOPT_SO_NONBLOCK -/* includes start */ -#ifdef HAVE_WINDOWS_H -# ifndef WIN32_LEAN_AND_MEAN -# define WIN32_LEAN_AND_MEAN -# endif -# include -# ifdef HAVE_WINSOCK2_H -# include -# endif -#endif -/* includes start */ -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_SOCKET_H -# include -#endif -/* includes end */ - -int -main () -{ - if(0 != setsockopt(0, SOL_SOCKET, SO_NONBLOCK, 0, 0)) - return 1; - ; - return 0; -} -#endif -#ifdef HAVE_GLIBC_STRERROR_R -#include -#include - -void check(char c) {} - -int -main () { - char buffer[1024]; - /* This will not compile if strerror_r does not return a char* */ - check(strerror_r(EACCES, buffer, sizeof(buffer))[0]); - return 0; -} -#endif -#ifdef HAVE_POSIX_STRERROR_R -#include -#include - -/* float, because a pointer can't be implicitly cast to float */ -void check(float f) {} - -int -main () { - char buffer[1024]; - /* This will not compile if strerror_r does not return an int */ - check(strerror_r(EACCES, buffer, sizeof(buffer))); - return 0; -} -#endif -#ifdef HAVE_FSETXATTR_6 -#include /* header from libc, not from libattr */ -int -main() { - fsetxattr(0, 0, 0, 0, 0, 0); - return 0; -} -#endif -#ifdef HAVE_FSETXATTR_5 -#include /* header from libc, not from libattr */ -int -main() { - fsetxattr(0, 0, 0, 0, 0); - return 0; -} -#endif -#ifdef HAVE_CLOCK_GETTIME_MONOTONIC -#include -int -main() { - struct timespec ts = {0, 0}; - clock_gettime(CLOCK_MONOTONIC, &ts); - return 0; -} -#endif -#ifdef HAVE_BUILTIN_AVAILABLE -int -main() { - if(__builtin_available(macOS 10.12, *)) {} - return 0; -} -#endif -#ifdef HAVE_VARIADIC_MACROS_C99 -#define c99_vmacro3(first, ...) fun3(first, __VA_ARGS__) -#define c99_vmacro2(first, ...) fun2(first, __VA_ARGS__) - -int fun3(int arg1, int arg2, int arg3); -int fun2(int arg1, int arg2); - -int fun3(int arg1, int arg2, int arg3) { - return arg1 + arg2 + arg3; -} -int fun2(int arg1, int arg2) { - return arg1 + arg2; -} - -int -main() { - int res3 = c99_vmacro3(1, 2, 3); - int res2 = c99_vmacro2(1, 2); - (void)res3; - (void)res2; - return 0; -} -#endif -#ifdef HAVE_VARIADIC_MACROS_GCC -#define gcc_vmacro3(first, args...) fun3(first, args) -#define gcc_vmacro2(first, args...) fun2(first, args) - -int fun3(int arg1, int arg2, int arg3); -int fun2(int arg1, int arg2); - -int fun3(int arg1, int arg2, int arg3) { - return arg1 + arg2 + arg3; -} -int fun2(int arg1, int arg2) { - return arg1 + arg2; -} - -int -main() { - int res3 = gcc_vmacro3(1, 2, 3); - int res2 = gcc_vmacro2(1, 2); - (void)res3; - (void)res2; - return 0; -} -#endif -#ifdef HAVE_ATOMIC -/* includes start */ -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif -#ifdef HAVE_STDATOMIC_H -# include -#endif -/* includes end */ - -int -main() { - _Atomic int i = 1; - i = 0; // Force an atomic-write operation. - return i; -} -#endif -#ifdef HAVE_WIN32_WINNT -/* includes start */ -#ifdef WIN32 -/* - * Don't include unneeded stuff in Windows headers to avoid compiler - * warnings and macro clashes. - * Make sure to define this macro before including any Windows headers. - */ -# ifndef WIN32_LEAN_AND_MEAN -# define WIN32_LEAN_AND_MEAN -# endif -# ifndef NOGDI -# define NOGDI -# endif -# include "../lib/setup-win32.h" -#endif -/* includes end */ - -#define enquote(x) #x -#define expand(x) enquote(x) -#pragma message("_WIN32_WINNT=" expand(_WIN32_WINNT)) - -int -main() { - return 0; -} -#endif diff --git a/Engine/lib/curl/CMake/FindBearSSL.cmake b/Engine/lib/curl/CMake/FindBearSSL.cmake deleted file mode 100644 index 88d5e87ad..000000000 --- a/Engine/lib/curl/CMake/FindBearSSL.cmake +++ /dev/null @@ -1,32 +0,0 @@ -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### -find_path(BEARSSL_INCLUDE_DIRS bearssl.h) - -find_library(BEARSSL_LIBRARY bearssl) - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(BEARSSL DEFAULT_MSG - BEARSSL_INCLUDE_DIRS BEARSSL_LIBRARY) - -mark_as_advanced(BEARSSL_INCLUDE_DIRS BEARSSL_LIBRARY) diff --git a/Engine/lib/curl/CMake/FindBrotli.cmake b/Engine/lib/curl/CMake/FindBrotli.cmake deleted file mode 100644 index 833e1811a..000000000 --- a/Engine/lib/curl/CMake/FindBrotli.cmake +++ /dev/null @@ -1,43 +0,0 @@ -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### -include(FindPackageHandleStandardArgs) - -find_path(BROTLI_INCLUDE_DIR "brotli/decode.h") - -find_library(BROTLICOMMON_LIBRARY NAMES brotlicommon) -find_library(BROTLIDEC_LIBRARY NAMES brotlidec) - -find_package_handle_standard_args(BROTLI - FOUND_VAR - BROTLI_FOUND - REQUIRED_VARS - BROTLIDEC_LIBRARY - BROTLICOMMON_LIBRARY - BROTLI_INCLUDE_DIR - FAIL_MESSAGE - "Could NOT find BROTLI" -) - -set(BROTLI_INCLUDE_DIRS ${BROTLI_INCLUDE_DIR}) -set(BROTLI_LIBRARIES ${BROTLICOMMON_LIBRARY} ${BROTLIDEC_LIBRARY}) diff --git a/Engine/lib/curl/CMake/FindCARES.cmake b/Engine/lib/curl/CMake/FindCARES.cmake deleted file mode 100644 index 99cf31d91..000000000 --- a/Engine/lib/curl/CMake/FindCARES.cmake +++ /dev/null @@ -1,47 +0,0 @@ -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### -# - Find c-ares -# Find the c-ares includes and library -# This module defines -# CARES_INCLUDE_DIR, where to find ares.h, etc. -# CARES_LIBRARIES, the libraries needed to use c-ares. -# CARES_FOUND, If false, do not try to use c-ares. -# also defined, but not for general use are -# CARES_LIBRARY, where to find the c-ares library. - -find_path(CARES_INCLUDE_DIR ares.h) - -set(CARES_NAMES ${CARES_NAMES} cares) -find_library(CARES_LIBRARY - NAMES ${CARES_NAMES} - ) - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(CARES - REQUIRED_VARS CARES_LIBRARY CARES_INCLUDE_DIR) - -mark_as_advanced( - CARES_LIBRARY - CARES_INCLUDE_DIR - ) diff --git a/Engine/lib/curl/CMake/FindGSS.cmake b/Engine/lib/curl/CMake/FindGSS.cmake deleted file mode 100644 index ec2bd57ba..000000000 --- a/Engine/lib/curl/CMake/FindGSS.cmake +++ /dev/null @@ -1,312 +0,0 @@ -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### -# - Try to find the GSS Kerberos library -# Once done this will define -# -# GSS_ROOT_DIR - Set this variable to the root installation of GSS -# -# Read-Only variables: -# GSS_FOUND - system has the Heimdal library -# GSS_FLAVOUR - "MIT" or "Heimdal" if anything found. -# GSS_INCLUDE_DIR - the Heimdal include directory -# GSS_LIBRARIES - The libraries needed to use GSS -# GSS_LINK_DIRECTORIES - Directories to add to linker search path -# GSS_LINKER_FLAGS - Additional linker flags -# GSS_COMPILER_FLAGS - Additional compiler flags -# GSS_VERSION - This is set to version advertised by pkg-config or read from manifest. -# In case the library is found but no version info available it'll be set to "unknown" - -set(_MIT_MODNAME mit-krb5-gssapi) -set(_HEIMDAL_MODNAME heimdal-gssapi) - -include(CheckIncludeFile) -include(CheckIncludeFiles) -include(CheckTypeSize) - -set(_GSS_ROOT_HINTS - "${GSS_ROOT_DIR}" - "$ENV{GSS_ROOT_DIR}" -) - -# try to find library using system pkg-config if user didn't specify root dir -if(NOT GSS_ROOT_DIR AND NOT "$ENV{GSS_ROOT_DIR}") - if(UNIX) - find_package(PkgConfig QUIET) - pkg_search_module(_GSS_PKG ${_MIT_MODNAME} ${_HEIMDAL_MODNAME}) - list(APPEND _GSS_ROOT_HINTS "${_GSS_PKG_PREFIX}") - elseif(WIN32) - list(APPEND _GSS_ROOT_HINTS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MIT\\Kerberos;InstallDir]") - endif() -endif() - -if(NOT _GSS_FOUND) #not found by pkg-config. Let's take more traditional approach. - find_file(_GSS_CONFIGURE_SCRIPT - NAMES - "krb5-config" - HINTS - ${_GSS_ROOT_HINTS} - PATH_SUFFIXES - bin - NO_CMAKE_PATH - NO_CMAKE_ENVIRONMENT_PATH - ) - - # if not found in user-supplied directories, maybe system knows better - find_file(_GSS_CONFIGURE_SCRIPT - NAMES - "krb5-config" - PATH_SUFFIXES - bin - ) - - if(_GSS_CONFIGURE_SCRIPT) - execute_process( - COMMAND ${_GSS_CONFIGURE_SCRIPT} "--cflags" "gssapi" - OUTPUT_VARIABLE _GSS_CFLAGS - RESULT_VARIABLE _GSS_CONFIGURE_FAILED - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - message(STATUS "CFLAGS: ${_GSS_CFLAGS}") - if(NOT _GSS_CONFIGURE_FAILED) # 0 means success - # should also work in an odd case when multiple directories are given - string(STRIP "${_GSS_CFLAGS}" _GSS_CFLAGS) - string(REGEX REPLACE " +-I" ";" _GSS_CFLAGS "${_GSS_CFLAGS}") - string(REGEX REPLACE " +-([^I][^ \\t;]*)" ";-\\1" _GSS_CFLAGS "${_GSS_CFLAGS}") - - foreach(_flag ${_GSS_CFLAGS}) - if(_flag MATCHES "^-I.*") - string(REGEX REPLACE "^-I" "" _val "${_flag}") - list(APPEND _GSS_INCLUDE_DIR "${_val}") - else() - list(APPEND _GSS_COMPILER_FLAGS "${_flag}") - endif() - endforeach() - endif() - - execute_process( - COMMAND ${_GSS_CONFIGURE_SCRIPT} "--libs" "gssapi" - OUTPUT_VARIABLE _GSS_LIB_FLAGS - RESULT_VARIABLE _GSS_CONFIGURE_FAILED - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - message(STATUS "LDFLAGS: ${_GSS_LIB_FLAGS}") - - if(NOT _GSS_CONFIGURE_FAILED) # 0 means success - # this script gives us libraries and link directories. Blah. We have to deal with it. - string(STRIP "${_GSS_LIB_FLAGS}" _GSS_LIB_FLAGS) - string(REGEX REPLACE " +-(L|l)" ";-\\1" _GSS_LIB_FLAGS "${_GSS_LIB_FLAGS}") - string(REGEX REPLACE " +-([^Ll][^ \\t;]*)" ";-\\1" _GSS_LIB_FLAGS "${_GSS_LIB_FLAGS}") - - foreach(_flag ${_GSS_LIB_FLAGS}) - if(_flag MATCHES "^-l.*") - string(REGEX REPLACE "^-l" "" _val "${_flag}") - list(APPEND _GSS_LIBRARIES "${_val}") - elseif(_flag MATCHES "^-L.*") - string(REGEX REPLACE "^-L" "" _val "${_flag}") - list(APPEND _GSS_LINK_DIRECTORIES "${_val}") - else() - list(APPEND _GSS_LINKER_FLAGS "${_flag}") - endif() - endforeach() - endif() - - execute_process( - COMMAND ${_GSS_CONFIGURE_SCRIPT} "--version" - OUTPUT_VARIABLE _GSS_VERSION - RESULT_VARIABLE _GSS_CONFIGURE_FAILED - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - - # older versions may not have the "--version" parameter. In this case we just don't care. - if(_GSS_CONFIGURE_FAILED) - set(_GSS_VERSION 0) - endif() - - execute_process( - COMMAND ${_GSS_CONFIGURE_SCRIPT} "--vendor" - OUTPUT_VARIABLE _GSS_VENDOR - RESULT_VARIABLE _GSS_CONFIGURE_FAILED - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - - # older versions may not have the "--vendor" parameter. In this case we just don't care. - if(_GSS_CONFIGURE_FAILED) - set(GSS_FLAVOUR "Heimdal") # most probably, shouldn't really matter - else() - if(_GSS_VENDOR MATCHES ".*H|heimdal.*") - set(GSS_FLAVOUR "Heimdal") - else() - set(GSS_FLAVOUR "MIT") - endif() - endif() - - else() # either there is no config script or we are on a platform that doesn't provide one (Windows?) - - find_path(_GSS_INCLUDE_DIR - NAMES - "gssapi/gssapi.h" - HINTS - ${_GSS_ROOT_HINTS} - PATH_SUFFIXES - include - inc - ) - - if(_GSS_INCLUDE_DIR) #jay, we've found something - set(CMAKE_REQUIRED_INCLUDES "${_GSS_INCLUDE_DIR}") - check_include_files( "gssapi/gssapi_generic.h;gssapi/gssapi_krb5.h" _GSS_HAVE_MIT_HEADERS) - - if(_GSS_HAVE_MIT_HEADERS) - set(GSS_FLAVOUR "MIT") - else() - # prevent compiling the header - just check if we can include it - set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -D__ROKEN_H__") - check_include_file( "roken.h" _GSS_HAVE_ROKEN_H) - - check_include_file( "heimdal/roken.h" _GSS_HAVE_HEIMDAL_ROKEN_H) - if(_GSS_HAVE_ROKEN_H OR _GSS_HAVE_HEIMDAL_ROKEN_H) - set(GSS_FLAVOUR "Heimdal") - endif() - set(CMAKE_REQUIRED_DEFINITIONS "") - endif() - else() - # I'm not convinced if this is the right way but this is what autotools do at the moment - find_path(_GSS_INCLUDE_DIR - NAMES - "gssapi.h" - HINTS - ${_GSS_ROOT_HINTS} - PATH_SUFFIXES - include - inc - ) - - if(_GSS_INCLUDE_DIR) - set(GSS_FLAVOUR "Heimdal") - endif() - endif() - - # if we have headers, check if we can link libraries - if(GSS_FLAVOUR) - set(_GSS_LIBDIR_SUFFIXES "") - set(_GSS_LIBDIR_HINTS ${_GSS_ROOT_HINTS}) - get_filename_component(_GSS_CALCULATED_POTENTIAL_ROOT "${_GSS_INCLUDE_DIR}" PATH) - list(APPEND _GSS_LIBDIR_HINTS ${_GSS_CALCULATED_POTENTIAL_ROOT}) - - if(WIN32) - if(CMAKE_SIZEOF_VOID_P EQUAL 8) - list(APPEND _GSS_LIBDIR_SUFFIXES "lib/AMD64") - if(GSS_FLAVOUR STREQUAL "MIT") - set(_GSS_LIBNAME "gssapi64") - else() - set(_GSS_LIBNAME "libgssapi") - endif() - else() - list(APPEND _GSS_LIBDIR_SUFFIXES "lib/i386") - if(GSS_FLAVOUR STREQUAL "MIT") - set(_GSS_LIBNAME "gssapi32") - else() - set(_GSS_LIBNAME "libgssapi") - endif() - endif() - else() - list(APPEND _GSS_LIBDIR_SUFFIXES "lib;lib64") # those suffixes are not checked for HINTS - if(GSS_FLAVOUR STREQUAL "MIT") - set(_GSS_LIBNAME "gssapi_krb5") - else() - set(_GSS_LIBNAME "gssapi") - endif() - endif() - - find_library(_GSS_LIBRARIES - NAMES - ${_GSS_LIBNAME} - HINTS - ${_GSS_LIBDIR_HINTS} - PATH_SUFFIXES - ${_GSS_LIBDIR_SUFFIXES} - ) - - endif() - endif() -else() - if(_GSS_PKG_${_MIT_MODNAME}_VERSION) - set(GSS_FLAVOUR "MIT") - set(_GSS_VERSION _GSS_PKG_${_MIT_MODNAME}_VERSION) - else() - set(GSS_FLAVOUR "Heimdal") - set(_GSS_VERSION _GSS_PKG_${_MIT_HEIMDAL}_VERSION) - endif() -endif() - -set(GSS_INCLUDE_DIR ${_GSS_INCLUDE_DIR}) -set(GSS_LIBRARIES ${_GSS_LIBRARIES}) -set(GSS_LINK_DIRECTORIES ${_GSS_LINK_DIRECTORIES}) -set(GSS_LINKER_FLAGS ${_GSS_LINKER_FLAGS}) -set(GSS_COMPILER_FLAGS ${_GSS_COMPILER_FLAGS}) -set(GSS_VERSION ${_GSS_VERSION}) - -if(GSS_FLAVOUR) - if(NOT GSS_VERSION AND GSS_FLAVOUR STREQUAL "Heimdal") - if(CMAKE_SIZEOF_VOID_P EQUAL 8) - set(HEIMDAL_MANIFEST_FILE "Heimdal.Application.amd64.manifest") - else() - set(HEIMDAL_MANIFEST_FILE "Heimdal.Application.x86.manifest") - endif() - - if(EXISTS "${GSS_INCLUDE_DIR}/${HEIMDAL_MANIFEST_FILE}") - file(STRINGS "${GSS_INCLUDE_DIR}/${HEIMDAL_MANIFEST_FILE}" heimdal_version_str - REGEX "^.*version=\"[0-9]\\.[^\"]+\".*$") - - string(REGEX MATCH "[0-9]\\.[^\"]+" - GSS_VERSION "${heimdal_version_str}") - endif() - - if(NOT GSS_VERSION) - set(GSS_VERSION "Heimdal Unknown") - endif() - elseif(NOT GSS_VERSION AND GSS_FLAVOUR STREQUAL "MIT") - get_filename_component(_MIT_VERSION "[HKEY_LOCAL_MACHINE\\SOFTWARE\\MIT\\Kerberos\\SDK\\CurrentVersion;VersionString]" NAME CACHE) - if(WIN32 AND _MIT_VERSION) - set(GSS_VERSION "${_MIT_VERSION}") - else() - set(GSS_VERSION "MIT Unknown") - endif() - endif() -endif() - -include(FindPackageHandleStandardArgs) - -set(_GSS_REQUIRED_VARS GSS_LIBRARIES GSS_FLAVOUR) - -find_package_handle_standard_args(GSS - REQUIRED_VARS - ${_GSS_REQUIRED_VARS} - VERSION_VAR - GSS_VERSION - FAIL_MESSAGE - "Could NOT find GSS, try to set the path to GSS root folder in the system variable GSS_ROOT_DIR" -) - -mark_as_advanced(GSS_INCLUDE_DIR GSS_LIBRARIES) diff --git a/Engine/lib/curl/CMake/FindLibPSL.cmake b/Engine/lib/curl/CMake/FindLibPSL.cmake deleted file mode 100644 index 66abdd79a..000000000 --- a/Engine/lib/curl/CMake/FindLibPSL.cmake +++ /dev/null @@ -1,45 +0,0 @@ -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### -# - Try to find the libpsl library -# Once done this will define -# -# LIBPSL_FOUND - system has the libpsl library -# LIBPSL_INCLUDE_DIR - the libpsl include directory -# LIBPSL_LIBRARY - the libpsl library name - -find_path(LIBPSL_INCLUDE_DIR libpsl.h) - -find_library(LIBPSL_LIBRARY NAMES psl libpsl) - -if(LIBPSL_INCLUDE_DIR) - file(STRINGS "${LIBPSL_INCLUDE_DIR}/libpsl.h" libpsl_version_str REGEX "^#define[\t ]+PSL_VERSION[\t ]+\"(.*)\"") - string(REGEX REPLACE "^.*\"([^\"]+)\"" "\\1" LIBPSL_VERSION "${libpsl_version_str}") -endif() - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(LibPSL - REQUIRED_VARS LIBPSL_LIBRARY LIBPSL_INCLUDE_DIR - VERSION_VAR LIBPSL_VERSION) - -mark_as_advanced(LIBPSL_INCLUDE_DIR LIBPSL_LIBRARY) diff --git a/Engine/lib/curl/CMake/FindLibSSH2.cmake b/Engine/lib/curl/CMake/FindLibSSH2.cmake deleted file mode 100644 index 0ec7f7e3b..000000000 --- a/Engine/lib/curl/CMake/FindLibSSH2.cmake +++ /dev/null @@ -1,45 +0,0 @@ -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### -# - Try to find the libssh2 library -# Once done this will define -# -# LIBSSH2_FOUND - system has the libssh2 library -# LIBSSH2_INCLUDE_DIR - the libssh2 include directory -# LIBSSH2_LIBRARY - the libssh2 library name - -find_path(LIBSSH2_INCLUDE_DIR libssh2.h) - -find_library(LIBSSH2_LIBRARY NAMES ssh2 libssh2) - -if(LIBSSH2_INCLUDE_DIR) - file(STRINGS "${LIBSSH2_INCLUDE_DIR}/libssh2.h" libssh2_version_str REGEX "^#define[\t ]+LIBSSH2_VERSION[\t ]+\"(.*)\"") - string(REGEX REPLACE "^.*\"([^\"]+)\"" "\\1" LIBSSH2_VERSION "${libssh2_version_str}") -endif() - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(LibSSH2 - REQUIRED_VARS LIBSSH2_LIBRARY LIBSSH2_INCLUDE_DIR - VERSION_VAR LIBSSH2_VERSION) - -mark_as_advanced(LIBSSH2_INCLUDE_DIR LIBSSH2_LIBRARY) diff --git a/Engine/lib/curl/CMake/FindMSH3.cmake b/Engine/lib/curl/CMake/FindMSH3.cmake deleted file mode 100644 index 96477e282..000000000 --- a/Engine/lib/curl/CMake/FindMSH3.cmake +++ /dev/null @@ -1,70 +0,0 @@ -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### - -#[=======================================================================[.rst: -FindMSH3 ----------- - -Find the msh3 library - -Result Variables -^^^^^^^^^^^^^^^^ - -``MSH3_FOUND`` - System has msh3 -``MSH3_INCLUDE_DIRS`` - The msh3 include directories. -``MSH3_LIBRARIES`` - The libraries needed to use msh3 -#]=======================================================================] -if(UNIX) - find_package(PkgConfig QUIET) - pkg_search_module(PC_MSH3 libmsh3) -endif() - -find_path(MSH3_INCLUDE_DIR msh3.h - HINTS - ${PC_MSH3_INCLUDEDIR} - ${PC_MSH3_INCLUDE_DIRS} -) - -find_library(MSH3_LIBRARY NAMES msh3 - HINTS - ${PC_MSH3_LIBDIR} - ${PC_MSH3_LIBRARY_DIRS} -) - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(MSH3 - REQUIRED_VARS - MSH3_LIBRARY - MSH3_INCLUDE_DIR -) - -if(MSH3_FOUND) - set(MSH3_LIBRARIES ${MSH3_LIBRARY}) - set(MSH3_INCLUDE_DIRS ${MSH3_INCLUDE_DIR}) -endif() - -mark_as_advanced(MSH3_INCLUDE_DIRS MSH3_LIBRARIES) diff --git a/Engine/lib/curl/CMake/FindMbedTLS.cmake b/Engine/lib/curl/CMake/FindMbedTLS.cmake deleted file mode 100644 index fcd6717f6..000000000 --- a/Engine/lib/curl/CMake/FindMbedTLS.cmake +++ /dev/null @@ -1,36 +0,0 @@ -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### -find_path(MBEDTLS_INCLUDE_DIRS mbedtls/ssl.h) - -find_library(MBEDTLS_LIBRARY mbedtls) -find_library(MBEDX509_LIBRARY mbedx509) -find_library(MBEDCRYPTO_LIBRARY mbedcrypto) - -set(MBEDTLS_LIBRARIES "${MBEDTLS_LIBRARY}" "${MBEDX509_LIBRARY}" "${MBEDCRYPTO_LIBRARY}") - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(MbedTLS DEFAULT_MSG - MBEDTLS_INCLUDE_DIRS MBEDTLS_LIBRARY MBEDX509_LIBRARY MBEDCRYPTO_LIBRARY) - -mark_as_advanced(MBEDTLS_INCLUDE_DIRS MBEDTLS_LIBRARY MBEDX509_LIBRARY MBEDCRYPTO_LIBRARY) diff --git a/Engine/lib/curl/CMake/FindNGHTTP2.cmake b/Engine/lib/curl/CMake/FindNGHTTP2.cmake deleted file mode 100644 index 6d70c4a04..000000000 --- a/Engine/lib/curl/CMake/FindNGHTTP2.cmake +++ /dev/null @@ -1,41 +0,0 @@ -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### -include(FindPackageHandleStandardArgs) - -find_path(NGHTTP2_INCLUDE_DIR "nghttp2/nghttp2.h") - -find_library(NGHTTP2_LIBRARY NAMES nghttp2) - -find_package_handle_standard_args(NGHTTP2 - FOUND_VAR - NGHTTP2_FOUND - REQUIRED_VARS - NGHTTP2_LIBRARY - NGHTTP2_INCLUDE_DIR -) - -set(NGHTTP2_INCLUDE_DIRS ${NGHTTP2_INCLUDE_DIR}) -set(NGHTTP2_LIBRARIES ${NGHTTP2_LIBRARY}) - -mark_as_advanced(NGHTTP2_INCLUDE_DIRS NGHTTP2_LIBRARIES) diff --git a/Engine/lib/curl/CMake/FindNGHTTP3.cmake b/Engine/lib/curl/CMake/FindNGHTTP3.cmake deleted file mode 100644 index 8d8ebc1b1..000000000 --- a/Engine/lib/curl/CMake/FindNGHTTP3.cmake +++ /dev/null @@ -1,78 +0,0 @@ -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### - -#[=======================================================================[.rst: -FindNGHTTP3 ----------- - -Find the nghttp3 library - -Result Variables -^^^^^^^^^^^^^^^^ - -``NGHTTP3_FOUND`` - System has nghttp3 -``NGHTTP3_INCLUDE_DIRS`` - The nghttp3 include directories. -``NGHTTP3_LIBRARIES`` - The libraries needed to use nghttp3 -``NGHTTP3_VERSION`` - version of nghttp3. -#]=======================================================================] - -if(UNIX) - find_package(PkgConfig QUIET) - pkg_search_module(PC_NGHTTP3 libnghttp3) -endif() - -find_path(NGHTTP3_INCLUDE_DIR nghttp3/nghttp3.h - HINTS - ${PC_NGHTTP3_INCLUDEDIR} - ${PC_NGHTTP3_INCLUDE_DIRS} -) - -find_library(NGHTTP3_LIBRARY NAMES nghttp3 - HINTS - ${PC_NGHTTP3_LIBDIR} - ${PC_NGHTTP3_LIBRARY_DIRS} -) - -if(PC_NGHTTP3_VERSION) - set(NGHTTP3_VERSION ${PC_NGHTTP3_VERSION}) -endif() - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(NGHTTP3 - REQUIRED_VARS - NGHTTP3_LIBRARY - NGHTTP3_INCLUDE_DIR - VERSION_VAR NGHTTP3_VERSION -) - -if(NGHTTP3_FOUND) - set(NGHTTP3_LIBRARIES ${NGHTTP3_LIBRARY}) - set(NGHTTP3_INCLUDE_DIRS ${NGHTTP3_INCLUDE_DIR}) -endif() - -mark_as_advanced(NGHTTP3_INCLUDE_DIRS NGHTTP3_LIBRARIES) diff --git a/Engine/lib/curl/CMake/FindNGTCP2.cmake b/Engine/lib/curl/CMake/FindNGTCP2.cmake deleted file mode 100644 index 61e54c2d6..000000000 --- a/Engine/lib/curl/CMake/FindNGTCP2.cmake +++ /dev/null @@ -1,115 +0,0 @@ -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### - -#[=======================================================================[.rst: -FindNGTCP2 ----------- - -Find the ngtcp2 library - -This module accepts optional COMPONENTS to control the crypto library (these are -mutually exclusive):: - - OpenSSL: Use libngtcp2_crypto_openssl - GnuTLS: Use libngtcp2_crypto_gnutls - -Result Variables -^^^^^^^^^^^^^^^^ - -``NGTCP2_FOUND`` - System has ngtcp2 -``NGTCP2_INCLUDE_DIRS`` - The ngtcp2 include directories. -``NGTCP2_LIBRARIES`` - The libraries needed to use ngtcp2 -``NGTCP2_VERSION`` - version of ngtcp2. -#]=======================================================================] - -if(UNIX) - find_package(PkgConfig QUIET) - pkg_search_module(PC_NGTCP2 libngtcp2) -endif() - -find_path(NGTCP2_INCLUDE_DIR ngtcp2/ngtcp2.h - HINTS - ${PC_NGTCP2_INCLUDEDIR} - ${PC_NGTCP2_INCLUDE_DIRS} -) - -find_library(NGTCP2_LIBRARY NAMES ngtcp2 - HINTS - ${PC_NGTCP2_LIBDIR} - ${PC_NGTCP2_LIBRARY_DIRS} -) - -if(PC_NGTCP2_VERSION) - set(NGTCP2_VERSION ${PC_NGTCP2_VERSION}) -endif() - -if(NGTCP2_FIND_COMPONENTS) - set(NGTCP2_CRYPTO_BACKEND "") - foreach(component IN LISTS NGTCP2_FIND_COMPONENTS) - if(component MATCHES "^(BoringSSL|OpenSSL|GnuTLS)") - if(NGTCP2_CRYPTO_BACKEND) - message(FATAL_ERROR "NGTCP2: Only one crypto library can be selected") - endif() - set(NGTCP2_CRYPTO_BACKEND ${component}) - endif() - endforeach() - - if(NGTCP2_CRYPTO_BACKEND) - string(TOLOWER "ngtcp2_crypto_${NGTCP2_CRYPTO_BACKEND}" _crypto_library) - if(UNIX) - pkg_search_module(PC_${_crypto_library} lib${_crypto_library}) - endif() - find_library(${_crypto_library}_LIBRARY - NAMES - ${_crypto_library} - HINTS - ${PC_${_crypto_library}_LIBDIR} - ${PC_${_crypto_library}_LIBRARY_DIRS} - ) - if(${_crypto_library}_LIBRARY) - set(NGTCP2_${NGTCP2_CRYPTO_BACKEND}_FOUND TRUE) - set(NGTCP2_CRYPTO_LIBRARY ${${_crypto_library}_LIBRARY}) - endif() - endif() -endif() - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(NGTCP2 - REQUIRED_VARS - NGTCP2_LIBRARY - NGTCP2_INCLUDE_DIR - VERSION_VAR NGTCP2_VERSION - HANDLE_COMPONENTS -) - -if(NGTCP2_FOUND) - set(NGTCP2_LIBRARIES ${NGTCP2_LIBRARY} ${NGTCP2_CRYPTO_LIBRARY}) - set(NGTCP2_INCLUDE_DIRS ${NGTCP2_INCLUDE_DIR}) -endif() - -mark_as_advanced(NGTCP2_INCLUDE_DIRS NGTCP2_LIBRARIES) diff --git a/Engine/lib/curl/CMake/FindNSS.cmake b/Engine/lib/curl/CMake/FindNSS.cmake deleted file mode 100644 index 6742dda83..000000000 --- a/Engine/lib/curl/CMake/FindNSS.cmake +++ /dev/null @@ -1,40 +0,0 @@ -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### -if(UNIX) - find_package(PkgConfig QUIET) - pkg_search_module(PC_NSS nss) -endif() -if(NOT PC_NSS_FOUND) - return() -endif() - -set(NSS_LIBRARIES ${PC_NSS_LINK_LIBRARIES}) -set(NSS_INCLUDE_DIRS ${PC_NSS_INCLUDE_DIRS}) - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(NSS - REQUIRED_VARS NSS_LIBRARIES NSS_INCLUDE_DIRS - VERSION_VAR PC_NSS_VERSION) - -mark_as_advanced(NSS_INCLUDE_DIRS NSS_LIBRARIES) diff --git a/Engine/lib/curl/CMake/FindQUICHE.cmake b/Engine/lib/curl/CMake/FindQUICHE.cmake deleted file mode 100644 index fc47027d7..000000000 --- a/Engine/lib/curl/CMake/FindQUICHE.cmake +++ /dev/null @@ -1,70 +0,0 @@ -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### - -#[=======================================================================[.rst: -FindQUICHE ----------- - -Find the quiche library - -Result Variables -^^^^^^^^^^^^^^^^ - -``QUICHE_FOUND`` - System has quiche -``QUICHE_INCLUDE_DIRS`` - The quiche include directories. -``QUICHE_LIBRARIES`` - The libraries needed to use quiche -#]=======================================================================] -if(UNIX) - find_package(PkgConfig QUIET) - pkg_search_module(PC_QUICHE quiche) -endif() - -find_path(QUICHE_INCLUDE_DIR quiche.h - HINTS - ${PC_QUICHE_INCLUDEDIR} - ${PC_QUICHE_INCLUDE_DIRS} -) - -find_library(QUICHE_LIBRARY NAMES quiche - HINTS - ${PC_QUICHE_LIBDIR} - ${PC_QUICHE_LIBRARY_DIRS} -) - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(QUICHE - REQUIRED_VARS - QUICHE_LIBRARY - QUICHE_INCLUDE_DIR -) - -if(QUICHE_FOUND) - set(QUICHE_LIBRARIES ${QUICHE_LIBRARY}) - set(QUICHE_INCLUDE_DIRS ${QUICHE_INCLUDE_DIR}) -endif() - -mark_as_advanced(QUICHE_INCLUDE_DIRS QUICHE_LIBRARIES) diff --git a/Engine/lib/curl/CMake/FindWolfSSL.cmake b/Engine/lib/curl/CMake/FindWolfSSL.cmake deleted file mode 100644 index 986f01e00..000000000 --- a/Engine/lib/curl/CMake/FindWolfSSL.cmake +++ /dev/null @@ -1,36 +0,0 @@ -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### -find_path(WolfSSL_INCLUDE_DIR NAMES wolfssl/ssl.h) -find_library(WolfSSL_LIBRARY NAMES wolfssl) -mark_as_advanced(WolfSSL_INCLUDE_DIR WolfSSL_LIBRARY) - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(WolfSSL - REQUIRED_VARS WolfSSL_INCLUDE_DIR WolfSSL_LIBRARY - ) - -if(WolfSSL_FOUND) - set(WolfSSL_INCLUDE_DIRS ${WolfSSL_INCLUDE_DIR}) - set(WolfSSL_LIBRARIES ${WolfSSL_LIBRARY}) -endif() diff --git a/Engine/lib/curl/CMake/FindZstd.cmake b/Engine/lib/curl/CMake/FindZstd.cmake deleted file mode 100644 index 2d6540443..000000000 --- a/Engine/lib/curl/CMake/FindZstd.cmake +++ /dev/null @@ -1,71 +0,0 @@ -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### - -#[=======================================================================[.rst: -FindZstd ----------- - -Find the zstd library - -Result Variables -^^^^^^^^^^^^^^^^ - -``Zstd_FOUND`` - System has zstd -``Zstd_INCLUDE_DIRS`` - The zstd include directories. -``Zstd_LIBRARIES`` - The libraries needed to use zstd -#]=======================================================================] - -if(UNIX) - find_package(PkgConfig QUIET) - pkg_search_module(PC_Zstd libzstd) -endif() - -find_path(Zstd_INCLUDE_DIR zstd.h - HINTS - ${PC_Zstd_INCLUDEDIR} - ${PC_Zstd_INCLUDE_DIRS} -) - -find_library(Zstd_LIBRARY NAMES zstd - HINTS - ${PC_Zstd_LIBDIR} - ${PC_Zstd_LIBRARY_DIRS} -) - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(Zstd - REQUIRED_VARS - Zstd_LIBRARY - Zstd_INCLUDE_DIR -) - -if(Zstd_FOUND) - set(Zstd_LIBRARIES ${Zstd_LIBRARY}) - set(Zstd_INCLUDE_DIRS ${Zstd_INCLUDE_DIR}) -endif() - -mark_as_advanced(Zstd_INCLUDE_DIRS Zstd_LIBRARIES) diff --git a/Engine/lib/curl/CMake/Macros.cmake b/Engine/lib/curl/CMake/Macros.cmake deleted file mode 100644 index 4d7380eb5..000000000 --- a/Engine/lib/curl/CMake/Macros.cmake +++ /dev/null @@ -1,122 +0,0 @@ -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### -#File defines convenience macros for available feature testing - -# This macro checks if the symbol exists in the library and if it -# does, it prepends library to the list. It is intended to be called -# multiple times with a sequence of possibly dependent libraries in -# order of least-to-most-dependent. Some libraries depend on others -# to link correctly. -macro(check_library_exists_concat LIBRARY SYMBOL VARIABLE) - check_library_exists("${LIBRARY};${CURL_LIBS}" ${SYMBOL} "${CMAKE_LIBRARY_PATH}" - ${VARIABLE}) - if(${VARIABLE}) - set(CURL_LIBS ${LIBRARY} ${CURL_LIBS}) - endif() -endmacro() - -# Check if header file exists and add it to the list. -# This macro is intended to be called multiple times with a sequence of -# possibly dependent header files. Some headers depend on others to be -# compiled correctly. -macro(check_include_file_concat FILE VARIABLE) - check_include_files("${CURL_INCLUDES};${FILE}" ${VARIABLE}) - if(${VARIABLE}) - set(CURL_INCLUDES ${CURL_INCLUDES} ${FILE}) - set(CURL_TEST_DEFINES "${CURL_TEST_DEFINES} -D${VARIABLE}") - endif() -endmacro() - -# For other curl specific tests, use this macro. -macro(curl_internal_test CURL_TEST) - if(NOT DEFINED "${CURL_TEST}") - set(MACRO_CHECK_FUNCTION_DEFINITIONS - "-D${CURL_TEST} ${CURL_TEST_DEFINES} ${CMAKE_REQUIRED_FLAGS}") - if(CMAKE_REQUIRED_LIBRARIES) - set(CURL_TEST_ADD_LIBRARIES - "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}") - endif() - - message(STATUS "Performing Curl Test ${CURL_TEST}") - try_compile(${CURL_TEST} - ${CMAKE_BINARY_DIR} - ${CMAKE_CURRENT_SOURCE_DIR}/CMake/CurlTests.c - CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS} - "${CURL_TEST_ADD_LIBRARIES}" - OUTPUT_VARIABLE OUTPUT) - if(${CURL_TEST}) - set(${CURL_TEST} 1 CACHE INTERNAL "Curl test ${FUNCTION}") - message(STATUS "Performing Curl Test ${CURL_TEST} - Success") - file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log - "Performing Curl Test ${CURL_TEST} passed with the following output:\n" - "${OUTPUT}\n") - else() - message(STATUS "Performing Curl Test ${CURL_TEST} - Failed") - set(${CURL_TEST} "" CACHE INTERNAL "Curl test ${FUNCTION}") - file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log - "Performing Curl Test ${CURL_TEST} failed with the following output:\n" - "${OUTPUT}\n") - endif() - endif() -endmacro() - -macro(curl_nroff_check) - find_program(NROFF NAMES gnroff nroff) - if(NROFF) - # Need a way to write to stdin, this will do - file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/nroff-input.txt" "test") - # Tests for a valid nroff option to generate a manpage - foreach(_MANOPT "-man" "-mandoc") - execute_process(COMMAND "${NROFF}" ${_MANOPT} - OUTPUT_VARIABLE NROFF_MANOPT_OUTPUT - INPUT_FILE "${CMAKE_CURRENT_BINARY_DIR}/nroff-input.txt" - ERROR_QUIET) - # Save the option if it was valid - if(NROFF_MANOPT_OUTPUT) - message("Found *nroff option: -- ${_MANOPT}") - set(NROFF_MANOPT ${_MANOPT}) - set(NROFF_USEFUL ON) - break() - endif() - endforeach() - # No need for the temporary file - file(REMOVE "${CMAKE_CURRENT_BINARY_DIR}/nroff-input.txt") - if(NOT NROFF_USEFUL) - message(WARNING "Found no *nroff option to get plaintext from man pages") - endif() - else() - message(WARNING "Found no *nroff program") - endif() -endmacro() - -macro(optional_dependency DEPENDENCY) - set(CURL_${DEPENDENCY} AUTO CACHE STRING "Build curl with ${DEPENDENCY} support (AUTO, ON or OFF)") - set_property(CACHE CURL_${DEPENDENCY} PROPERTY STRINGS AUTO ON OFF) - - if(CURL_${DEPENDENCY} STREQUAL AUTO) - find_package(${DEPENDENCY}) - elseif(CURL_${DEPENDENCY}) - find_package(${DEPENDENCY} REQUIRED) - endif() -endmacro() diff --git a/Engine/lib/curl/CMake/OtherTests.cmake b/Engine/lib/curl/CMake/OtherTests.cmake deleted file mode 100644 index 9f62c9dea..000000000 --- a/Engine/lib/curl/CMake/OtherTests.cmake +++ /dev/null @@ -1,288 +0,0 @@ -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### -include(CheckCSourceCompiles) -# The begin of the sources (macros and includes) -set(_source_epilogue "#undef inline") - -macro(add_header_include check header) - if(${check}) - set(_source_epilogue "${_source_epilogue}\n#include <${header}>") - endif() -endmacro() - -set(signature_call_conv) -if(HAVE_WINDOWS_H) - add_header_include(HAVE_WINSOCK2_H "winsock2.h") - add_header_include(HAVE_WINDOWS_H "windows.h") - set(_source_epilogue - "${_source_epilogue}\n#ifndef WIN32_LEAN_AND_MEAN\n#define WIN32_LEAN_AND_MEAN\n#endif") - set(signature_call_conv "PASCAL") - if(HAVE_LIBWS2_32) - set(CMAKE_REQUIRED_LIBRARIES ws2_32) - endif() -else() - add_header_include(HAVE_SYS_TYPES_H "sys/types.h") - add_header_include(HAVE_SYS_SOCKET_H "sys/socket.h") -endif() - -set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) - -function(curl_cv_func_recv_run_test recv_retv recv_arg1 recv_arg2 recv_arg3 recv_arg4) - unset(curl_cv_func_recv_test CACHE) - check_c_source_compiles(" - ${_source_epilogue} - #ifdef WINSOCK_API_LINKAGE - WINSOCK_API_LINKAGE - #endif - extern ${recv_retv} ${signature_call_conv} - recv(${recv_arg1}, ${recv_arg2}, ${recv_arg3}, ${recv_arg4}); - int main(void) { - ${recv_arg1} s=0; - ${recv_arg2} buf=0; - ${recv_arg3} len=0; - ${recv_arg4} flags=0; - ${recv_retv} res = recv(s, buf, len, flags); - (void) res; - return 0; - }" - curl_cv_func_recv_test) - message(STATUS - "Tested: ${recv_retv} recv(${recv_arg1}, ${recv_arg2}, ${recv_arg3}, ${recv_arg4})") - if(curl_cv_func_recv_test) - set(curl_cv_func_recv_args - "${recv_arg1},${recv_arg2},${recv_arg3},${recv_arg4},${recv_retv}" PARENT_SCOPE) - set(RECV_TYPE_ARG1 "${recv_arg1}" PARENT_SCOPE) - set(RECV_TYPE_ARG2 "${recv_arg2}" PARENT_SCOPE) - set(RECV_TYPE_ARG3 "${recv_arg3}" PARENT_SCOPE) - set(RECV_TYPE_ARG4 "${recv_arg4}" PARENT_SCOPE) - set(RECV_TYPE_RETV "${recv_retv}" PARENT_SCOPE) - set(HAVE_RECV 1 PARENT_SCOPE) - set(curl_cv_func_recv_done 1 PARENT_SCOPE) - endif() -endfunction() - -check_c_source_compiles("${_source_epilogue} -int main(void) { - recv(0, 0, 0, 0); - return 0; -}" curl_cv_recv) -if(curl_cv_recv) - if(NOT DEFINED curl_cv_func_recv_args OR curl_cv_func_recv_args STREQUAL "unknown") - if(APPLE) - curl_cv_func_recv_run_test("ssize_t" "int" "void *" "size_t" "int") - endif() - foreach(recv_retv "int" "ssize_t" ) - foreach(recv_arg1 "SOCKET" "int" ) - foreach(recv_arg2 "char *" "void *" ) - foreach(recv_arg3 "int" "size_t" "socklen_t" "unsigned int") - foreach(recv_arg4 "int" "unsigned int") - if(NOT curl_cv_func_recv_done) - curl_cv_func_recv_run_test(${recv_retv} ${recv_arg1} ${recv_arg2} ${recv_arg3} ${recv_arg4}) - endif() - endforeach() - endforeach() - endforeach() - endforeach() - endforeach() - else() - string(REGEX REPLACE "^([^,]*),[^,]*,[^,]*,[^,]*,[^,]*$" "\\1" RECV_TYPE_ARG1 "${curl_cv_func_recv_args}") - string(REGEX REPLACE "^[^,]*,([^,]*),[^,]*,[^,]*,[^,]*$" "\\1" RECV_TYPE_ARG2 "${curl_cv_func_recv_args}") - string(REGEX REPLACE "^[^,]*,[^,]*,([^,]*),[^,]*,[^,]*$" "\\1" RECV_TYPE_ARG3 "${curl_cv_func_recv_args}") - string(REGEX REPLACE "^[^,]*,[^,]*,[^,]*,([^,]*),[^,]*$" "\\1" RECV_TYPE_ARG4 "${curl_cv_func_recv_args}") - string(REGEX REPLACE "^[^,]*,[^,]*,[^,]*,[^,]*,([^,]*)$" "\\1" RECV_TYPE_RETV "${curl_cv_func_recv_args}") - endif() - - if(curl_cv_func_recv_args STREQUAL "unknown") - message(FATAL_ERROR "Cannot find proper types to use for recv args") - endif() -else() - message(FATAL_ERROR "Unable to link function recv") -endif() -set(curl_cv_func_recv_args "${curl_cv_func_recv_args}" CACHE INTERNAL "Arguments for recv") -set(HAVE_RECV 1) - -function(curl_cv_func_send_run_test send_retv send_arg1 send_arg2 send_arg3 send_arg4) - unset(curl_cv_func_send_test CACHE) - check_c_source_compiles(" - ${_source_epilogue} - #ifdef WINSOCK_API_LINKAGE - WINSOCK_API_LINKAGE - #endif - extern ${send_retv} ${signature_call_conv} - send(${send_arg1}, ${send_arg2}, ${send_arg3}, ${send_arg4}); - int main(void) { - ${send_arg1} s=0; - ${send_arg2} buf=0; - ${send_arg3} len=0; - ${send_arg4} flags=0; - ${send_retv} res = send(s, buf, len, flags); - (void) res; - return 0; - }" - curl_cv_func_send_test) - message(STATUS - "Tested: ${send_retv} send(${send_arg1}, ${send_arg2}, ${send_arg3}, ${send_arg4})") - if(curl_cv_func_send_test) - string(REGEX REPLACE "(const) .*" "\\1" send_qual_arg2 "${send_arg2}") - string(REGEX REPLACE "const (.*)" "\\1" send_arg2 "${send_arg2}") - set(curl_cv_func_send_args - "${send_arg1},${send_arg2},${send_arg3},${send_arg4},${send_retv},${send_qual_arg2}" PARENT_SCOPE) - set(SEND_TYPE_ARG1 "${send_arg1}" PARENT_SCOPE) - set(SEND_TYPE_ARG2 "${send_arg2}" PARENT_SCOPE) - set(SEND_TYPE_ARG3 "${send_arg3}" PARENT_SCOPE) - set(SEND_TYPE_ARG4 "${send_arg4}" PARENT_SCOPE) - set(SEND_TYPE_RETV "${send_retv}" PARENT_SCOPE) - set(HAVE_SEND 1 PARENT_SCOPE) - set(curl_cv_func_send_done 1 PARENT_SCOPE) - endif() -endfunction() - -check_c_source_compiles("${_source_epilogue} -int main(void) { - send(0, 0, 0, 0); - return 0; -}" curl_cv_send) -if(curl_cv_send) - if(NOT DEFINED curl_cv_func_send_args OR "${curl_cv_func_send_args}" STREQUAL "unknown") - if(APPLE) - curl_cv_func_send_run_test("ssize_t" "int" "const void *" "size_t" "int") - endif() - foreach(send_retv "int" "ssize_t" ) - foreach(send_arg1 "SOCKET" "int" "ssize_t" ) - foreach(send_arg2 "const char *" "const void *" "void *" "char *") - foreach(send_arg3 "int" "size_t" "socklen_t" "unsigned int") - foreach(send_arg4 "int" "unsigned int") - if(NOT curl_cv_func_send_done) - curl_cv_func_send_run_test("${send_retv}" "${send_arg1}" "${send_arg2}" "${send_arg3}" "${send_arg4}") - endif() - endforeach() - endforeach() - endforeach() - endforeach() - endforeach() - else() - string(REGEX REPLACE "^([^,]*),[^,]*,[^,]*,[^,]*,[^,]*,[^,]*$" "\\1" SEND_TYPE_ARG1 "${curl_cv_func_send_args}") - string(REGEX REPLACE "^[^,]*,([^,]*),[^,]*,[^,]*,[^,]*,[^,]*$" "\\1" SEND_TYPE_ARG2 "${curl_cv_func_send_args}") - string(REGEX REPLACE "^[^,]*,[^,]*,([^,]*),[^,]*,[^,]*,[^,]*$" "\\1" SEND_TYPE_ARG3 "${curl_cv_func_send_args}") - string(REGEX REPLACE "^[^,]*,[^,]*,[^,]*,([^,]*),[^,]*,[^,]*$" "\\1" SEND_TYPE_ARG4 "${curl_cv_func_send_args}") - string(REGEX REPLACE "^[^,]*,[^,]*,[^,]*,[^,]*,([^,]*),[^,]*$" "\\1" SEND_TYPE_RETV "${curl_cv_func_send_args}") - string(REGEX REPLACE "^[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,([^,]*)$" "\\1" SEND_QUAL_ARG2 "${curl_cv_func_send_args}") - endif() - - if("${curl_cv_func_send_args}" STREQUAL "unknown") - message(FATAL_ERROR "Cannot find proper types to use for send args") - endif() - set(SEND_QUAL_ARG2 "const") -else() - message(FATAL_ERROR "Unable to link function send") -endif() -set(curl_cv_func_send_args "${curl_cv_func_send_args}" CACHE INTERNAL "Arguments for send") -set(HAVE_SEND 1) - -check_c_source_compiles("${_source_epilogue} - int main(void) { - int flag = MSG_NOSIGNAL; - (void)flag; - return 0; - }" HAVE_MSG_NOSIGNAL) - -if(NOT HAVE_WINDOWS_H) - add_header_include(HAVE_SYS_TIME_H "sys/time.h") - add_header_include(TIME_WITH_SYS_TIME "time.h") - add_header_include(HAVE_TIME_H "time.h") -endif() -check_c_source_compiles("${_source_epilogue} -int main(void) { - struct timeval ts; - ts.tv_sec = 0; - ts.tv_usec = 0; - (void)ts; - return 0; -}" HAVE_STRUCT_TIMEVAL) - -if(HAVE_WINDOWS_H) - set(CMAKE_EXTRA_INCLUDE_FILES winsock2.h) -else() - set(CMAKE_EXTRA_INCLUDE_FILES) - if(HAVE_SYS_SOCKET_H) - set(CMAKE_EXTRA_INCLUDE_FILES sys/socket.h) - endif() -endif() - -check_type_size("struct sockaddr_storage" SIZEOF_STRUCT_SOCKADDR_STORAGE) -if(HAVE_SIZEOF_STRUCT_SOCKADDR_STORAGE) - set(HAVE_STRUCT_SOCKADDR_STORAGE 1) -endif() - -unset(CMAKE_TRY_COMPILE_TARGET_TYPE) - -if(NOT DEFINED CMAKE_TOOLCHAIN_FILE) - if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin" AND NOT ${CMAKE_SYSTEM_NAME} MATCHES "iOS") - # only try this on non-apple platforms - - # if not cross-compilation... - include(CheckCSourceRuns) - set(CMAKE_REQUIRED_FLAGS "") - if(HAVE_SYS_POLL_H) - set(CMAKE_REQUIRED_FLAGS "-DHAVE_SYS_POLL_H") - elseif(HAVE_POLL_H) - set(CMAKE_REQUIRED_FLAGS "-DHAVE_POLL_H") - endif() - check_c_source_runs(" - #include - #include - - #ifdef HAVE_SYS_POLL_H - # include - #elif HAVE_POLL_H - # include - #endif - - int main(void) - { - if(0 != poll(0, 0, 10)) { - return 1; /* fail */ - } - else { - /* detect the 10.12 poll() breakage */ - struct timeval before, after; - int rc; - size_t us; - - gettimeofday(&before, NULL); - rc = poll(NULL, 0, 500); - gettimeofday(&after, NULL); - - us = (after.tv_sec - before.tv_sec) * 1000000 + - (after.tv_usec - before.tv_usec); - - if(us < 400000) { - return 1; - } - } - return 0; - }" HAVE_POLL_FINE) - endif() -endif() - diff --git a/Engine/lib/curl/CMake/Platforms/WindowsCache.cmake b/Engine/lib/curl/CMake/Platforms/WindowsCache.cmake deleted file mode 100644 index dc589ca91..000000000 --- a/Engine/lib/curl/CMake/Platforms/WindowsCache.cmake +++ /dev/null @@ -1,103 +0,0 @@ -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### -if(NOT UNIX) - if(WIN32) - set(HAVE_LIBSOCKET 0) - set(HAVE_GETHOSTNAME 1) - set(HAVE_LIBZ 0) - - set(HAVE_ARPA_INET_H 0) - set(HAVE_FCNTL_H 1) - set(HAVE_INTTYPES_H 0) - set(HAVE_IO_H 1) - set(HAVE_NETDB_H 0) - set(HAVE_NETINET_IN_H 0) - set(HAVE_NET_IF_H 0) - set(HAVE_PROCESS_H 1) - set(HAVE_PWD_H 0) - set(HAVE_SETJMP_H 1) - set(HAVE_SIGNAL_H 1) - set(HAVE_STDINT_H 0) - set(HAVE_STDLIB_H 1) - set(HAVE_STRINGS_H 0) - set(HAVE_STRING_H 1) - set(HAVE_SYS_PARAM_H 0) - set(HAVE_SYS_POLL_H 0) - set(HAVE_SYS_SELECT_H 0) - set(HAVE_SYS_SOCKET_H 0) - set(HAVE_SYS_SOCKIO_H 0) - set(HAVE_SYS_STAT_H 1) - set(HAVE_SYS_TIME_H 0) - set(HAVE_SYS_TYPES_H 1) - set(HAVE_SYS_UTIME_H 1) - set(HAVE_TERMIOS_H 0) - set(HAVE_TERMIO_H 0) - set(HAVE_TIME_H 1) - set(HAVE_UNISTD_H 0) - set(HAVE_UTIME_H 0) - set(HAVE_ZLIB_H 0) - - set(HAVE_SOCKET 1) - set(HAVE_SELECT 1) - set(HAVE_STRDUP 1) - set(HAVE_STRTOK_R 0) - set(HAVE_STRCASECMP 0) - set(HAVE_STRICMP 1) - set(HAVE_STRCMPI 1) - set(HAVE_GETTIMEOFDAY 0) - set(HAVE_CLOSESOCKET 1) - set(HAVE_SIGSETJMP 0) - set(HAVE_GETPASS_R 0) - set(HAVE_GETPWUID 0) - set(HAVE_GETEUID 0) - set(HAVE_UTIME 1) - set(HAVE_RAND_EGD 0) - set(HAVE_GMTIME_R 0) - set(HAVE_GETHOSTBYNAME_R 0) - set(HAVE_SIGNAL_FUNC 1) - set(HAVE_SIGNAL_MACRO 0) - - set(HAVE_GETHOSTBYNAME_R_3 0) - set(HAVE_GETHOSTBYNAME_R_3_REENTRANT 0) - set(HAVE_GETHOSTBYNAME_R_5 0) - set(HAVE_GETHOSTBYNAME_R_5_REENTRANT 0) - set(HAVE_GETHOSTBYNAME_R_6 0) - set(HAVE_GETHOSTBYNAME_R_6_REENTRANT 0) - - set(TIME_WITH_SYS_TIME 0) - set(HAVE_O_NONBLOCK 0) - set(HAVE_IN_ADDR_T 0) - if(ENABLE_IPV6) - set(HAVE_GETADDRINFO 1) - else() - set(HAVE_GETADDRINFO 0) - endif() - set(STDC_HEADERS 1) - - set(HAVE_SIGACTION 0) - set(HAVE_MACRO_SIGSETJMP 0) - else() - message("This file should be included on Windows platform only") - endif() -endif() diff --git a/Engine/lib/curl/CMake/Utilities.cmake b/Engine/lib/curl/CMake/Utilities.cmake deleted file mode 100644 index 78bfd6ffe..000000000 --- a/Engine/lib/curl/CMake/Utilities.cmake +++ /dev/null @@ -1,35 +0,0 @@ -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### -# File containing various utilities - -# Returns a list of arguments that evaluate to true -function(count_true output_count_var) - set(lst_len 0) - foreach(option_var IN LISTS ARGN) - if(${option_var}) - math(EXPR lst_len "${lst_len} + 1") - endif() - endforeach() - set(${output_count_var} ${lst_len} PARENT_SCOPE) -endfunction() diff --git a/Engine/lib/curl/CMake/cmake_uninstall.cmake.in b/Engine/lib/curl/CMake/cmake_uninstall.cmake.in deleted file mode 100644 index 55801f507..000000000 --- a/Engine/lib/curl/CMake/cmake_uninstall.cmake.in +++ /dev/null @@ -1,49 +0,0 @@ -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### -if(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") - message(FATAL_ERROR "Cannot find install manifest: @CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") -endif() - -if(NOT DEFINED CMAKE_INSTALL_PREFIX) - set(CMAKE_INSTALL_PREFIX "@CMAKE_INSTALL_PREFIX@") -endif() -message(${CMAKE_INSTALL_PREFIX}) - -file(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files) -string(REGEX REPLACE "\n" ";" files "${files}") -foreach(file ${files}) - message(STATUS "Uninstalling $ENV{DESTDIR}${file}") - if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") - exec_program( - "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" - OUTPUT_VARIABLE rm_out - RETURN_VALUE rm_retval - ) - if(NOT "${rm_retval}" STREQUAL 0) - message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}") - endif() - else() - message(STATUS "File $ENV{DESTDIR}${file} does not exist.") - endif() -endforeach() diff --git a/Engine/lib/curl/CMake/curl-config.cmake.in b/Engine/lib/curl/CMake/curl-config.cmake.in deleted file mode 100644 index 496a92d0e..000000000 --- a/Engine/lib/curl/CMake/curl-config.cmake.in +++ /dev/null @@ -1,35 +0,0 @@ -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### -@PACKAGE_INIT@ - -include(CMakeFindDependencyMacro) -if(@USE_OPENSSL@) - find_dependency(OpenSSL @OPENSSL_VERSION_MAJOR@) -endif() -if(@USE_ZLIB@) - find_dependency(ZLIB @ZLIB_VERSION_MAJOR@) -endif() - -include("${CMAKE_CURRENT_LIST_DIR}/@TARGETS_EXPORT_NAME@.cmake") -check_required_components("@PROJECT_NAME@") diff --git a/Engine/lib/curl/CMakeLists.txt b/Engine/lib/curl/CMakeLists.txt deleted file mode 100644 index f8cdf1aab..000000000 --- a/Engine/lib/curl/CMakeLists.txt +++ /dev/null @@ -1,1616 +0,0 @@ -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### -# curl/libcurl CMake script -# by Tetetest and Sukender (Benoit Neil) - -# TODO: -# The output .so file lacks the soname number which we currently have within the lib/Makefile.am file -# Add full (4 or 5 libs) SSL support -# Add INSTALL target (EXTRA_DIST variables in Makefile.am may be moved to Makefile.inc so that CMake/CPack is aware of what's to include). -# Check on all possible platforms -# Test with as many configurations possible (With or without any option) -# Create scripts that help keeping the CMake build system up to date (to reduce maintenance). According to Tetetest: -# - lists of headers that 'configure' checks for; -# - curl-specific tests (the ones that are in m4/curl-*.m4 files); -# - (most obvious thing:) curl version numbers. -# Add documentation subproject -# -# To check: -# (From Daniel Stenberg) The cmake build selected to run gcc with -fPIC on my box while the plain configure script did not. -# (From Daniel Stenberg) The gcc command line use neither -g nor any -O options. As a developer, I also treasure our configure scripts's --enable-debug option that sets a long range of "picky" compiler options. -cmake_minimum_required(VERSION 3.2...3.16 FATAL_ERROR) - -set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake;${CMAKE_MODULE_PATH}") -include(Utilities) -include(Macros) -include(CMakeDependentOption) -include(CheckCCompilerFlag) - -project(CURL C) - -file(STRINGS ${CURL_SOURCE_DIR}/include/curl/curlver.h CURL_VERSION_H_CONTENTS REGEX "#define LIBCURL_VERSION( |_NUM )") -string(REGEX MATCH "#define LIBCURL_VERSION \"[^\"]*" - CURL_VERSION ${CURL_VERSION_H_CONTENTS}) -string(REGEX REPLACE "[^\"]+\"" "" CURL_VERSION ${CURL_VERSION}) -string(REGEX MATCH "#define LIBCURL_VERSION_NUM 0x[0-9a-fA-F]+" - CURL_VERSION_NUM ${CURL_VERSION_H_CONTENTS}) -string(REGEX REPLACE "[^0]+0x" "" CURL_VERSION_NUM ${CURL_VERSION_NUM}) - - -# Setup package meta-data -# SET(PACKAGE "curl") -message(STATUS "curl version=[${CURL_VERSION}]") -# SET(PACKAGE_TARNAME "curl") -# SET(PACKAGE_NAME "curl") -# SET(PACKAGE_VERSION "-") -# SET(PACKAGE_STRING "curl-") -# SET(PACKAGE_BUGREPORT "a suitable curl mailing list => https://curl.se/mail/") -set(OPERATING_SYSTEM "${CMAKE_SYSTEM_NAME}") -if(CMAKE_C_COMPILER_TARGET) - set(OS "\"${CMAKE_C_COMPILER_TARGET}\"") -else() - set(OS "\"${CMAKE_SYSTEM_NAME}\"") -endif() - -include_directories(${CURL_SOURCE_DIR}/include) - -option(CURL_WERROR "Turn compiler warnings into errors" OFF) -option(PICKY_COMPILER "Enable picky compiler options" ON) -option(BUILD_CURL_EXE "Set to ON to build curl executable." ON) -option(BUILD_SHARED_LIBS "Build shared libraries" ON) -option(ENABLE_ARES "Set to ON to enable c-ares support" OFF) -if(WIN32) - option(CURL_STATIC_CRT "Set to ON to build libcurl with static CRT on Windows (/MT)." OFF) - option(ENABLE_UNICODE "Set to ON to use the Unicode version of the Windows API functions" OFF) - set(CURL_TARGET_WINDOWS_VERSION "" CACHE STRING "Minimum target Windows version as hex string") - if(CURL_TARGET_WINDOWS_VERSION) - add_definitions(-D_WIN32_WINNT=${CURL_TARGET_WINDOWS_VERSION}) - set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -D_WIN32_WINNT=${CURL_TARGET_WINDOWS_VERSION}") - endif() - if(ENABLE_UNICODE) - add_definitions(-DUNICODE -D_UNICODE) - if(MINGW) - add_compile_options(-municode) - endif() - endif() -endif() -option(CURL_LTO "Turn on compiler Link Time Optimizations" OFF) - -cmake_dependent_option(ENABLE_THREADED_RESOLVER "Set to ON to enable threaded DNS lookup" - ON "NOT ENABLE_ARES" - OFF) - -option(ENABLE_DEBUG "Set to ON to enable curl debug features" OFF) -option(ENABLE_CURLDEBUG "Set to ON to build with TrackMemory feature enabled" OFF) - -if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG) - if(PICKY_COMPILER) - foreach(_CCOPT -pedantic -Wall -W -Wpointer-arith -Wwrite-strings -Wunused -Wshadow -Winline -Wnested-externs -Wmissing-declarations -Wmissing-prototypes -Wfloat-equal -Wsign-compare -Wundef -Wendif-labels -Wstrict-prototypes -Wdeclaration-after-statement -Wstrict-aliasing=3 -Wcast-align -Wtype-limits -Wold-style-declaration -Wmissing-parameter-type -Wempty-body -Wclobbered -Wignored-qualifiers -Wconversion -Wvla -Wdouble-promotion -Wenum-conversion -Warith-conversion) - # surprisingly, CHECK_C_COMPILER_FLAG needs a new variable to store each new - # test result in. - string(MAKE_C_IDENTIFIER "OPT${_CCOPT}" _optvarname) - check_c_compiler_flag(${_CCOPT} ${_optvarname}) - if(${_optvarname}) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_CCOPT}") - endif() - endforeach() - foreach(_CCOPT long-long multichar format-nonliteral sign-conversion system-headers pedantic-ms-format) - # GCC only warns about unknown -Wno- options if there are also other diagnostic messages, - # so test for the positive form instead - string(MAKE_C_IDENTIFIER "OPT${_CCOPT}" _optvarname) - check_c_compiler_flag("-W${_CCOPT}" ${_optvarname}) - if(${_optvarname}) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-${_CCOPT}") - endif() - endforeach() - endif() -endif() - -if(ENABLE_DEBUG) - # DEBUGBUILD will be defined only for Debug builds - set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS $<$:DEBUGBUILD>) - set(ENABLE_CURLDEBUG ON) -endif() - -if(ENABLE_CURLDEBUG) - set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS CURLDEBUG) -endif() - -# For debug libs and exes, add "-d" postfix -if(NOT DEFINED CMAKE_DEBUG_POSTFIX) - set(CMAKE_DEBUG_POSTFIX "-d") -endif() - -# initialize CURL_LIBS -set(CURL_LIBS "") - -if(ENABLE_ARES) - set(USE_ARES 1) - find_package(CARES REQUIRED) - list(APPEND CURL_LIBS ${CARES_LIBRARY}) -endif() - -include(CurlSymbolHiding) - -option(CURL_ENABLE_EXPORT_TARGET "to enable cmake export target" ON) -mark_as_advanced(CURL_ENABLE_EXPORT_TARGET) - -option(CURL_DISABLE_ALTSVC "disables alt-svc support" OFF) -mark_as_advanced(CURL_DISABLE_ALTSVC) -option(CURL_DISABLE_COOKIES "disables cookies support" OFF) -mark_as_advanced(CURL_DISABLE_COOKIES) -option(CURL_DISABLE_CRYPTO_AUTH "disables cryptographic authentication" OFF) -mark_as_advanced(CURL_DISABLE_CRYPTO_AUTH) -option(CURL_DISABLE_DICT "disables DICT" OFF) -mark_as_advanced(CURL_DISABLE_DICT) -option(CURL_DISABLE_DOH "disables DNS-over-HTTPS" OFF) -mark_as_advanced(CURL_DISABLE_DOH) -option(CURL_DISABLE_FILE "disables FILE" OFF) -mark_as_advanced(CURL_DISABLE_FILE) -option(CURL_DISABLE_FTP "disables FTP" OFF) -mark_as_advanced(CURL_DISABLE_FTP) -option(CURL_DISABLE_GETOPTIONS "disables curl_easy_options API for existing options to curl_easy_setopt" OFF) -mark_as_advanced(CURL_DISABLE_GETOPTIONS) -option(CURL_DISABLE_GOPHER "disables Gopher" OFF) -mark_as_advanced(CURL_DISABLE_GOPHER) -option(CURL_DISABLE_HSTS "disables HSTS support" OFF) -mark_as_advanced(CURL_DISABLE_HSTS) -option(CURL_DISABLE_HTTP "disables HTTP" OFF) -mark_as_advanced(CURL_DISABLE_HTTP) -option(CURL_DISABLE_HTTP_AUTH "disables all HTTP authentication methods" OFF) -mark_as_advanced(CURL_DISABLE_HTTP_AUTH) -option(CURL_DISABLE_IMAP "disables IMAP" OFF) -mark_as_advanced(CURL_DISABLE_IMAP) -option(CURL_DISABLE_LDAP "disables LDAP" OFF) -mark_as_advanced(CURL_DISABLE_LDAP) -option(CURL_DISABLE_LDAPS "disables LDAPS" OFF) -mark_as_advanced(CURL_DISABLE_LDAPS) -option(CURL_DISABLE_LIBCURL_OPTION "disables --libcurl option from the curl tool" OFF) -mark_as_advanced(CURL_DISABLE_LIBCURL_OPTION) -option(CURL_DISABLE_MIME "disables MIME support" OFF) -mark_as_advanced(CURL_DISABLE_MIME) -option(CURL_DISABLE_MQTT "disables MQTT" OFF) -mark_as_advanced(CURL_DISABLE_MQTT) -option(CURL_DISABLE_NETRC "disables netrc parser" OFF) -mark_as_advanced(CURL_DISABLE_NETRC) -option(CURL_DISABLE_NTLM "disables NTLM support" OFF) -mark_as_advanced(CURL_DISABLE_NTLM) -option(CURL_DISABLE_PARSEDATE "disables date parsing" OFF) -mark_as_advanced(CURL_DISABLE_PARSEDATE) -option(CURL_DISABLE_POP3 "disables POP3" OFF) -mark_as_advanced(CURL_DISABLE_POP3) -option(CURL_DISABLE_PROGRESS_METER "disables built-in progress meter" OFF) -mark_as_advanced(CURL_DISABLE_PROGRESS_METER) -option(CURL_DISABLE_PROXY "disables proxy support" OFF) -mark_as_advanced(CURL_DISABLE_PROXY) -option(CURL_DISABLE_RTSP "disables RTSP" OFF) -mark_as_advanced(CURL_DISABLE_RTSP) -option(CURL_DISABLE_SHUFFLE_DNS "disables shuffle DNS feature" OFF) -mark_as_advanced(CURL_DISABLE_SHUFFLE_DNS) -option(CURL_DISABLE_SMB "disables SMB" OFF) -mark_as_advanced(CURL_DISABLE_SMB) -option(CURL_DISABLE_SMTP "disables SMTP" OFF) -mark_as_advanced(CURL_DISABLE_SMTP) -option(CURL_DISABLE_SOCKETPAIR "disables use of socketpair for curl_multi_poll" OFF) -mark_as_advanced(CURL_DISABLE_SOCKETPAIR) -option(CURL_DISABLE_TELNET "disables Telnet" OFF) -mark_as_advanced(CURL_DISABLE_TELNET) -option(CURL_DISABLE_TFTP "disables TFTP" OFF) -mark_as_advanced(CURL_DISABLE_TFTP) -option(CURL_DISABLE_VERBOSE_STRINGS "disables verbose strings" OFF) -mark_as_advanced(CURL_DISABLE_VERBOSE_STRINGS) - -# Corresponds to HTTP_ONLY in lib/curl_setup.h -option(HTTP_ONLY "disables all protocols except HTTP (This overrides all CURL_DISABLE_* options)" OFF) -mark_as_advanced(HTTP_ONLY) - -if(HTTP_ONLY) - set(CURL_DISABLE_DICT ON) - set(CURL_DISABLE_FILE ON) - set(CURL_DISABLE_FTP ON) - set(CURL_DISABLE_GOPHER ON) - set(CURL_DISABLE_IMAP ON) - set(CURL_DISABLE_LDAP ON) - set(CURL_DISABLE_LDAPS ON) - set(CURL_DISABLE_MQTT ON) - set(CURL_DISABLE_POP3 ON) - set(CURL_DISABLE_RTSP ON) - set(CURL_DISABLE_SMB ON) - set(CURL_DISABLE_SMTP ON) - set(CURL_DISABLE_TELNET ON) - set(CURL_DISABLE_TFTP ON) -endif() - -option(ENABLE_IPV6 "Define if you want to enable IPv6 support" ON) -mark_as_advanced(ENABLE_IPV6) -if(ENABLE_IPV6 AND NOT WIN32) - include(CheckStructHasMember) - check_struct_has_member("struct sockaddr_in6" sin6_addr "netinet/in.h" - HAVE_SOCKADDR_IN6_SIN6_ADDR) - check_struct_has_member("struct sockaddr_in6" sin6_scope_id "netinet/in.h" - HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID) - if(NOT HAVE_SOCKADDR_IN6_SIN6_ADDR) - message(WARNING "struct sockaddr_in6 not available, disabling IPv6 support") - # Force the feature off as this name is used as guard macro... - set(ENABLE_IPV6 OFF - CACHE BOOL "Define if you want to enable IPv6 support" FORCE) - endif() - - if(CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND NOT ENABLE_ARES) - set(use_core_foundation ON) - - find_library(SYSTEMCONFIGURATION_FRAMEWORK "SystemConfiguration") - if(NOT SYSTEMCONFIGURATION_FRAMEWORK) - message(FATAL_ERROR "SystemConfiguration framework not found") - endif() - - list(APPEND CURL_LIBS "-framework SystemConfiguration") - endif() -endif() - -if(USE_MANUAL) - #nroff is currently only used when USE_MANUAL is set, so we can prevent the warning of no *NROFF if USE_MANUAL is OFF (or not defined), by not even looking for NROFF.. - curl_nroff_check() -endif() -find_package(Perl) - -cmake_dependent_option(ENABLE_MANUAL "to provide the built-in manual" - ON "NROFF_USEFUL;PERL_FOUND" - OFF) - -if(ENABLE_MANUAL) - set(USE_MANUAL ON) -endif() - -if(CURL_STATIC_CRT) - set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") - set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /MT") - set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /MTd") -endif() - -# Disable warnings on Borland to avoid changing 3rd party code. -if(BORLAND) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w-") -endif() - -# If we are on AIX, do the _ALL_SOURCE magic -if(${CMAKE_SYSTEM_NAME} MATCHES AIX) - set(_ALL_SOURCE 1) -endif() - -# Include all the necessary files for macros -include(CMakePushCheckState) -include(CheckFunctionExists) -include(CheckIncludeFile) -include(CheckIncludeFiles) -include(CheckLibraryExists) -include(CheckSymbolExists) -include(CheckTypeSize) -include(CheckCSourceCompiles) - -# On windows preload settings -if(WIN32) - set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -D_WINSOCKAPI_=") - include(${CMAKE_CURRENT_SOURCE_DIR}/CMake/Platforms/WindowsCache.cmake) -endif() - -if(ENABLE_THREADED_RESOLVER) - find_package(Threads REQUIRED) - if(WIN32) - set(USE_THREADS_WIN32 ON) - else() - set(USE_THREADS_POSIX ${CMAKE_USE_PTHREADS_INIT}) - set(HAVE_PTHREAD_H ${CMAKE_USE_PTHREADS_INIT}) - endif() - set(CURL_LIBS ${CURL_LIBS} ${CMAKE_THREAD_LIBS_INIT}) -endif() - -# Check for all needed libraries -check_library_exists_concat("socket" connect HAVE_LIBSOCKET) - -check_function_exists(gethostname HAVE_GETHOSTNAME) - -if(WIN32) - check_library_exists_concat("ws2_32" getch HAVE_LIBWS2_32) - check_library_exists_concat("winmm" getch HAVE_LIBWINMM) -endif() - -# This check below for use of deprecated symbols is only temporary and is to -# be removed again after a year's service. Remove after November 25, 2022. -set(CURL_RECONFIG_REQUIRED 0) -foreach(_LIB GSSAPI OPENLDAP LIBSSH LIBSSH2 BEARSSL MBEDTLS NSS OPENSSL - SCHANNEL SECTRANSP WOLFSSL) - if(CMAKE_USE_${_LIB}) - set(CURL_RECONFIG_REQUIRED 1) - message(SEND_ERROR "The option CMAKE_USE_${_LIB} was renamed to CURL_USE_${_LIB}.") - endif() -endforeach() -if(CMAKE_USE_WINSSL) - set(CURL_RECONFIG_REQUIRED 1) - message(SEND_ERROR "The option CMAKE_USE_WINSSL was renamed to CURL_USE_SCHANNEL.") -endif() -if(CURL_RECONFIG_REQUIRED) - message(FATAL_ERROR "Reconfig required") -endif() - -# check SSL libraries -# TODO support GnuTLS -option(CURL_ENABLE_SSL "Enable SSL support" ON) - -if(APPLE) - cmake_dependent_option(CURL_USE_SECTRANSP "enable Apple OS native SSL/TLS" OFF CURL_ENABLE_SSL OFF) -endif() -if(WIN32) - cmake_dependent_option(CURL_USE_SCHANNEL "enable Windows native SSL/TLS" OFF CURL_ENABLE_SSL OFF) - cmake_dependent_option(CURL_WINDOWS_SSPI "Use windows libraries to allow NTLM authentication without openssl" ON - CURL_USE_SCHANNEL OFF) -endif() -cmake_dependent_option(CURL_USE_MBEDTLS "Enable mbedTLS for SSL/TLS" OFF CURL_ENABLE_SSL OFF) -cmake_dependent_option(CURL_USE_BEARSSL "Enable BearSSL for SSL/TLS" OFF CURL_ENABLE_SSL OFF) -cmake_dependent_option(CURL_USE_NSS "Enable NSS for SSL/TLS" OFF CURL_ENABLE_SSL OFF) -cmake_dependent_option(CURL_USE_WOLFSSL "enable wolfSSL for SSL/TLS" OFF CURL_ENABLE_SSL OFF) - -set(openssl_default ON) -if(WIN32 OR CURL_USE_SECTRANSP OR CURL_USE_SCHANNEL OR CURL_USE_MBEDTLS OR CURL_USE_NSS OR CURL_USE_WOLFSSL) - set(openssl_default OFF) -endif() -cmake_dependent_option(CURL_USE_OPENSSL "Use OpenSSL code. Experimental" ${openssl_default} CURL_ENABLE_SSL OFF) -option(CURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG "Disable automatic loading of OpenSSL configuration" OFF) - -count_true(enabled_ssl_options_count - CURL_USE_SCHANNEL - CURL_USE_SECTRANSP - CURL_USE_OPENSSL - CURL_USE_MBEDTLS - CURL_USE_BEARSSL - CURL_USE_NSS - CURL_USE_WOLFSSL -) -if(enabled_ssl_options_count GREATER "1") - set(CURL_WITH_MULTI_SSL ON) -endif() - -if(CURL_USE_SCHANNEL) - set(SSL_ENABLED ON) - set(USE_SCHANNEL ON) # Windows native SSL/TLS support - set(USE_WINDOWS_SSPI ON) # CURL_USE_SCHANNEL implies CURL_WINDOWS_SSPI -endif() -if(CURL_WINDOWS_SSPI) - set(USE_WINDOWS_SSPI ON) - set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -DSECURITY_WIN32") -endif() - -if(CURL_USE_SECTRANSP) - set(use_core_foundation ON) - - find_library(SECURITY_FRAMEWORK "Security") - if(NOT SECURITY_FRAMEWORK) - message(FATAL_ERROR "Security framework not found") - endif() - - set(SSL_ENABLED ON) - set(USE_SECTRANSP ON) - list(APPEND CURL_LIBS "-framework Security") -endif() - -if(use_core_foundation) - find_library(COREFOUNDATION_FRAMEWORK "CoreFoundation") - if(NOT COREFOUNDATION_FRAMEWORK) - message(FATAL_ERROR "CoreFoundation framework not found") - endif() - - list(APPEND CURL_LIBS "-framework CoreFoundation") -endif() - -if(CURL_USE_OPENSSL) - find_package(OpenSSL REQUIRED) - set(SSL_ENABLED ON) - set(USE_OPENSSL ON) - - # Depend on OpenSSL via imported targets if supported by the running - # version of CMake. This allows our dependents to get our dependencies - # transitively. - if(NOT CMAKE_VERSION VERSION_LESS 3.4) - list(APPEND CURL_LIBS OpenSSL::SSL OpenSSL::Crypto) - else() - list(APPEND CURL_LIBS ${OPENSSL_LIBRARIES}) - include_directories(${OPENSSL_INCLUDE_DIR}) - endif() - - set(CMAKE_REQUIRED_INCLUDES ${OPENSSL_INCLUDE_DIR}) - check_symbol_exists(RAND_egd "${CURL_INCLUDES}" HAVE_RAND_EGD) - check_symbol_exists(OPENSSL_IS_BORINGSSL "openssl/base.h" HAVE_BORINGSSL) - - add_definitions(-DOPENSSL_SUPPRESS_DEPRECATED) -endif() - -if(CURL_USE_MBEDTLS) - find_package(MbedTLS REQUIRED) - set(SSL_ENABLED ON) - set(USE_MBEDTLS ON) - list(APPEND CURL_LIBS ${MBEDTLS_LIBRARIES}) - include_directories(${MBEDTLS_INCLUDE_DIRS}) -endif() - -if(CURL_USE_BEARSSL) - find_package(BearSSL REQUIRED) - set(SSL_ENABLED ON) - set(USE_BEARSSL ON) - list(APPEND CURL_LIBS ${BEARSSL_LIBRARY}) - include_directories(${BEARSSL_INCLUDE_DIRS}) -endif() - -if(CURL_USE_WOLFSSL) - find_package(WolfSSL REQUIRED) - set(SSL_ENABLED ON) - set(USE_WOLFSSL ON) - list(APPEND CURL_LIBS ${WolfSSL_LIBRARIES}) - include_directories(${WolfSSL_INCLUDE_DIRS}) -endif() - -if(CURL_USE_NSS) - find_package(NSS REQUIRED) - include_directories(${NSS_INCLUDE_DIRS}) - list(APPEND CURL_LIBS ${NSS_LIBRARIES}) - set(SSL_ENABLED ON) - set(USE_NSS ON) - cmake_push_check_state() - set(CMAKE_REQUIRED_INCLUDES ${NSS_INCLUDE_DIRS}) - set(CMAKE_REQUIRED_LIBRARIES ${NSS_LIBRARIES}) - check_symbol_exists(PK11_CreateManagedGenericObject "pk11pub.h" HAVE_PK11_CREATEMANAGEDGENERICOBJECT) - cmake_pop_check_state() -endif() - -option(USE_NGHTTP2 "Use Nghttp2 library" OFF) -if(USE_NGHTTP2) - find_package(NGHTTP2 REQUIRED) - include_directories(${NGHTTP2_INCLUDE_DIRS}) - list(APPEND CURL_LIBS ${NGHTTP2_LIBRARIES}) -endif() - -function(CheckQuicSupportInOpenSSL) - # Be sure that the OpenSSL library actually supports QUIC. - cmake_push_check_state() - set(CMAKE_REQUIRED_INCLUDES "${OPENSSL_INCLUDE_DIR}") - set(CMAKE_REQUIRED_LIBRARIES "${OPENSSL_LIBRARIES}") - check_symbol_exists(SSL_CTX_set_quic_method "openssl/ssl.h" HAVE_SSL_CTX_SET_QUIC_METHOD) - if(NOT HAVE_SSL_CTX_SET_QUIC_METHOD) - message(FATAL_ERROR "QUIC support is missing in OpenSSL/BoringSSL. Try setting -DOPENSSL_ROOT_DIR") - endif() - cmake_pop_check_state() -endfunction() - -option(USE_NGTCP2 "Use ngtcp2 and nghttp3 libraries for HTTP/3 support" OFF) -if(USE_NGTCP2) - if(USE_OPENSSL) - if(HAVE_BORINGSSL) - find_package(NGTCP2 REQUIRED BoringSSL) - else() - find_package(NGTCP2 REQUIRED OpenSSL) - endif() - CheckQuicSupportInOpenSSL() - elseif(USE_GNUTLS) - # TODO add GnuTLS support as vtls library. - find_package(NGTCP2 REQUIRED GnuTLS) - else() - message(FATAL_ERROR "ngtcp2 requires OpenSSL or GnuTLS") - endif() - set(USE_NGTCP2 ON) - include_directories(${NGTCP2_INCLUDE_DIRS}) - list(APPEND CURL_LIBS ${NGTCP2_LIBRARIES}) - - find_package(NGHTTP3 REQUIRED) - set(USE_NGHTTP3 ON) - include_directories(${NGHTTP3_INCLUDE_DIRS}) - list(APPEND CURL_LIBS ${NGHTTP3_LIBRARIES}) -endif() - -option(USE_QUICHE "Use quiche library for HTTP/3 support" OFF) -if(USE_QUICHE) - if(USE_NGTCP2) - message(FATAL_ERROR "Only one HTTP/3 backend can be selected!") - endif() - find_package(QUICHE REQUIRED) - CheckQuicSupportInOpenSSL() - set(USE_QUICHE ON) - include_directories(${QUICHE_INCLUDE_DIRS}) - list(APPEND CURL_LIBS ${QUICHE_LIBRARIES}) - cmake_push_check_state() - set(CMAKE_REQUIRED_INCLUDES "${QUICHE_INCLUDE_DIRS}") - set(CMAKE_REQUIRED_LIBRARIES "${QUICHE_LIBRARIES}") - check_symbol_exists(quiche_conn_set_qlog_fd "quiche.h" HAVE_QUICHE_CONN_SET_QLOG_FD) - cmake_pop_check_state() -endif() - -option(USE_MSH3 "Use msquic library for HTTP/3 support" OFF) -if(USE_MSH3) - if(USE_NGTCP2 OR USE_QUICHE) - message(FATAL_ERROR "Only one HTTP/3 backend can be selected!") - endif() - set(USE_MSH3 ON) - include_directories(${MSH3_INCLUDE_DIRS}) - list(APPEND CURL_LIBS ${MSH3_LIBRARIES}) -endif() - -if(NOT CURL_DISABLE_LDAP) - if(WIN32) - option(USE_WIN32_LDAP "Use Windows LDAP implementation" ON) - if(USE_WIN32_LDAP) - check_library_exists_concat("wldap32" cldap_open HAVE_WLDAP32) - if(NOT HAVE_WLDAP32) - set(USE_WIN32_LDAP OFF) - endif() - endif() - endif() - - option(CURL_USE_OPENLDAP "Use OpenLDAP code." OFF) - mark_as_advanced(CURL_USE_OPENLDAP) - set(CMAKE_LDAP_LIB "ldap" CACHE STRING "Name or full path to ldap library") - set(CMAKE_LBER_LIB "lber" CACHE STRING "Name or full path to lber library") - - if(CURL_USE_OPENLDAP AND USE_WIN32_LDAP) - message(FATAL_ERROR "Cannot use USE_WIN32_LDAP and CURL_USE_OPENLDAP at the same time") - endif() - - # Now that we know, we're not using windows LDAP... - if(USE_WIN32_LDAP) - check_include_file_concat("winldap.h" HAVE_WINLDAP_H) - else() - # Check for LDAP - set(CMAKE_REQUIRED_LIBRARIES ${OPENSSL_LIBRARIES}) - check_library_exists_concat(${CMAKE_LDAP_LIB} ldap_init HAVE_LIBLDAP) - check_library_exists_concat(${CMAKE_LBER_LIB} ber_init HAVE_LIBLBER) - - set(CMAKE_REQUIRED_INCLUDES_BAK ${CMAKE_REQUIRED_INCLUDES}) - set(CMAKE_LDAP_INCLUDE_DIR "" CACHE STRING "Path to LDAP include directory") - if(CMAKE_LDAP_INCLUDE_DIR) - list(APPEND CMAKE_REQUIRED_INCLUDES ${CMAKE_LDAP_INCLUDE_DIR}) - endif() - check_include_file_concat("ldap.h" HAVE_LDAP_H) - check_include_file_concat("lber.h" HAVE_LBER_H) - - if(NOT HAVE_LDAP_H) - message(STATUS "LDAP_H not found CURL_DISABLE_LDAP set ON") - set(CURL_DISABLE_LDAP ON CACHE BOOL "" FORCE) - set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES_BAK}) #LDAP includes won't be used - elseif(NOT HAVE_LIBLDAP) - message(STATUS "LDAP library '${CMAKE_LDAP_LIB}' not found CURL_DISABLE_LDAP set ON") - set(CURL_DISABLE_LDAP ON CACHE BOOL "" FORCE) - set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES_BAK}) #LDAP includes won't be used - else() - if(CURL_USE_OPENLDAP) - set(USE_OPENLDAP ON) - endif() - if(CMAKE_LDAP_INCLUDE_DIR) - include_directories(${CMAKE_LDAP_INCLUDE_DIR}) - endif() - set(NEED_LBER_H ON) - set(_HEADER_LIST) - if(HAVE_WINDOWS_H) - list(APPEND _HEADER_LIST "windows.h") - endif() - if(HAVE_SYS_TYPES_H) - list(APPEND _HEADER_LIST "sys/types.h") - endif() - list(APPEND _HEADER_LIST "ldap.h") - - set(_SRC_STRING "") - foreach(_HEADER ${_HEADER_LIST}) - set(_INCLUDE_STRING "${_INCLUDE_STRING}#include <${_HEADER}>\n") - endforeach() - - set(_SRC_STRING - " - ${_INCLUDE_STRING} - int main(int argc, char ** argv) - { - BerValue *bvp = NULL; - BerElement *bep = ber_init(bvp); - ber_free(bep, 1); - return 0; - }" - ) - set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -DLDAP_DEPRECATED=1") - list(APPEND CMAKE_REQUIRED_LIBRARIES ${CMAKE_LDAP_LIB}) - if(HAVE_LIBLBER) - list(APPEND CMAKE_REQUIRED_LIBRARIES ${CMAKE_LBER_LIB}) - endif() - check_c_source_compiles("${_SRC_STRING}" NOT_NEED_LBER_H) - unset(CMAKE_REQUIRED_LIBRARIES) - - if(NOT_NEED_LBER_H) - set(NEED_LBER_H OFF) - else() - set(CURL_TEST_DEFINES "${CURL_TEST_DEFINES} -DNEED_LBER_H") - endif() - endif() - endif() -endif() - -# No ldap, no ldaps. -if(CURL_DISABLE_LDAP) - if(NOT CURL_DISABLE_LDAPS) - message(STATUS "LDAP needs to be enabled to support LDAPS") - set(CURL_DISABLE_LDAPS ON CACHE BOOL "" FORCE) - endif() -endif() - -if(NOT CURL_DISABLE_LDAPS) - check_include_file_concat("ldap_ssl.h" HAVE_LDAP_SSL_H) -endif() - -# Check for idn2 -option(USE_LIBIDN2 "Use libidn2 for IDN support" ON) -if(USE_LIBIDN2) - check_library_exists_concat("idn2" idn2_lookup_ul HAVE_LIBIDN2) -else() - set(HAVE_LIBIDN2 OFF) -endif() - -if(WIN32) - option(USE_WIN32_IDN "Use WinIDN for IDN support" OFF) - if(USE_WIN32_IDN) - list(APPEND CURL_LIBS "normaliz") - set(WANT_IDN_PROTOTYPES ON) - endif() -endif() - -set(HAVE_LIBZ OFF) -set(HAVE_ZLIB_H OFF) -set(USE_ZLIB OFF) -optional_dependency(ZLIB) -if(ZLIB_FOUND) - set(HAVE_ZLIB_H ON) - set(HAVE_LIBZ ON) - set(USE_ZLIB ON) - - # Depend on ZLIB via imported targets if supported by the running - # version of CMake. This allows our dependents to get our dependencies - # transitively. - if(NOT CMAKE_VERSION VERSION_LESS 3.4) - list(APPEND CURL_LIBS ZLIB::ZLIB) - else() - list(APPEND CURL_LIBS ${ZLIB_LIBRARIES}) - include_directories(${ZLIB_INCLUDE_DIRS}) - endif() - list(APPEND CMAKE_REQUIRED_INCLUDES ${ZLIB_INCLUDE_DIRS}) -endif() - -option(CURL_BROTLI "Set to ON to enable building curl with brotli support." OFF) -set(HAVE_BROTLI OFF) -if(CURL_BROTLI) - find_package(Brotli QUIET) - if(BROTLI_FOUND) - set(HAVE_BROTLI ON) - list(APPEND CURL_LIBS ${BROTLI_LIBRARIES}) - include_directories(${BROTLI_INCLUDE_DIRS}) - list(APPEND CMAKE_REQUIRED_INCLUDES ${BROTLI_INCLUDE_DIRS}) - endif() -endif() - -option(CURL_ZSTD "Set to ON to enable building curl with zstd support." OFF) -set(HAVE_ZSTD OFF) -if(CURL_ZSTD) - find_package(Zstd REQUIRED) - cmake_push_check_state() - set(CMAKE_REQUIRED_INCLUDES ${Zstd_INCLUDE_DIRS}) - set(CMAKE_REQUIRED_LIBRARIES ${Zstd_LIBRARIES}) - check_symbol_exists(ZSTD_createDStream "zstd.h" HAVE_ZSTD_CREATEDSTREAM) - cmake_pop_check_state() - if(Zstd_FOUND AND HAVE_ZSTD_CREATEDSTREAM) - set(HAVE_ZSTD ON) - list(APPEND CURL_LIBS ${Zstd_LIBRARIES}) - include_directories(${Zstd_INCLUDE_DIRS}) - endif() -endif() - -#libpsl -option(CURL_USE_LIBPSL "Use libPSL" ON) -mark_as_advanced(CURL_USE_LIBPSL) -set(USE_LIBPSL OFF) -set(HAVE_LIBPSL OFF) -set(HAVE_LIBSPSL_H OFF) - -if(CURL_USE_LIBPSL) - find_package(LibPSL) - if(LIBPSL_FOUND) - list(APPEND CURL_LIBS ${LIBPSL_LIBRARY}) - set(CMAKE_REQUIRED_LIBRARIES ${LIBPSL_LIBRARY}) - list(APPEND CMAKE_REQUIRED_INCLUDES "${LIBPSL_INCLUDE_DIR}") - include_directories("${LIBPSL_INCLUDE_DIR}") - set(HAVE_LIBPSL ON) - set(USE_LIBPSL ON) - - # find_package has already found the headers - set(HAVE_LIBPSL_H ON) - set(CURL_INCLUDES ${CURL_INCLUDES} "${LIBPSL_INCLUDE_DIR}/libpsl.h") - set(CURL_TEST_DEFINES "${CURL_TEST_DEFINES} -DHAVE_LIBPSL_H") - unset(CMAKE_REQUIRED_LIBRARIES) - endif() -endif() - -#libSSH2 -option(CURL_USE_LIBSSH2 "Use libSSH2" ON) -mark_as_advanced(CURL_USE_LIBSSH2) -set(USE_LIBSSH2 OFF) -set(HAVE_LIBSSH2 OFF) -set(HAVE_LIBSSH2_H OFF) - -if(CURL_USE_LIBSSH2) - find_package(LibSSH2) - if(LIBSSH2_FOUND) - list(APPEND CURL_LIBS ${LIBSSH2_LIBRARY}) - set(CMAKE_REQUIRED_LIBRARIES ${LIBSSH2_LIBRARY}) - list(APPEND CMAKE_REQUIRED_INCLUDES "${LIBSSH2_INCLUDE_DIR}") - include_directories("${LIBSSH2_INCLUDE_DIR}") - set(HAVE_LIBSSH2 ON) - set(USE_LIBSSH2 ON) - - # find_package has already found the headers - set(HAVE_LIBSSH2_H ON) - set(CURL_INCLUDES ${CURL_INCLUDES} "${LIBSSH2_INCLUDE_DIR}/libssh2.h") - set(CURL_TEST_DEFINES "${CURL_TEST_DEFINES} -DHAVE_LIBSSH2_H") - unset(CMAKE_REQUIRED_LIBRARIES) - endif() -endif() - -# libssh -option(CURL_USE_LIBSSH "Use libSSH" OFF) -mark_as_advanced(CURL_USE_LIBSSH) -if(NOT HAVE_LIBSSH2 AND CURL_USE_LIBSSH) - find_package(libssh CONFIG) - if(libssh_FOUND) - message(STATUS "Found libssh ${libssh_VERSION}") - # Use imported target for include and library paths. - list(APPEND CURL_LIBS ssh) - set(USE_LIBSSH ON) - set(HAVE_LIBSSH_LIBSSH_H 1) - endif() -endif() - -option(CURL_USE_GSSAPI "Use GSSAPI implementation (right now only Heimdal is supported with CMake build)" OFF) -mark_as_advanced(CURL_USE_GSSAPI) - -if(CURL_USE_GSSAPI) - find_package(GSS) - - set(HAVE_GSSAPI ${GSS_FOUND}) - if(GSS_FOUND) - - message(STATUS "Found ${GSS_FLAVOUR} GSSAPI version: \"${GSS_VERSION}\"") - - list(APPEND CMAKE_REQUIRED_INCLUDES ${GSS_INCLUDE_DIR}) - check_include_file_concat("gssapi/gssapi.h" HAVE_GSSAPI_GSSAPI_H) - check_include_file_concat("gssapi/gssapi_generic.h" HAVE_GSSAPI_GSSAPI_GENERIC_H) - check_include_file_concat("gssapi/gssapi_krb5.h" HAVE_GSSAPI_GSSAPI_KRB5_H) - - if(GSS_FLAVOUR STREQUAL "Heimdal") - set(HAVE_GSSHEIMDAL ON) - else() # MIT - set(HAVE_GSSMIT ON) - set(_INCLUDE_LIST "") - if(HAVE_GSSAPI_GSSAPI_H) - list(APPEND _INCLUDE_LIST "gssapi/gssapi.h") - endif() - if(HAVE_GSSAPI_GSSAPI_GENERIC_H) - list(APPEND _INCLUDE_LIST "gssapi/gssapi_generic.h") - endif() - if(HAVE_GSSAPI_GSSAPI_KRB5_H) - list(APPEND _INCLUDE_LIST "gssapi/gssapi_krb5.h") - endif() - - string(REPLACE ";" " " _COMPILER_FLAGS_STR "${GSS_COMPILER_FLAGS}") - string(REPLACE ";" " " _LINKER_FLAGS_STR "${GSS_LINKER_FLAGS}") - - foreach(_dir ${GSS_LINK_DIRECTORIES}) - set(_LINKER_FLAGS_STR "${_LINKER_FLAGS_STR} -L\"${_dir}\"") - endforeach() - - set(CMAKE_REQUIRED_FLAGS "${_COMPILER_FLAGS_STR} ${_LINKER_FLAGS_STR}") - set(CMAKE_REQUIRED_LIBRARIES ${GSS_LIBRARIES}) - check_symbol_exists("GSS_C_NT_HOSTBASED_SERVICE" ${_INCLUDE_LIST} HAVE_GSS_C_NT_HOSTBASED_SERVICE) - if(NOT HAVE_GSS_C_NT_HOSTBASED_SERVICE) - set(HAVE_OLD_GSSMIT ON) - endif() - unset(CMAKE_REQUIRED_LIBRARIES) - - endif() - - include_directories(${GSS_INCLUDE_DIR}) - link_directories(${GSS_LINK_DIRECTORIES}) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GSS_COMPILER_FLAGS}") - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${GSS_LINKER_FLAGS}") - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${GSS_LINKER_FLAGS}") - set(CMAKE_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS} ${GSS_LINKER_FLAGS}") - list(APPEND CURL_LIBS ${GSS_LIBRARIES}) - - else() - message(WARNING "GSSAPI support has been requested but no supporting libraries found. Skipping.") - endif() -endif() - -option(ENABLE_UNIX_SOCKETS "Define if you want Unix domain sockets support" ON) -if(ENABLE_UNIX_SOCKETS) - include(CheckStructHasMember) - if(WIN32) - set(USE_UNIX_SOCKETS ON) - else() - check_struct_has_member("struct sockaddr_un" sun_path "sys/un.h" USE_UNIX_SOCKETS) - endif() -else() - unset(USE_UNIX_SOCKETS CACHE) -endif() - - -# -# CA handling -# -set(CURL_CA_BUNDLE "auto" CACHE STRING - "Path to the CA bundle. Set 'none' to disable or 'auto' for auto-detection. Defaults to 'auto'.") -set(CURL_CA_FALLBACK OFF CACHE BOOL - "Set ON to use built-in CA store of TLS backend. Defaults to OFF") -set(CURL_CA_PATH "auto" CACHE STRING - "Location of default CA path. Set 'none' to disable or 'auto' for auto-detection. Defaults to 'auto'.") - -if("${CURL_CA_BUNDLE}" STREQUAL "") - message(FATAL_ERROR "Invalid value of CURL_CA_BUNDLE. Use 'none', 'auto' or file path.") -elseif("${CURL_CA_BUNDLE}" STREQUAL "none") - unset(CURL_CA_BUNDLE CACHE) -elseif("${CURL_CA_BUNDLE}" STREQUAL "auto") - unset(CURL_CA_BUNDLE CACHE) - set(CURL_CA_BUNDLE_AUTODETECT TRUE) -else() - set(CURL_CA_BUNDLE_SET TRUE) -endif() - -if("${CURL_CA_PATH}" STREQUAL "") - message(FATAL_ERROR "Invalid value of CURL_CA_PATH. Use 'none', 'auto' or directory path.") -elseif("${CURL_CA_PATH}" STREQUAL "none") - unset(CURL_CA_PATH CACHE) -elseif("${CURL_CA_PATH}" STREQUAL "auto") - unset(CURL_CA_PATH CACHE) - if(NOT USE_NSS) - set(CURL_CA_PATH_AUTODETECT TRUE) - endif() -else() - set(CURL_CA_PATH_SET TRUE) -endif() - -if(CURL_CA_BUNDLE_SET AND CURL_CA_PATH_AUTODETECT) - # Skip autodetection of unset CA path because CA bundle is set explicitly -elseif(CURL_CA_PATH_SET AND CURL_CA_BUNDLE_AUTODETECT) - # Skip autodetection of unset CA bundle because CA path is set explicitly -elseif(CURL_CA_PATH_AUTODETECT OR CURL_CA_BUNDLE_AUTODETECT) - # first try autodetecting a CA bundle, then a CA path - - if(CURL_CA_BUNDLE_AUTODETECT) - set(SEARCH_CA_BUNDLE_PATHS - /etc/ssl/certs/ca-certificates.crt - /etc/pki/tls/certs/ca-bundle.crt - /usr/share/ssl/certs/ca-bundle.crt - /usr/local/share/certs/ca-root-nss.crt - /etc/ssl/cert.pem) - - foreach(SEARCH_CA_BUNDLE_PATH ${SEARCH_CA_BUNDLE_PATHS}) - if(EXISTS "${SEARCH_CA_BUNDLE_PATH}") - message(STATUS "Found CA bundle: ${SEARCH_CA_BUNDLE_PATH}") - set(CURL_CA_BUNDLE "${SEARCH_CA_BUNDLE_PATH}" CACHE STRING - "Path to the CA bundle. Set 'none' to disable or 'auto' for auto-detection. Defaults to 'auto'.") - set(CURL_CA_BUNDLE_SET TRUE CACHE BOOL "Path to the CA bundle has been set") - break() - endif() - endforeach() - endif() - - if(CURL_CA_PATH_AUTODETECT AND (NOT CURL_CA_PATH_SET)) - if(EXISTS "/etc/ssl/certs") - set(CURL_CA_PATH "/etc/ssl/certs" CACHE STRING - "Location of default CA path. Set 'none' to disable or 'auto' for auto-detection. Defaults to 'auto'.") - set(CURL_CA_PATH_SET TRUE CACHE BOOL "Path to the CA bundle has been set") - endif() - endif() -endif() - -if(CURL_CA_PATH_SET AND NOT USE_OPENSSL AND NOT USE_MBEDTLS) - message(STATUS - "CA path only supported by OpenSSL, GnuTLS or mbed TLS. " - "Set CURL_CA_PATH=none or enable one of those TLS backends.") -endif() - -# Check for header files -if(NOT UNIX) - check_include_file_concat("windows.h" HAVE_WINDOWS_H) - check_include_file_concat("ws2tcpip.h" HAVE_WS2TCPIP_H) - check_include_file_concat("winsock2.h" HAVE_WINSOCK2_H) - check_include_file_concat("wincrypt.h" HAVE_WINCRYPT_H) -endif() - -check_include_file_concat("inttypes.h" HAVE_INTTYPES_H) -check_include_file_concat("sys/filio.h" HAVE_SYS_FILIO_H) -check_include_file_concat("sys/ioctl.h" HAVE_SYS_IOCTL_H) -check_include_file_concat("sys/param.h" HAVE_SYS_PARAM_H) -check_include_file_concat("sys/poll.h" HAVE_SYS_POLL_H) -check_include_file_concat("sys/resource.h" HAVE_SYS_RESOURCE_H) -check_include_file_concat("sys/select.h" HAVE_SYS_SELECT_H) -check_include_file_concat("sys/socket.h" HAVE_SYS_SOCKET_H) -check_include_file_concat("sys/sockio.h" HAVE_SYS_SOCKIO_H) -check_include_file_concat("sys/stat.h" HAVE_SYS_STAT_H) -check_include_file_concat("sys/time.h" HAVE_SYS_TIME_H) -check_include_file_concat("sys/types.h" HAVE_SYS_TYPES_H) -check_include_file_concat("sys/un.h" HAVE_SYS_UN_H) -check_include_file_concat("sys/utime.h" HAVE_SYS_UTIME_H) -check_include_file_concat("sys/xattr.h" HAVE_SYS_XATTR_H) -check_include_file_concat("arpa/inet.h" HAVE_ARPA_INET_H) -check_include_file_concat("arpa/tftp.h" HAVE_ARPA_TFTP_H) -check_include_file_concat("assert.h" HAVE_ASSERT_H) -check_include_file_concat("errno.h" HAVE_ERRNO_H) -check_include_file_concat("fcntl.h" HAVE_FCNTL_H) -check_include_file_concat("idn2.h" HAVE_IDN2_H) -check_include_file_concat("ifaddrs.h" HAVE_IFADDRS_H) -check_include_file_concat("io.h" HAVE_IO_H) -check_include_file_concat("libgen.h" HAVE_LIBGEN_H) -check_include_file_concat("locale.h" HAVE_LOCALE_H) -check_include_file_concat("net/if.h" HAVE_NET_IF_H) -check_include_file_concat("netdb.h" HAVE_NETDB_H) -check_include_file_concat("netinet/in.h" HAVE_NETINET_IN_H) -check_include_file_concat("netinet/tcp.h" HAVE_NETINET_TCP_H) -check_include_file("linux/tcp.h" HAVE_LINUX_TCP_H) - -check_include_file_concat("poll.h" HAVE_POLL_H) -check_include_file_concat("pwd.h" HAVE_PWD_H) -check_include_file_concat("setjmp.h" HAVE_SETJMP_H) -check_include_file_concat("signal.h" HAVE_SIGNAL_H) -check_include_file_concat("ssl.h" HAVE_SSL_H) -check_include_file_concat("stdatomic.h" HAVE_STDATOMIC_H) -check_include_file_concat("stdbool.h" HAVE_STDBOOL_H) -check_include_file_concat("stdint.h" HAVE_STDINT_H) -check_include_file_concat("stdlib.h" HAVE_STDLIB_H) -check_include_file_concat("string.h" HAVE_STRING_H) -check_include_file_concat("strings.h" HAVE_STRINGS_H) -check_include_file_concat("stropts.h" HAVE_STROPTS_H) -check_include_file_concat("termio.h" HAVE_TERMIO_H) -check_include_file_concat("termios.h" HAVE_TERMIOS_H) -check_include_file_concat("time.h" HAVE_TIME_H) -check_include_file_concat("unistd.h" HAVE_UNISTD_H) -check_include_file_concat("utime.h" HAVE_UTIME_H) - -check_include_file_concat("process.h" HAVE_PROCESS_H) -check_include_file_concat("stddef.h" HAVE_STDDEF_H) -check_include_file_concat("stdint.h" HAVE_STDINT_H) -check_include_file_concat("sys/utsname.h" HAVE_SYS_UTSNAME_H) - -check_type_size(size_t SIZEOF_SIZE_T) -check_type_size(ssize_t SIZEOF_SSIZE_T) -check_type_size("long long" SIZEOF_LONG_LONG) -check_type_size("long" SIZEOF_LONG) -check_type_size("int" SIZEOF_INT) -check_type_size("__int64" SIZEOF___INT64) -check_type_size("time_t" SIZEOF_TIME_T) -if(NOT HAVE_SIZEOF_SSIZE_T) - if(SIZEOF_LONG EQUAL SIZEOF_SIZE_T) - set(ssize_t long) - endif() - if(NOT ssize_t AND SIZEOF___INT64 EQUAL SIZEOF_SIZE_T) - set(ssize_t __int64) - endif() -endif() -# off_t is sized later, after the HAVE_FILE_OFFSET_BITS test - -if(HAVE_SIZEOF_LONG_LONG) - set(HAVE_LONGLONG 1) -endif() - -if(NOT CMAKE_CROSSCOMPILING) - find_file(RANDOM_FILE urandom /dev) - mark_as_advanced(RANDOM_FILE) -endif() - -# Check for some functions that are used -if(HAVE_LIBWS2_32) - set(CMAKE_REQUIRED_LIBRARIES ws2_32) -elseif(HAVE_LIBSOCKET) - set(CMAKE_REQUIRED_LIBRARIES socket) -endif() - -check_symbol_exists(fchmod "${CURL_INCLUDES}" HAVE_FCHMOD) -check_symbol_exists(basename "${CURL_INCLUDES}" HAVE_BASENAME) -check_symbol_exists(socket "${CURL_INCLUDES}" HAVE_SOCKET) -check_symbol_exists(select "${CURL_INCLUDES}" HAVE_SELECT) -check_symbol_exists(strdup "${CURL_INCLUDES}" HAVE_STRDUP) -check_symbol_exists(strtok_r "${CURL_INCLUDES}" HAVE_STRTOK_R) -check_symbol_exists(strcasecmp "${CURL_INCLUDES}" HAVE_STRCASECMP) -check_symbol_exists(stricmp "${CURL_INCLUDES}" HAVE_STRICMP) -check_symbol_exists(strcmpi "${CURL_INCLUDES}" HAVE_STRCMPI) -check_symbol_exists(alarm "${CURL_INCLUDES}" HAVE_ALARM) -check_symbol_exists(getppid "${CURL_INCLUDES}" HAVE_GETPPID) -check_symbol_exists(utimes "${CURL_INCLUDES}" HAVE_UTIMES) - -check_symbol_exists(gettimeofday "${CURL_INCLUDES}" HAVE_GETTIMEOFDAY) -check_symbol_exists(closesocket "${CURL_INCLUDES}" HAVE_CLOSESOCKET) -check_symbol_exists(sigsetjmp "${CURL_INCLUDES}" HAVE_SIGSETJMP) -check_symbol_exists(getpass_r "${CURL_INCLUDES}" HAVE_GETPASS_R) -check_symbol_exists(getpwuid "${CURL_INCLUDES}" HAVE_GETPWUID) -check_symbol_exists(getpwuid_r "${CURL_INCLUDES}" HAVE_GETPWUID_R) -check_symbol_exists(geteuid "${CURL_INCLUDES}" HAVE_GETEUID) -check_symbol_exists(utime "${CURL_INCLUDES}" HAVE_UTIME) -check_symbol_exists(gmtime_r "${CURL_INCLUDES}" HAVE_GMTIME_R) - -check_symbol_exists(gethostbyname_r "${CURL_INCLUDES}" HAVE_GETHOSTBYNAME_R) - -check_symbol_exists(signal "${CURL_INCLUDES}" HAVE_SIGNAL_FUNC) -check_symbol_exists(SIGALRM "${CURL_INCLUDES}" HAVE_SIGNAL_MACRO) -if(HAVE_SIGNAL_FUNC AND HAVE_SIGNAL_MACRO) - set(HAVE_SIGNAL 1) -endif() -check_symbol_exists(strtoll "${CURL_INCLUDES}" HAVE_STRTOLL) -check_symbol_exists(_strtoi64 "${CURL_INCLUDES}" HAVE__STRTOI64) -check_symbol_exists(strerror_r "${CURL_INCLUDES}" HAVE_STRERROR_R) -check_symbol_exists(siginterrupt "${CURL_INCLUDES}" HAVE_SIGINTERRUPT) -check_symbol_exists(getaddrinfo "${CURL_INCLUDES}" HAVE_GETADDRINFO) -check_symbol_exists(freeaddrinfo "${CURL_INCLUDES}" HAVE_FREEADDRINFO) -check_symbol_exists(pipe "${CURL_INCLUDES}" HAVE_PIPE) -check_symbol_exists(ftruncate "${CURL_INCLUDES}" HAVE_FTRUNCATE) -check_symbol_exists(getpeername "${CURL_INCLUDES}" HAVE_GETPEERNAME) -check_symbol_exists(getsockname "${CURL_INCLUDES}" HAVE_GETSOCKNAME) -check_symbol_exists(if_nametoindex "${CURL_INCLUDES}" HAVE_IF_NAMETOINDEX) -check_symbol_exists(getrlimit "${CURL_INCLUDES}" HAVE_GETRLIMIT) -check_symbol_exists(setlocale "${CURL_INCLUDES}" HAVE_SETLOCALE) -check_symbol_exists(setmode "${CURL_INCLUDES}" HAVE_SETMODE) -check_symbol_exists(setrlimit "${CURL_INCLUDES}" HAVE_SETRLIMIT) -check_function_exists(mach_absolute_time HAVE_MACH_ABSOLUTE_TIME) -check_symbol_exists(inet_pton "${CURL_INCLUDES}" HAVE_INET_PTON) - -check_symbol_exists(fsetxattr "${CURL_INCLUDES}" HAVE_FSETXATTR) -if(HAVE_FSETXATTR) - foreach(CURL_TEST HAVE_FSETXATTR_5 HAVE_FSETXATTR_6) - curl_internal_test(${CURL_TEST}) - endforeach() -endif() - -set(CMAKE_EXTRA_INCLUDE_FILES "sys/socket.h") -check_type_size("sa_family_t" SIZEOF_SA_FAMILY_T) -set(HAVE_SA_FAMILY_T ${HAVE_SIZEOF_SA_FAMILY_T}) -set(CMAKE_EXTRA_INCLUDE_FILES "") - -set(CMAKE_EXTRA_INCLUDE_FILES "ws2def.h") -check_type_size("ADDRESS_FAMILY" SIZEOF_ADDRESS_FAMILY) -set(HAVE_ADDRESS_FAMILY ${HAVE_SIZEOF_ADDRESS_FAMILY}) -set(CMAKE_EXTRA_INCLUDE_FILES "") - -# sigaction and sigsetjmp are special. Use special mechanism for -# detecting those, but only if previous attempt failed. -if(HAVE_SIGNAL_H) - check_symbol_exists(sigaction "signal.h" HAVE_SIGACTION) -endif() - -if(NOT HAVE_SIGSETJMP) - if(HAVE_SETJMP_H) - check_symbol_exists(sigsetjmp "setjmp.h" HAVE_MACRO_SIGSETJMP) - if(HAVE_MACRO_SIGSETJMP) - set(HAVE_SIGSETJMP 1) - endif() - endif() -endif() - -# If there is no stricmp(), do not allow LDAP to parse URLs -if(NOT HAVE_STRICMP) - set(HAVE_LDAP_URL_PARSE 1) -endif() - -# Do curl specific tests -foreach(CURL_TEST - HAVE_FCNTL_O_NONBLOCK - HAVE_IOCTLSOCKET - HAVE_IOCTLSOCKET_CAMEL - HAVE_IOCTLSOCKET_CAMEL_FIONBIO - HAVE_IOCTLSOCKET_FIONBIO - HAVE_IOCTL_FIONBIO - HAVE_IOCTL_SIOCGIFADDR - HAVE_SETSOCKOPT_SO_NONBLOCK - HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID - TIME_WITH_SYS_TIME - HAVE_O_NONBLOCK - HAVE_GETHOSTBYNAME_R_3 - HAVE_GETHOSTBYNAME_R_5 - HAVE_GETHOSTBYNAME_R_6 - HAVE_GETHOSTBYNAME_R_3_REENTRANT - HAVE_GETHOSTBYNAME_R_5_REENTRANT - HAVE_GETHOSTBYNAME_R_6_REENTRANT - HAVE_IN_ADDR_T - HAVE_BOOL_T - STDC_HEADERS - HAVE_GETADDRINFO - HAVE_FILE_OFFSET_BITS - HAVE_VARIADIC_MACROS_C99 - HAVE_VARIADIC_MACROS_GCC - HAVE_ATOMIC - ) - curl_internal_test(${CURL_TEST}) -endforeach() - -if(HAVE_FILE_OFFSET_BITS) - set(_FILE_OFFSET_BITS 64) - set(CMAKE_REQUIRED_FLAGS "-D_FILE_OFFSET_BITS=64") -endif() -check_type_size("off_t" SIZEOF_OFF_T) - -# include this header to get the type -set(CMAKE_REQUIRED_INCLUDES "${CURL_SOURCE_DIR}/include") -set(CMAKE_EXTRA_INCLUDE_FILES "curl/system.h") -check_type_size("curl_off_t" SIZEOF_CURL_OFF_T) -set(CMAKE_EXTRA_INCLUDE_FILES "") - -if(WIN32) - # detect actual value of _WIN32_WINNT and store as HAVE_WIN32_WINNT - curl_internal_test(HAVE_WIN32_WINNT) - if(HAVE_WIN32_WINNT) - string(REGEX MATCH ".*_WIN32_WINNT=0x[0-9a-fA-F]+" OUTPUT "${OUTPUT}") - string(REGEX REPLACE ".*_WIN32_WINNT=" "" OUTPUT "${OUTPUT}") - math(EXPR HAVE_WIN32_WINNT "${OUTPUT}" OUTPUT_FORMAT DECIMAL) - message(STATUS "Found _WIN32_WINNT=${OUTPUT} (${HAVE_WIN32_WINNT})") - endif() - # avoid storing HAVE_WIN32_WINNT in CMake cache - unset(HAVE_WIN32_WINNT CACHE) -endif() - -set(CMAKE_REQUIRED_FLAGS) - -foreach(CURL_TEST - HAVE_GLIBC_STRERROR_R - HAVE_POSIX_STRERROR_R - ) - curl_internal_test(${CURL_TEST}) -endforeach() - -# Check for reentrant -foreach(CURL_TEST - HAVE_GETHOSTBYNAME_R_3 - HAVE_GETHOSTBYNAME_R_5 - HAVE_GETHOSTBYNAME_R_6) - if(NOT ${CURL_TEST}) - if(${CURL_TEST}_REENTRANT) - set(NEED_REENTRANT 1) - endif() - endif() -endforeach() - -if(NEED_REENTRANT) - foreach(CURL_TEST - HAVE_GETHOSTBYNAME_R_3 - HAVE_GETHOSTBYNAME_R_5 - HAVE_GETHOSTBYNAME_R_6) - set(${CURL_TEST} 0) - if(${CURL_TEST}_REENTRANT) - set(${CURL_TEST} 1) - endif() - endforeach() -endif() - -# Check clock_gettime(CLOCK_MONOTONIC, x) support -curl_internal_test(HAVE_CLOCK_GETTIME_MONOTONIC) - -# Check compiler support of __builtin_available() -curl_internal_test(HAVE_BUILTIN_AVAILABLE) - -# Some other minor tests - -if(NOT HAVE_IN_ADDR_T) - set(in_addr_t "unsigned long") -endif() - -# Fix libz / zlib.h - -if(NOT CURL_SPECIAL_LIBZ) - if(NOT HAVE_LIBZ) - set(HAVE_ZLIB_H 0) - endif() - - if(NOT HAVE_ZLIB_H) - set(HAVE_LIBZ 0) - endif() -endif() - -# Check for nonblocking -set(HAVE_DISABLED_NONBLOCKING 1) -if(HAVE_FIONBIO OR - HAVE_IOCTLSOCKET OR - HAVE_IOCTLSOCKET_CASE OR - HAVE_O_NONBLOCK) - set(HAVE_DISABLED_NONBLOCKING) -endif() - -if(CMAKE_COMPILER_IS_GNUCC AND APPLE) - include(CheckCCompilerFlag) - check_c_compiler_flag(-Wno-long-double HAVE_C_FLAG_Wno_long_double) - if(HAVE_C_FLAG_Wno_long_double) - # The Mac version of GCC warns about use of long double. Disable it. - get_source_file_property(MPRINTF_COMPILE_FLAGS mprintf.c COMPILE_FLAGS) - if(MPRINTF_COMPILE_FLAGS) - set(MPRINTF_COMPILE_FLAGS "${MPRINTF_COMPILE_FLAGS} -Wno-long-double") - else() - set(MPRINTF_COMPILE_FLAGS "-Wno-long-double") - endif() - set_source_files_properties(mprintf.c PROPERTIES - COMPILE_FLAGS ${MPRINTF_COMPILE_FLAGS}) - endif() -endif() - -# TODO test which of these headers are required -if(WIN32) - set(CURL_PULL_WS2TCPIP_H ${HAVE_WS2TCPIP_H}) -else() - set(CURL_PULL_SYS_TYPES_H ${HAVE_SYS_TYPES_H}) - set(CURL_PULL_SYS_SOCKET_H ${HAVE_SYS_SOCKET_H}) - set(CURL_PULL_SYS_POLL_H ${HAVE_SYS_POLL_H}) -endif() -set(CURL_PULL_STDINT_H ${HAVE_STDINT_H}) -set(CURL_PULL_INTTYPES_H ${HAVE_INTTYPES_H}) - -include(CMake/OtherTests.cmake) - -add_definitions(-DHAVE_CONFIG_H) - -# For Windows, all compilers used by CMake should support large files -if(WIN32) - set(USE_WIN32_LARGE_FILES ON) - - # Use the manifest embedded in the Windows Resource - set(CMAKE_RC_FLAGS "${CMAKE_RC_FLAGS} -DCURL_EMBED_MANIFEST") - - # Check if crypto functions in wincrypt.h are actually available - if(HAVE_WINCRYPT_H) - check_symbol_exists(CryptAcquireContext "${CURL_INCLUDES}" USE_WINCRYPT) - endif() - if(USE_WINCRYPT) - set(USE_WIN32_CRYPTO ON) - endif() - - # Link required libraries for USE_WIN32_CRYPTO or USE_SCHANNEL - if(USE_WIN32_CRYPTO OR USE_SCHANNEL) - list(APPEND CURL_LIBS "advapi32" "crypt32") - endif() - - list(APPEND CURL_LIBS "bcrypt") -endif() - -if(MSVC) - # Disable default manifest added by CMake - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO") - - add_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE) - if(CMAKE_C_FLAGS MATCHES "/W[0-4]") - string(REGEX REPLACE "/W[0-4]" "/W4" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") - else() - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W4") - endif() - - # Use multithreaded compilation on VS 2008+ - if(MSVC_VERSION GREATER_EQUAL 1500) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP") - endif() -endif() - -if(CURL_WERROR) - if(MSVC_VERSION) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /WX") - else() - # this assumes clang or gcc style options - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror") - endif() -endif() - -if(CURL_LTO) - if(CMAKE_VERSION VERSION_LESS 3.9) - message(FATAL_ERROR "Requested LTO but your cmake version ${CMAKE_VERSION} is to old. You need at least 3.9") - endif() - - cmake_policy(SET CMP0069 NEW) - - include(CheckIPOSupported) - check_ipo_supported(RESULT CURL_HAS_LTO OUTPUT CURL_LTO_ERROR LANGUAGES C) - if(CURL_HAS_LTO) - message(STATUS "LTO supported and enabled") - else() - message(FATAL_ERROR "LTO was requested - but compiler doesn't support it\n${CURL_LTO_ERROR}") - endif() -endif() - - -# Ugly (but functional) way to include "Makefile.inc" by transforming it (= regenerate it). -function(transform_makefile_inc INPUT_FILE OUTPUT_FILE) - file(READ ${INPUT_FILE} MAKEFILE_INC_TEXT) - string(REPLACE "$(top_srcdir)" "\${CURL_SOURCE_DIR}" MAKEFILE_INC_TEXT ${MAKEFILE_INC_TEXT}) - string(REPLACE "$(top_builddir)" "\${CURL_BINARY_DIR}" MAKEFILE_INC_TEXT ${MAKEFILE_INC_TEXT}) - - string(REGEX REPLACE "\\\\\n" "!Ï€!α!" MAKEFILE_INC_TEXT ${MAKEFILE_INC_TEXT}) - string(REGEX REPLACE "([a-zA-Z_][a-zA-Z0-9_]*)[\t ]*=[\t ]*([^\n]*)" "SET(\\1 \\2)" MAKEFILE_INC_TEXT ${MAKEFILE_INC_TEXT}) - string(REPLACE "!Ï€!α!" "\n" MAKEFILE_INC_TEXT ${MAKEFILE_INC_TEXT}) - - string(REGEX REPLACE "\\$\\(([a-zA-Z_][a-zA-Z0-9_]*)\\)" "\${\\1}" MAKEFILE_INC_TEXT ${MAKEFILE_INC_TEXT}) # Replace $() with ${} - string(REGEX REPLACE "@([a-zA-Z_][a-zA-Z0-9_]*)@" "\${\\1}" MAKEFILE_INC_TEXT ${MAKEFILE_INC_TEXT}) # Replace @@ with ${}, even if that may not be read by CMake scripts. - file(WRITE ${OUTPUT_FILE} ${MAKEFILE_INC_TEXT}) - set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${INPUT_FILE}") -endfunction() - -include(GNUInstallDirs) - -set(CURL_INSTALL_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}) -set(TARGETS_EXPORT_NAME "${PROJECT_NAME}Targets") -set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated") -set(project_config "${generated_dir}/${PROJECT_NAME}Config.cmake") -set(version_config "${generated_dir}/${PROJECT_NAME}ConfigVersion.cmake") - -if(USE_MANUAL) - add_subdirectory(docs) -endif() - -add_subdirectory(lib) - -if(BUILD_CURL_EXE) - add_subdirectory(src) -endif() - -cmake_dependent_option(BUILD_TESTING "Build tests" - ON "PERL_FOUND;NOT CURL_DISABLE_TESTS" - OFF) -if(BUILD_TESTING) - add_subdirectory(tests) -endif() - -# Helper to populate a list (_items) with a label when conditions (the remaining -# args) are satisfied -macro(_add_if label) - # needs to be a macro to allow this indirection - if(${ARGN}) - set(_items ${_items} "${label}") - endif() -endmacro() - -# NTLM support requires crypto function adaptions from various SSL libs -# TODO alternative SSL libs tests for SSP1, GNUTLS, NSS -if(NOT (CURL_DISABLE_CRYPTO_AUTH OR CURL_DISABLE_NTLM) AND - (USE_OPENSSL OR USE_MBEDTLS OR USE_DARWINSSL OR USE_WIN32_CRYPTO)) - set(use_curl_ntlm_core ON) -endif() - -# Clear list and try to detect available features -set(_items) -_add_if("SSL" SSL_ENABLED) -_add_if("IPv6" ENABLE_IPV6) -_add_if("unixsockets" USE_UNIX_SOCKETS) -_add_if("libz" HAVE_LIBZ) -_add_if("brotli" HAVE_BROTLI) -_add_if("zstd" HAVE_ZSTD) -_add_if("AsynchDNS" USE_ARES OR USE_THREADS_POSIX OR USE_THREADS_WIN32) -_add_if("IDN" HAVE_LIBIDN2 OR USE_WIN32_IDN) -_add_if("Largefile" (SIZEOF_CURL_OFF_T GREATER 4) AND - ((SIZEOF_OFF_T GREATER 4) OR USE_WIN32_LARGE_FILES)) -# TODO SSP1 (Schannel) check is missing -_add_if("SSPI" USE_WINDOWS_SSPI) -_add_if("GSS-API" HAVE_GSSAPI) -_add_if("alt-svc" NOT CURL_DISABLE_ALTSVC) -_add_if("HSTS" NOT CURL_DISABLE_HSTS) -# TODO SSP1 missing for SPNEGO -_add_if("SPNEGO" NOT CURL_DISABLE_CRYPTO_AUTH AND - (HAVE_GSSAPI OR USE_WINDOWS_SSPI)) -_add_if("Kerberos" NOT CURL_DISABLE_CRYPTO_AUTH AND - (HAVE_GSSAPI OR USE_WINDOWS_SSPI)) -# NTLM support requires crypto function adaptions from various SSL libs -# TODO alternative SSL libs tests for SSP1, GNUTLS, NSS -_add_if("NTLM" NOT (CURL_DISABLE_CRYPTO_AUTH OR CURL_DISABLE_NTLM) AND - (use_curl_ntlm_core OR USE_WINDOWS_SSPI)) -# TODO missing option (autoconf: --enable-ntlm-wb) -_add_if("NTLM_WB" NOT (CURL_DISABLE_CRYPTO_AUTH OR CURL_DISABLE_NTLM) AND - (use_curl_ntlm_core OR USE_WINDOWS_SSPI) AND - NOT CURL_DISABLE_HTTP AND NTLM_WB_ENABLED) -# TODO missing option (--enable-tls-srp), depends on GNUTLS_SRP/OPENSSL_SRP -_add_if("TLS-SRP" USE_TLS_SRP) -# TODO option --with-nghttp2 tests for nghttp2 lib and nghttp2/nghttp2.h header -_add_if("HTTP2" USE_NGHTTP2) -_add_if("HTTP3" USE_NGTCP2 OR USE_QUICHE) -_add_if("MultiSSL" CURL_WITH_MULTI_SSL) -_add_if("HTTPS-proxy" SSL_ENABLED AND (USE_OPENSSL OR USE_GNUTLS OR USE_NSS)) -_add_if("unicode" ENABLE_UNICODE) -_add_if("threadsafe" HAVE_ATOMIC OR (WIN32 AND - HAVE_WIN32_WINNT GREATER_EQUAL 0x600)) -_add_if("PSL" USE_LIBPSL) -string(REPLACE ";" " " SUPPORT_FEATURES "${_items}") -message(STATUS "Enabled features: ${SUPPORT_FEATURES}") - -# Clear list and try to detect available protocols -set(_items) -_add_if("HTTP" NOT CURL_DISABLE_HTTP) -_add_if("HTTPS" NOT CURL_DISABLE_HTTP AND SSL_ENABLED) -_add_if("FTP" NOT CURL_DISABLE_FTP) -_add_if("FTPS" NOT CURL_DISABLE_FTP AND SSL_ENABLED) -_add_if("FILE" NOT CURL_DISABLE_FILE) -_add_if("TELNET" NOT CURL_DISABLE_TELNET) -_add_if("LDAP" NOT CURL_DISABLE_LDAP) -# CURL_DISABLE_LDAP implies CURL_DISABLE_LDAPS -# TODO check HAVE_LDAP_SSL (in autoconf this is enabled with --enable-ldaps) -_add_if("LDAPS" NOT CURL_DISABLE_LDAPS AND - ((USE_OPENLDAP AND SSL_ENABLED) OR - (NOT USE_OPENLDAP AND HAVE_LDAP_SSL))) -_add_if("DICT" NOT CURL_DISABLE_DICT) -_add_if("TFTP" NOT CURL_DISABLE_TFTP) -_add_if("GOPHER" NOT CURL_DISABLE_GOPHER) -_add_if("GOPHERS" NOT CURL_DISABLE_GOPHER AND SSL_ENABLED) -_add_if("POP3" NOT CURL_DISABLE_POP3) -_add_if("POP3S" NOT CURL_DISABLE_POP3 AND SSL_ENABLED) -_add_if("IMAP" NOT CURL_DISABLE_IMAP) -_add_if("IMAPS" NOT CURL_DISABLE_IMAP AND SSL_ENABLED) -_add_if("SMB" NOT CURL_DISABLE_SMB AND - use_curl_ntlm_core AND (SIZEOF_CURL_OFF_T GREATER 4)) -_add_if("SMBS" NOT CURL_DISABLE_SMB AND SSL_ENABLED AND - use_curl_ntlm_core AND (SIZEOF_CURL_OFF_T GREATER 4)) -_add_if("SMTP" NOT CURL_DISABLE_SMTP) -_add_if("SMTPS" NOT CURL_DISABLE_SMTP AND SSL_ENABLED) -_add_if("SCP" USE_LIBSSH2 OR USE_LIBSSH) -_add_if("SFTP" USE_LIBSSH2 OR USE_LIBSSH) -_add_if("RTSP" NOT CURL_DISABLE_RTSP) -_add_if("RTMP" USE_LIBRTMP) -_add_if("MQTT" NOT CURL_DISABLE_MQTT) -if(_items) - list(SORT _items) -endif() -string(REPLACE ";" " " SUPPORT_PROTOCOLS "${_items}") -message(STATUS "Enabled protocols: ${SUPPORT_PROTOCOLS}") - -# Clear list and collect SSL backends -set(_items) -_add_if("Schannel" SSL_ENABLED AND USE_SCHANNEL) -_add_if("OpenSSL" SSL_ENABLED AND USE_OPENSSL) -_add_if("Secure Transport" SSL_ENABLED AND USE_SECTRANSP) -_add_if("mbedTLS" SSL_ENABLED AND USE_MBEDTLS) -_add_if("BearSSL" SSL_ENABLED AND USE_BEARSSL) -_add_if("NSS" SSL_ENABLED AND USE_NSS) -_add_if("wolfSSL" SSL_ENABLED AND USE_WOLFSSL) -if(_items) - list(SORT _items) -endif() -string(REPLACE ";" " " SSL_BACKENDS "${_items}") -message(STATUS "Enabled SSL backends: ${SSL_BACKENDS}") - -# curl-config needs the following options to be set. -set(CC "${CMAKE_C_COMPILER}") -# TODO probably put a -D... options here? -set(CONFIGURE_OPTIONS "") -# TODO when to set "-DCURL_STATICLIB" for CPPFLAG_CURL_STATICLIB? -set(CPPFLAG_CURL_STATICLIB "") -set(CURLVERSION "${CURL_VERSION}") -set(exec_prefix "\${prefix}") -set(includedir "\${prefix}/include") -set(LDFLAGS "${CMAKE_SHARED_LINKER_FLAGS}") -set(LIBCURL_LIBS "") -set(libdir "${CMAKE_INSTALL_PREFIX}/lib") -foreach(_lib ${CMAKE_C_IMPLICIT_LINK_LIBRARIES} ${CURL_LIBS}) - if(TARGET "${_lib}") - set(_libname "${_lib}") - get_target_property(_imported "${_libname}" IMPORTED) - if(NOT _imported) - # Reading the LOCATION property on non-imported target will error out. - # Assume the user won't need this information in the .pc file. - continue() - endif() - get_target_property(_lib "${_libname}" LOCATION) - if(NOT _lib) - message(WARNING "Bad lib in library list: ${_libname}") - continue() - endif() - endif() - if(_lib MATCHES ".*/.*" OR _lib MATCHES "^-") - set(LIBCURL_LIBS "${LIBCURL_LIBS} ${_lib}") - else() - set(LIBCURL_LIBS "${LIBCURL_LIBS} -l${_lib}") - endif() -endforeach() -if(BUILD_SHARED_LIBS) - set(ENABLE_SHARED "yes") - set(ENABLE_STATIC "no") - set(LIBCURL_NO_SHARED "") -else() - set(ENABLE_SHARED "no") - set(ENABLE_STATIC "yes") - set(LIBCURL_NO_SHARED "${LIBCURL_LIBS}") -endif() -# "a" (Linux) or "lib" (Windows) -string(REPLACE "." "" libext "${CMAKE_STATIC_LIBRARY_SUFFIX}") -set(prefix "${CMAKE_INSTALL_PREFIX}") -# Set this to "yes" to append all libraries on which -lcurl is dependent -set(REQUIRE_LIB_DEPS "no") -# SUPPORT_FEATURES -# SUPPORT_PROTOCOLS -set(VERSIONNUM "${CURL_VERSION_NUM}") - -# Finally generate a "curl-config" matching this config -# Use: -# * ENABLE_SHARED -# * ENABLE_STATIC -configure_file("${CURL_SOURCE_DIR}/curl-config.in" - "${CURL_BINARY_DIR}/curl-config" @ONLY) -install(FILES "${CURL_BINARY_DIR}/curl-config" - DESTINATION ${CMAKE_INSTALL_BINDIR} - PERMISSIONS - OWNER_READ OWNER_WRITE OWNER_EXECUTE - GROUP_READ GROUP_EXECUTE - WORLD_READ WORLD_EXECUTE) - -# Finally generate a pkg-config file matching this config -configure_file("${CURL_SOURCE_DIR}/libcurl.pc.in" - "${CURL_BINARY_DIR}/libcurl.pc" @ONLY) -install(FILES "${CURL_BINARY_DIR}/libcurl.pc" - DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) - -# install headers -install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/curl" - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} - FILES_MATCHING PATTERN "*.h") - -include(CMakePackageConfigHelpers) -write_basic_package_version_file( - "${version_config}" - VERSION ${CURL_VERSION} - COMPATIBILITY SameMajorVersion -) - -# Use: -# * TARGETS_EXPORT_NAME -# * PROJECT_NAME -configure_package_config_file(CMake/curl-config.cmake.in - "${project_config}" - INSTALL_DESTINATION ${CURL_INSTALL_CMAKE_DIR} -) - -if(CURL_ENABLE_EXPORT_TARGET) - install( - EXPORT "${TARGETS_EXPORT_NAME}" - NAMESPACE "${PROJECT_NAME}::" - DESTINATION ${CURL_INSTALL_CMAKE_DIR} - ) -endif() - -install( - FILES ${version_config} ${project_config} - DESTINATION ${CURL_INSTALL_CMAKE_DIR} -) - -# Workaround for MSVS10 to avoid the Dialog Hell -# FIXME: This could be removed with future version of CMake. -if(MSVC_VERSION EQUAL 1600) - set(CURL_SLN_FILENAME "${CMAKE_CURRENT_BINARY_DIR}/CURL.sln") - if(EXISTS "${CURL_SLN_FILENAME}") - file(APPEND "${CURL_SLN_FILENAME}" "\n# This should be regenerated!\n") - endif() -endif() - -if(NOT TARGET uninstall) - configure_file( - ${CMAKE_CURRENT_SOURCE_DIR}/CMake/cmake_uninstall.cmake.in - ${CMAKE_CURRENT_BINARY_DIR}/CMake/cmake_uninstall.cmake - IMMEDIATE @ONLY) - - add_custom_target(uninstall - COMMAND ${CMAKE_COMMAND} -P - ${CMAKE_CURRENT_BINARY_DIR}/CMake/cmake_uninstall.cmake) -endif() diff --git a/Engine/lib/curl/COPYING b/Engine/lib/curl/COPYING deleted file mode 100644 index 90f05adf2..000000000 --- a/Engine/lib/curl/COPYING +++ /dev/null @@ -1,22 +0,0 @@ -COPYRIGHT AND PERMISSION NOTICE - -Copyright (c) 1996 - 2022, Daniel Stenberg, , and many -contributors, see the THANKS file. - -All rights reserved. - -Permission to use, copy, modify, and distribute this software for any purpose -with or without fee is hereby granted, provided that the above copyright -notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN -NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE -OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of a copyright holder shall not -be used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization of the copyright holder. diff --git a/Engine/lib/curl/MacOSX-Framework b/Engine/lib/curl/MacOSX-Framework deleted file mode 100755 index 97cd00b9b..000000000 --- a/Engine/lib/curl/MacOSX-Framework +++ /dev/null @@ -1,160 +0,0 @@ -#!/usr/bin/env bash -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### -# This script performs all of the steps needed to build a -# universal binary libcurl.framework for Mac OS X 10.4 or greater. -# -# Hendrik Visage: -# Generalizations added since Snowleopard (10.6) do not include -# the 10.4u SDK. -# -# Also note: -# 10.5 is the *ONLY* SDK that support PPC64 :( -- 10.6 do not have ppc64 support -#If you need to have PPC64 support then change below to 1 -PPC64_NEEDED=0 -# Apple does not support building for PPC anymore in Xcode 4 and later. -# If you're using Xcode 3 or earlier and need PPC support, then change -# the setting below to 1 -PPC_NEEDED=0 - -# For me the default is to develop for the platform I am on, and if you -#desire compatibility with older versions then change USE_OLD to 1 :) -USE_OLD=0 - -VERSION=`/usr/bin/sed -ne 's/^#define LIBCURL_VERSION "\(.*\)"/\1/p' include/curl/curlver.h` -FRAMEWORK_VERSION=Versions/Release-$VERSION - -#I also wanted to "copy over" the system, and thus the reason I added the -# version to Versions/Release-7.20.1 etc. -# now a simple rsync -vaP libcurl.framework /Library/Frameworks will install it -# and setup the right paths to this version, leaving the system version -# "intact", so you can "fix" it later with the links to Versions/A/... - -DEVELOPER_PATH=`xcode-select --print-path` -# Around Xcode 4.3, SDKs were moved from the Developer folder into the -# MacOSX.platform folder -if test -d "$DEVELOPER_PATH/Platforms/MacOSX.platform/Developer/SDKs"; then - SDK_PATH="$DEVELOPER_PATH/Platforms/MacOSX.platform/Developer/SDKs" -else - SDK_PATH="$DEVELOPER_PATH/SDKs" -fi -OLD_SDK=`ls $SDK_PATH|head -1` -NEW_SDK=`ls -r $SDK_PATH|head -1` - -if test "0"$USE_OLD -gt 0 -then - SDK32=$OLD_SDK -else - SDK32=$NEW_SDK -fi - -MACVER=`echo $SDK32|sed -e s/[a-zA-Z]//g -e s/.\$//` - -SDK32_DIR=$SDK_PATH/$SDK32 -MINVER32='-mmacosx-version-min='$MACVER -if test $PPC_NEEDED -gt 0; then - ARCHES32='-arch i386 -arch ppc' -else - ARCHES32='-arch i386' -fi - -if test $PPC64_NEEDED -gt 0 -then - SDK64=10.5 - ARCHES64='-arch x86_64 -arch ppc64' - SDK64=`ls $SDK_PATH|grep 10.5|head -1` -else - ARCHES64='-arch x86_64' - #We "know" that 10.4 and earlier do not support 64bit - OLD_SDK64=`ls $SDK_PATH|egrep -v "10.[0-4]"|head -1` - NEW_SDK64=`ls -r $SDK_PATH|egrep -v "10.[0-4][^0-9]" | head -1` - if test $USE_OLD -gt 0 - then - SDK64=$OLD_SDK64 - else - SDK64=$NEW_SDK64 - fi -fi - -SDK64_DIR=$SDK_PATH/$SDK64 -MACVER64=`echo $SDK64|sed -e s/[a-zA-Z]//g -e s/.\$//` - -MINVER64='-mmacosx-version-min='$MACVER64 - -if test ! -z $SDK32; then - echo "----Configuring libcurl for 32 bit universal framework..." - make clean - ./configure --disable-dependency-tracking --disable-static --with-gssapi --with-secure-transport \ - CFLAGS="-Os -isysroot $SDK32_DIR $ARCHES32" \ - LDFLAGS="-Wl,-syslibroot,$SDK32_DIR $ARCHES32 -Wl,-headerpad_max_install_names" \ - CC=$CC - - echo "----Building 32 bit libcurl..." - make -j `sysctl -n hw.logicalcpu_max` - - echo "----Creating 32 bit framework..." - rm -r libcurl.framework - mkdir -p libcurl.framework/${FRAMEWORK_VERSION}/Resources - cp lib/.libs/libcurl.dylib libcurl.framework/${FRAMEWORK_VERSION}/libcurl - install_name_tool -id @rpath/libcurl.framework/${FRAMEWORK_VERSION}/libcurl libcurl.framework/${FRAMEWORK_VERSION}/libcurl - cp lib/libcurl.plist libcurl.framework/${FRAMEWORK_VERSION}/Resources/Info.plist - mkdir -p libcurl.framework/${FRAMEWORK_VERSION}/Headers/curl - cp include/curl/*.h libcurl.framework/${FRAMEWORK_VERSION}/Headers/curl - pushd libcurl.framework - ln -fs ${FRAMEWORK_VERSION}/libcurl libcurl - ln -fs ${FRAMEWORK_VERSION}/Resources Resources - ln -fs ${FRAMEWORK_VERSION}/Headers Headers - cd Versions - ln -fs $(basename "${FRAMEWORK_VERSION}") Current - - echo Testing for SDK64 - if test -d $SDK64_DIR; then - echo entering... - popd - make clean - echo "----Configuring libcurl for 64 bit universal framework..." - ./configure --disable-dependency-tracking --disable-static --with-gssapi --with-secure-transport \ - CFLAGS="-Os -isysroot $SDK64_DIR $ARCHES64" \ - LDFLAGS="-Wl,-syslibroot,$SDK64_DIR $ARCHES64 -Wl,-headerpad_max_install_names" \ - CC=$CC - - echo "----Building 64 bit libcurl..." - make -j `sysctl -n hw.logicalcpu_max` - - echo "----Appending 64 bit framework to 32 bit framework..." - cp lib/.libs/libcurl.dylib libcurl.framework/${FRAMEWORK_VERSION}/libcurl64 - install_name_tool -id @rpath/libcurl.framework/${FRAMEWORK_VERSION}/libcurl libcurl.framework/${FRAMEWORK_VERSION}/libcurl64 - cp libcurl.framework/${FRAMEWORK_VERSION}/libcurl libcurl.framework/${FRAMEWORK_VERSION}/libcurl32 - pwd - lipo libcurl.framework/${FRAMEWORK_VERSION}/libcurl32 libcurl.framework/${FRAMEWORK_VERSION}/libcurl64 -create -output libcurl.framework/${FRAMEWORK_VERSION}/libcurl - rm libcurl.framework/${FRAMEWORK_VERSION}/libcurl32 libcurl.framework/${FRAMEWORK_VERSION}/libcurl64 - fi - - pwd - lipo -info libcurl.framework/${FRAMEWORK_VERSION}/libcurl - echo "libcurl.framework is built and can now be included in other projects." - echo "Copy libcurl.framework to your bundle's Contents/Frameworks folder, ~/Library/Frameworks or /Library/Frameworks." -else - echo "Building libcurl.framework requires Mac OS X 10.4 or later with the MacOSX10.4/5/6 SDK installed." -fi diff --git a/Engine/lib/curl/Makefile b/Engine/lib/curl/Makefile deleted file mode 100644 index ab5a9b5f3..000000000 --- a/Engine/lib/curl/Makefile +++ /dev/null @@ -1,92 +0,0 @@ -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### - -all: - ./configure - make - -ssl: - ./configure --with-openssl - make - -mingw32: - $(MAKE) -C lib -f Makefile.m32 - $(MAKE) -C src -f Makefile.m32 - -mingw32-clean: - $(MAKE) -C lib -f Makefile.m32 clean - $(MAKE) -C src -f Makefile.m32 clean - $(MAKE) -C docs/examples -f Makefile.m32 clean - -mingw32-vclean mingw32-distclean: - $(MAKE) -C lib -f Makefile.m32 vclean - $(MAKE) -C src -f Makefile.m32 vclean - $(MAKE) -C docs/examples -f Makefile.m32 vclean - -mingw32-examples%: - $(MAKE) -C docs/examples -f Makefile.m32 CFG=$@ - -mingw32%: - $(MAKE) -C lib -f Makefile.m32 CFG=$@ - $(MAKE) -C src -f Makefile.m32 CFG=$@ - -vc: - cd winbuild - nmake /f Makefile.vc MACHINE=x86 - -vc-x64: - cd winbuild - nmake /f Makefile.vc MACHINE=x64 - -djgpp: - $(MAKE) -C lib -f Makefile.dj - $(MAKE) -C src -f Makefile.dj - -cygwin: - ./configure - make - -cygwin-ssl: - ./configure --with-openssl - make - -amiga: - cd ./lib && make -f makefile.amiga - cd ./src && make -f makefile.amiga - -unix: all - -unix-ssl: ssl - -linux: all - -linux-ssl: ssl - -ca-bundle: scripts/mk-ca-bundle.pl - @echo "generate a fresh ca-bundle.crt" - @perl $< -b -l -u lib/ca-bundle.crt - -ca-firefox: lib/firefox-db2pem.sh - @echo "generate a fresh ca-bundle.crt" - ./lib/firefox-db2pem.sh lib/ca-bundle.crt diff --git a/Engine/lib/curl/Makefile.am b/Engine/lib/curl/Makefile.am deleted file mode 100644 index 40771ed38..000000000 --- a/Engine/lib/curl/Makefile.am +++ /dev/null @@ -1,613 +0,0 @@ -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### - -AUTOMAKE_OPTIONS = foreign - -ACLOCAL_AMFLAGS = -I m4 - -CMAKE_DIST = \ - CMake/cmake_uninstall.cmake.in \ - CMake/CMakeConfigurableFile.in \ - CMake/curl-config.cmake.in \ - CMake/CurlSymbolHiding.cmake \ - CMake/CurlTests.c \ - CMake/FindBearSSL.cmake \ - CMake/FindBrotli.cmake \ - CMake/FindCARES.cmake \ - CMake/FindGSS.cmake \ - CMake/FindLibPSL.cmake \ - CMake/FindLibSSH2.cmake \ - CMake/FindMbedTLS.cmake \ - CMake/FindMSH3.cmake \ - CMake/FindNGHTTP2.cmake \ - CMake/FindNGHTTP3.cmake \ - CMake/FindNGTCP2.cmake \ - CMake/FindNSS.cmake \ - CMake/FindQUICHE.cmake \ - CMake/FindWolfSSL.cmake \ - CMake/FindZstd.cmake \ - CMake/Macros.cmake \ - CMake/OtherTests.cmake \ - CMake/Platforms/WindowsCache.cmake \ - CMake/Utilities.cmake \ - CMakeLists.txt - -VC10_LIBTMPL = projects/Windows/VC10/lib/libcurl.tmpl -VC10_LIBVCXPROJ = projects/Windows/VC10/lib/libcurl.vcxproj.dist -VC10_LIBVCXPROJ_DEPS = $(VC10_LIBTMPL) Makefile.am lib/Makefile.inc -VC10_SRCTMPL = projects/Windows/VC10/src/curl.tmpl -VC10_SRCVCXPROJ = projects/Windows/VC10/src/curl.vcxproj.dist -VC10_SRCVCXPROJ_DEPS = $(VC10_SRCTMPL) Makefile.am src/Makefile.inc - -VC11_LIBTMPL = projects/Windows/VC11/lib/libcurl.tmpl -VC11_LIBVCXPROJ = projects/Windows/VC11/lib/libcurl.vcxproj.dist -VC11_LIBVCXPROJ_DEPS = $(VC11_LIBTMPL) Makefile.am lib/Makefile.inc -VC11_SRCTMPL = projects/Windows/VC11/src/curl.tmpl -VC11_SRCVCXPROJ = projects/Windows/VC11/src/curl.vcxproj.dist -VC11_SRCVCXPROJ_DEPS = $(VC11_SRCTMPL) Makefile.am src/Makefile.inc - -VC12_LIBTMPL = projects/Windows/VC12/lib/libcurl.tmpl -VC12_LIBVCXPROJ = projects/Windows/VC12/lib/libcurl.vcxproj.dist -VC12_LIBVCXPROJ_DEPS = $(VC12_LIBTMPL) Makefile.am lib/Makefile.inc -VC12_SRCTMPL = projects/Windows/VC12/src/curl.tmpl -VC12_SRCVCXPROJ = projects/Windows/VC12/src/curl.vcxproj.dist -VC12_SRCVCXPROJ_DEPS = $(VC12_SRCTMPL) Makefile.am src/Makefile.inc - -VC14_LIBTMPL = projects/Windows/VC14/lib/libcurl.tmpl -VC14_LIBVCXPROJ = projects/Windows/VC14/lib/libcurl.vcxproj.dist -VC14_LIBVCXPROJ_DEPS = $(VC14_LIBTMPL) Makefile.am lib/Makefile.inc -VC14_SRCTMPL = projects/Windows/VC14/src/curl.tmpl -VC14_SRCVCXPROJ = projects/Windows/VC14/src/curl.vcxproj.dist -VC14_SRCVCXPROJ_DEPS = $(VC14_SRCTMPL) Makefile.am src/Makefile.inc - -VC14_10_LIBTMPL = projects/Windows/VC14.10/lib/libcurl.tmpl -VC14_10_LIBVCXPROJ = projects/Windows/VC14.10/lib/libcurl.vcxproj.dist -VC14_10_LIBVCXPROJ_DEPS = $(VC14_10_LIBTMPL) Makefile.am lib/Makefile.inc -VC14_10_SRCTMPL = projects/Windows/VC14.10/src/curl.tmpl -VC14_10_SRCVCXPROJ = projects/Windows/VC14.10/src/curl.vcxproj.dist -VC14_10_SRCVCXPROJ_DEPS = $(VC14_10_SRCTMPL) Makefile.am src/Makefile.inc - -VC14_30_LIBTMPL = projects/Windows/VC14.30/lib/libcurl.tmpl -VC14_30_LIBVCXPROJ = projects/Windows/VC14.30/lib/libcurl.vcxproj.dist -VC14_30_LIBVCXPROJ_DEPS = $(VC14_30_LIBTMPL) Makefile.am lib/Makefile.inc -VC14_30_SRCTMPL = projects/Windows/VC14.30/src/curl.tmpl -VC14_30_SRCVCXPROJ = projects/Windows/VC14.30/src/curl.vcxproj.dist -VC14_30_SRCVCXPROJ_DEPS = $(VC14_30_SRCTMPL) Makefile.am src/Makefile.inc - -VC_DIST = projects/README.md \ - projects/build-openssl.bat \ - projects/build-wolfssl.bat \ - projects/checksrc.bat \ - projects/Windows/VC10/curl-all.sln \ - projects/Windows/VC10/lib/libcurl.sln \ - projects/Windows/VC10/lib/libcurl.vcxproj.filters \ - projects/Windows/VC10/src/curl.sln \ - projects/Windows/VC10/src/curl.vcxproj.filters \ - projects/Windows/VC11/curl-all.sln \ - projects/Windows/VC11/lib/libcurl.sln \ - projects/Windows/VC11/lib/libcurl.vcxproj.filters \ - projects/Windows/VC11/src/curl.sln \ - projects/Windows/VC11/src/curl.vcxproj.filters \ - projects/Windows/VC12/curl-all.sln \ - projects/Windows/VC12/lib/libcurl.sln \ - projects/Windows/VC12/lib/libcurl.vcxproj.filters \ - projects/Windows/VC12/src/curl.sln \ - projects/Windows/VC12/src/curl.vcxproj.filters \ - projects/Windows/VC14/curl-all.sln \ - projects/Windows/VC14/lib/libcurl.sln \ - projects/Windows/VC14/lib/libcurl.vcxproj.filters \ - projects/Windows/VC14/src/curl.sln \ - projects/Windows/VC14/src/curl.vcxproj.filters \ - projects/Windows/VC14.10/curl-all.sln \ - projects/Windows/VC14.10/lib/libcurl.sln \ - projects/Windows/VC14.10/lib/libcurl.vcxproj.filters \ - projects/Windows/VC14.10/src/curl.sln \ - projects/Windows/VC14.10/src/curl.vcxproj.filters \ - projects/Windows/VC14.30/curl-all.sln \ - projects/Windows/VC14.30/lib/libcurl.sln \ - projects/Windows/VC14.30/lib/libcurl.vcxproj.filters \ - projects/Windows/VC14.30/src/curl.sln \ - projects/Windows/VC14.30/src/curl.vcxproj.filters \ - projects/generate.bat \ - projects/wolfssl_options.h \ - projects/wolfssl_override.props - -WINBUILD_DIST = winbuild/README.md winbuild/gen_resp_file.bat \ - winbuild/MakefileBuild.vc winbuild/Makefile.vc - -PLAN9_DIST = plan9/include/mkfile \ - plan9/include/mkfile \ - plan9/mkfile.proto \ - plan9/mkfile \ - plan9/README \ - plan9/lib/mkfile.inc \ - plan9/lib/mkfile \ - plan9/src/mkfile.inc \ - plan9/src/mkfile - -EXTRA_DIST = CHANGES COPYING maketgz Makefile.dist curl-config.in \ - RELEASE-NOTES buildconf libcurl.pc.in MacOSX-Framework $(CMAKE_DIST) \ - $(VC_DIST) $(WINBUILD_DIST) $(PLAN9_DIST) lib/libcurl.vers.in buildconf.bat - -CLEANFILES = $(VC10_LIBVCXPROJ) $(VC10_SRCVCXPROJ) $(VC11_LIBVCXPROJ) \ - $(VC11_SRCVCXPROJ) $(VC12_LIBVCXPROJ) $(VC12_SRCVCXPROJ) $(VC14_LIBVCXPROJ) \ - $(VC14_SRCVCXPROJ) $(VC14_10_LIBVCXPROJ) $(VC14_10_SRCVCXPROJ) \ - $(VC14_30_LIBVCXPROJ) $(VC14_30_SRCVCXPROJ) - -bin_SCRIPTS = curl-config - -SUBDIRS = lib src -DIST_SUBDIRS = $(SUBDIRS) tests packages scripts include docs - -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = libcurl.pc - -# List of files required to generate VC IDE .dsp, .vcproj and .vcxproj files -include lib/Makefile.inc -include src/Makefile.inc - -dist-hook: - rm -rf $(top_builddir)/tests/log - find $(distdir) -name "*.dist" -exec rm {} \; - (distit=`find $(srcdir) -name "*.dist" | grep -v ./ares/`; \ - for file in $$distit; do \ - strip=`echo $$file | sed -e s/^$(srcdir)// -e s/\.dist//`; \ - cp -p $$file $(distdir)$$strip; \ - done) - -html: - cd docs && $(MAKE) html - -pdf: - cd docs && $(MAKE) pdf - -check: test examples check-docs - -if CROSSCOMPILING -test-full: test -test-torture: test - -test: - @echo "NOTICE: we can't run the tests when cross-compiling!" - -else - -test: - @(cd tests; $(MAKE) all quiet-test) - -test-full: - @(cd tests; $(MAKE) all full-test) - -test-nonflaky: - @(cd tests; $(MAKE) all nonflaky-test) - -test-torture: - @(cd tests; $(MAKE) all torture-test) - -test-event: - @(cd tests; $(MAKE) all event-test) - -test-am: - @(cd tests; $(MAKE) all am-test) - -test-ci: - @(cd tests; $(MAKE) all ci-test) - -endif - -examples: - @(cd docs/examples; $(MAKE) check) - -check-docs: - @(cd docs/libcurl; $(MAKE) check) - -# Build source and binary rpms. For rpm-3.0 and above, the ~/.rpmmacros -# must contain the following line: -# %_topdir /home/loic/local/rpm -# and that /home/loic/local/rpm contains the directory SOURCES, BUILD etc. -# -# cd /home/loic/local/rpm ; mkdir -p SOURCES BUILD RPMS/i386 SPECS SRPMS -# -# If additional configure flags are needed to build the package, add the -# following in ~/.rpmmacros -# %configure CFLAGS="%{optflags}" ./configure %{_target_platform} --prefix=%{_prefix} ${AM_CONFIGFLAGS} -# and run make rpm in the following way: -# AM_CONFIGFLAGS='--with-uri=/home/users/loic/local/RedHat-6.2' make rpm -# - -rpms: - $(MAKE) RPMDIST=curl rpm - $(MAKE) RPMDIST=curl-ssl rpm - -rpm: - RPM_TOPDIR=`rpm --showrc | $(PERL) -n -e 'print if(s/.*_topdir\s+(.*)/$$1/)'` ; \ - cp $(srcdir)/packages/Linux/RPM/$(RPMDIST).spec $$RPM_TOPDIR/SPECS ; \ - cp $(PACKAGE)-$(VERSION).tar.gz $$RPM_TOPDIR/SOURCES ; \ - rpm -ba --clean --rmsource $$RPM_TOPDIR/SPECS/$(RPMDIST).spec ; \ - mv $$RPM_TOPDIR/RPMS/i386/$(RPMDIST)-*.rpm . ; \ - mv $$RPM_TOPDIR/SRPMS/$(RPMDIST)-*.src.rpm . - -# -# Build a Solaris pkgadd format file -# run 'make pkgadd' once you've done './configure' and 'make' to make a Solaris pkgadd format -# file (which ends up back in this directory). -# The pkgadd file is in 'pkgtrans' format, so to install on Solaris, do -# pkgadd -d ./HAXXcurl-* -# - -# gak - libtool requires an absolute directory, hence the pwd below... -pkgadd: - umask 022 ; \ - $(MAKE) install DESTDIR=`/bin/pwd`/packages/Solaris/root ; \ - cat COPYING > $(srcdir)/packages/Solaris/copyright ; \ - cd $(srcdir)/packages/Solaris && $(MAKE) package - -# -# Build a cygwin binary tarball installation file -# resulting .tar.bz2 file will end up at packages/Win32/cygwin -cygwinbin: - $(MAKE) -C packages/Win32/cygwin cygwinbin - -# We extend the standard install with a custom hook: -install-data-hook: - (cd include && $(MAKE) install) - (cd docs && $(MAKE) install) - (cd docs/libcurl && $(MAKE) install) - -# We extend the standard uninstall with a custom hook: -uninstall-hook: - (cd include && $(MAKE) uninstall) - (cd docs && $(MAKE) uninstall) - (cd docs/libcurl && $(MAKE) uninstall) - -ca-bundle: $(srcdir)/scripts/mk-ca-bundle.pl - @echo "generating a fresh ca-bundle.crt" - @perl $(srcdir)/scripts/mk-ca-bundle.pl -b -l -u lib/ca-bundle.crt - -ca-firefox: $(srcdir)/scripts/firefox-db2pem.sh - @echo "generating a fresh ca-bundle.crt" - $(srcdir)/scripts/firefox-db2pem.sh lib/ca-bundle.crt - -checksrc: - (cd lib && $(MAKE) checksrc) - (cd src && $(MAKE) checksrc) - (cd tests && $(MAKE) checksrc) - (cd include/curl && $(MAKE) checksrc) - (cd docs/examples && $(MAKE) checksrc) - (cd packages && $(MAKE) checksrc) - -.PHONY: vc-ide - -vc-ide: $(VC10_LIBVCXPROJ_DEPS) $(VC10_SRCVCXPROJ_DEPS) \ - $(VC11_LIBVCXPROJ_DEPS) $(VC11_SRCVCXPROJ_DEPS) $(VC12_LIBVCXPROJ_DEPS) \ - $(VC12_SRCVCXPROJ_DEPS) $(VC14_LIBVCXPROJ_DEPS) $(VC14_SRCVCXPROJ_DEPS) \ - $(VC14_10_LIBVCXPROJ_DEPS) $(VC14_10_SRCVCXPROJ_DEPS) \ - $(VC14_30_LIBVCXPROJ_DEPS) $(VC14_30_SRCVCXPROJ_DEPS) - @(win32_lib_srcs='$(LIB_CFILES)'; \ - win32_lib_hdrs='$(LIB_HFILES) config-win32.h'; \ - win32_lib_rc='$(LIB_RCFILES)'; \ - win32_lib_vauth_srcs='$(LIB_VAUTH_CFILES)'; \ - win32_lib_vauth_hdrs='$(LIB_VAUTH_HFILES)'; \ - win32_lib_vquic_srcs='$(LIB_VQUIC_CFILES)'; \ - win32_lib_vquic_hdrs='$(LIB_VQUIC_HFILES)'; \ - win32_lib_vssh_srcs='$(LIB_VSSH_CFILES)'; \ - win32_lib_vssh_hdrs='$(LIB_VSSH_HFILES)'; \ - win32_lib_vtls_srcs='$(LIB_VTLS_CFILES)'; \ - win32_lib_vtls_hdrs='$(LIB_VTLS_HFILES)'; \ - win32_src_srcs='$(CURL_CFILES)'; \ - win32_src_hdrs='$(CURL_HFILES)'; \ - win32_src_rc='$(CURL_RCFILES)'; \ - win32_src_x_srcs='$(CURLX_CFILES)'; \ - win32_src_x_hdrs='$(CURLX_HFILES) ../lib/config-win32.h'; \ - \ - sorted_lib_srcs=`for file in $$win32_lib_srcs; do echo $$file; done | sort`; \ - sorted_lib_hdrs=`for file in $$win32_lib_hdrs; do echo $$file; done | sort`; \ - sorted_lib_vauth_srcs=`for file in $$win32_lib_vauth_srcs; do echo $$file; done | sort`; \ - sorted_lib_vauth_hdrs=`for file in $$win32_lib_vauth_hdrs; do echo $$file; done | sort`; \ - sorted_lib_vquic_srcs=`for file in $$win32_lib_vquic_srcs; do echo $$file; done | sort`; \ - sorted_lib_vquic_hdrs=`for file in $$win32_lib_vquic_hdrs; do echo $$file; done | sort`; \ - sorted_lib_vssh_srcs=`for file in $$win32_lib_vssh_srcs; do echo $$file; done | sort`; \ - sorted_lib_vssh_hdrs=`for file in $$win32_lib_vssh_hdrs; do echo $$file; done | sort`; \ - sorted_lib_vtls_srcs=`for file in $$win32_lib_vtls_srcs; do echo $$file; done | sort`; \ - sorted_lib_vtls_hdrs=`for file in $$win32_lib_vtls_hdrs; do echo $$file; done | sort`; \ - sorted_src_srcs=`for file in $$win32_src_srcs; do echo $$file; done | sort`; \ - sorted_src_hdrs=`for file in $$win32_src_hdrs; do echo $$file; done | sort`; \ - sorted_src_x_srcs=`for file in $$win32_src_x_srcs; do echo $$file; done | sort`; \ - sorted_src_x_hdrs=`for file in $$win32_src_x_hdrs; do echo $$file; done | sort`; \ - \ - awk_code='\ -function gen_element(type, dir, file)\ -{\ - sub(/vauth\//, "", file);\ - sub(/vquic\//, "", file);\ - sub(/vssh\//, "", file);\ - sub(/vtls\//, "", file);\ -\ - spaces=" ";\ - if(dir == "lib\\vauth" ||\ - dir == "lib\\vquic" ||\ - dir == "lib\\vssh" ||\ - dir == "lib\\vtls")\ - tabs=" ";\ - else\ - tabs=" ";\ -\ - if(type == "dsp") {\ - printf("# Begin Source File\r\n");\ - printf("\r\n");\ - printf("SOURCE=..\\..\\..\\..\\%s\\%s\r\n", dir, file);\ - printf("# End Source File\r\n");\ - }\ - else if(type == "vcproj1") {\ - printf("%s\r\n",\ - tabs, dir, file);\ - printf("%s\r\n", tabs);\ - }\ - else if(type == "vcproj2") {\ - printf("%s\r\n", tabs);\ - printf("%s\r\n", tabs);\ - }\ - else if(type == "vcxproj") {\ - i = index(file, ".");\ - ext = substr(file, i == 0 ? 0 : i + 1);\ -\ - if(ext == "c")\ - printf("%s\r\n",\ - spaces, dir, file);\ - else if(ext == "h")\ - printf("%s\r\n",\ - spaces, dir, file);\ - else if(ext == "rc")\ - printf("%s\r\n",\ - spaces, dir, file);\ - }\ -}\ -\ -{\ -\ - if($$0 == "CURL_LIB_C_FILES") {\ - split(lib_srcs, arr);\ - for(val in arr) gen_element(proj_type, "lib", arr[val]);\ - }\ - else if($$0 == "CURL_LIB_H_FILES") {\ - split(lib_hdrs, arr);\ - for(val in arr) gen_element(proj_type, "lib", arr[val]);\ - }\ - else if($$0 == "CURL_LIB_RC_FILES") {\ - split(lib_rc, arr);\ - for(val in arr) gen_element(proj_type, "lib", arr[val]);\ - }\ - else if($$0 == "CURL_LIB_VAUTH_C_FILES") {\ - split(lib_vauth_srcs, arr);\ - for(val in arr) gen_element(proj_type, "lib\\vauth", arr[val]);\ - }\ - else if($$0 == "CURL_LIB_VAUTH_H_FILES") {\ - split(lib_vauth_hdrs, arr);\ - for(val in arr) gen_element(proj_type, "lib\\vauth", arr[val]);\ - }\ - else if($$0 == "CURL_LIB_VQUIC_C_FILES") {\ - split(lib_vquic_srcs, arr);\ - for(val in arr) gen_element(proj_type, "lib\\vquic", arr[val]);\ - }\ - else if($$0 == "CURL_LIB_VQUIC_H_FILES") {\ - split(lib_vquic_hdrs, arr);\ - for(val in arr) gen_element(proj_type, "lib\\vquic", arr[val]);\ - }\ - else if($$0 == "CURL_LIB_VSSH_C_FILES") {\ - split(lib_vssh_srcs, arr);\ - for(val in arr) gen_element(proj_type, "lib\\vssh", arr[val]);\ - }\ - else if($$0 == "CURL_LIB_VSSH_H_FILES") {\ - split(lib_vssh_hdrs, arr);\ - for(val in arr) gen_element(proj_type, "lib\\vssh", arr[val]);\ - }\ - else if($$0 == "CURL_LIB_VTLS_C_FILES") {\ - split(lib_vtls_srcs, arr);\ - for(val in arr) gen_element(proj_type, "lib\\vtls", arr[val]);\ - }\ - else if($$0 == "CURL_LIB_VTLS_H_FILES") {\ - split(lib_vtls_hdrs, arr);\ - for(val in arr) gen_element(proj_type, "lib\\vtls", arr[val]);\ - }\ - else if($$0 == "CURL_SRC_C_FILES") {\ - split(src_srcs, arr);\ - for(val in arr) gen_element(proj_type, "src", arr[val]);\ - }\ - else if($$0 == "CURL_SRC_H_FILES") {\ - split(src_hdrs, arr);\ - for(val in arr) gen_element(proj_type, "src", arr[val]);\ - }\ - else if($$0 == "CURL_SRC_RC_FILES") {\ - split(src_rc, arr);\ - for(val in arr) gen_element(proj_type, "src", arr[val]);\ - }\ - else if($$0 == "CURL_SRC_X_C_FILES") {\ - split(src_x_srcs, arr);\ - for(val in arr) {\ - sub(/..\/lib\//, "", arr[val]);\ - gen_element(proj_type, "lib", arr[val]);\ - }\ - }\ - else if($$0 == "CURL_SRC_X_H_FILES") {\ - split(src_x_hdrs, arr);\ - for(val in arr) {\ - sub(/..\/lib\//, "", arr[val]);\ - gen_element(proj_type, "lib", arr[val]);\ - }\ - }\ - else\ - printf("%s\r\n", $$0);\ -}';\ - \ - echo "generating '$(VC10_LIBVCXPROJ)'"; \ - awk -v proj_type=vcxproj \ - -v lib_srcs="$$sorted_lib_srcs" \ - -v lib_hdrs="$$sorted_lib_hdrs" \ - -v lib_rc="$$win32_lib_rc" \ - -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \ - -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \ - -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \ - -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \ - -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \ - -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \ - -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \ - -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \ - "$$awk_code" $(srcdir)/$(VC10_LIBTMPL) > $(VC10_LIBVCXPROJ) || { exit 1; }; \ - \ - echo "generating '$(VC10_SRCVCXPROJ)'"; \ - awk -v proj_type=vcxproj \ - -v src_srcs="$$sorted_src_srcs" \ - -v src_hdrs="$$sorted_src_hdrs" \ - -v src_rc="$$win32_src_rc" \ - -v src_x_srcs="$$sorted_src_x_srcs" \ - -v src_x_hdrs="$$sorted_src_x_hdrs" \ - "$$awk_code" $(srcdir)/$(VC10_SRCTMPL) > $(VC10_SRCVCXPROJ) || { exit 1; }; \ - \ - echo "generating '$(VC11_LIBVCXPROJ)'"; \ - awk -v proj_type=vcxproj \ - -v lib_srcs="$$sorted_lib_srcs" \ - -v lib_hdrs="$$sorted_lib_hdrs" \ - -v lib_rc="$$win32_lib_rc" \ - -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \ - -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \ - -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \ - -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \ - -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \ - -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \ - -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \ - -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \ - "$$awk_code" $(srcdir)/$(VC11_LIBTMPL) > $(VC11_LIBVCXPROJ) || { exit 1; }; \ - \ - echo "generating '$(VC11_SRCVCXPROJ)'"; \ - awk -v proj_type=vcxproj \ - -v src_srcs="$$sorted_src_srcs" \ - -v src_hdrs="$$sorted_src_hdrs" \ - -v src_rc="$$win32_src_rc" \ - -v src_x_srcs="$$sorted_src_x_srcs" \ - -v src_x_hdrs="$$sorted_src_x_hdrs" \ - "$$awk_code" $(srcdir)/$(VC11_SRCTMPL) > $(VC11_SRCVCXPROJ) || { exit 1; }; \ - \ - echo "generating '$(VC12_LIBVCXPROJ)'"; \ - awk -v proj_type=vcxproj \ - -v lib_srcs="$$sorted_lib_srcs" \ - -v lib_hdrs="$$sorted_lib_hdrs" \ - -v lib_rc="$$win32_lib_rc" \ - -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \ - -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \ - -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \ - -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \ - -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \ - -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \ - -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \ - -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \ - "$$awk_code" $(srcdir)/$(VC12_LIBTMPL) > $(VC12_LIBVCXPROJ) || { exit 1; }; \ - \ - echo "generating '$(VC12_SRCVCXPROJ)'"; \ - awk -v proj_type=vcxproj \ - -v src_srcs="$$sorted_src_srcs" \ - -v src_hdrs="$$sorted_src_hdrs" \ - -v src_rc="$$win32_src_rc" \ - -v src_x_srcs="$$sorted_src_x_srcs" \ - -v src_x_hdrs="$$sorted_src_x_hdrs" \ - "$$awk_code" $(srcdir)/$(VC12_SRCTMPL) > $(VC12_SRCVCXPROJ) || { exit 1; }; \ - \ - echo "generating '$(VC14_LIBVCXPROJ)'"; \ - awk -v proj_type=vcxproj \ - -v lib_srcs="$$sorted_lib_srcs" \ - -v lib_hdrs="$$sorted_lib_hdrs" \ - -v lib_rc="$$win32_lib_rc" \ - -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \ - -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \ - -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \ - -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \ - -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \ - -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \ - -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \ - -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \ - "$$awk_code" $(srcdir)/$(VC14_LIBTMPL) > $(VC14_LIBVCXPROJ) || { exit 1; }; \ - \ - echo "generating '$(VC14_SRCVCXPROJ)'"; \ - awk -v proj_type=vcxproj \ - -v src_srcs="$$sorted_src_srcs" \ - -v src_hdrs="$$sorted_src_hdrs" \ - -v src_rc="$$win32_src_rc" \ - -v src_x_srcs="$$sorted_src_x_srcs" \ - -v src_x_hdrs="$$sorted_src_x_hdrs" \ - "$$awk_code" $(srcdir)/$(VC14_SRCTMPL) > $(VC14_SRCVCXPROJ) || { exit 1; }; \ - \ - echo "generating '$(VC14_10_LIBVCXPROJ)'"; \ - awk -v proj_type=vcxproj \ - -v lib_srcs="$$sorted_lib_srcs" \ - -v lib_hdrs="$$sorted_lib_hdrs" \ - -v lib_rc="$$win32_lib_rc" \ - -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \ - -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \ - -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \ - -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \ - -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \ - -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \ - -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \ - -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \ - "$$awk_code" $(srcdir)/$(VC14_10_LIBTMPL) > $(VC14_10_LIBVCXPROJ) || { exit 1; }; \ - \ - echo "generating '$(VC14_10_SRCVCXPROJ)'"; \ - awk -v proj_type=vcxproj \ - -v src_srcs="$$sorted_src_srcs" \ - -v src_hdrs="$$sorted_src_hdrs" \ - -v src_rc="$$win32_src_rc" \ - -v src_x_srcs="$$sorted_src_x_srcs" \ - -v src_x_hdrs="$$sorted_src_x_hdrs" \ - "$$awk_code" $(srcdir)/$(VC14_10_SRCTMPL) > $(VC14_10_SRCVCXPROJ) || { exit 1; }; \ - \ - echo "generating '$(VC14_30_LIBVCXPROJ)'"; \ - awk -v proj_type=vcxproj \ - -v lib_srcs="$$sorted_lib_srcs" \ - -v lib_hdrs="$$sorted_lib_hdrs" \ - -v lib_rc="$$win32_lib_rc" \ - -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \ - -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \ - -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \ - -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \ - -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \ - -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \ - -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \ - -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \ - "$$awk_code" $(srcdir)/$(VC14_30_LIBTMPL) > $(VC14_30_LIBVCXPROJ) || { exit 1; }; \ - \ - echo "generating '$(VC14_30_SRCVCXPROJ)'"; \ - awk -v proj_type=vcxproj \ - -v src_srcs="$$sorted_src_srcs" \ - -v src_hdrs="$$sorted_src_hdrs" \ - -v src_rc="$$win32_src_rc" \ - -v src_x_srcs="$$sorted_src_x_srcs" \ - -v src_x_hdrs="$$sorted_src_x_hdrs" \ - "$$awk_code" $(srcdir)/$(VC14_30_SRCTMPL) > $(VC14_30_SRCVCXPROJ) || { exit 1; };) - -tidy: - (cd src && $(MAKE) tidy) - (cd lib && $(MAKE) tidy) diff --git a/Engine/lib/curl/Makefile.in b/Engine/lib/curl/Makefile.in deleted file mode 100644 index 29868b532..000000000 --- a/Engine/lib/curl/Makefile.in +++ /dev/null @@ -1,2114 +0,0 @@ -# Makefile.in generated by automake 1.16.5 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2021 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@ - -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### - -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### - -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### -# ./src/Makefile.inc -# Using the backslash as line continuation character might be problematic with -# some make flavours. If we ever want to change this in a portable manner then -# we should consider this idea : -# CSRC1 = file1.c file2.c file3.c -# CSRC2 = file4.c file5.c file6.c -# CSOURCES = $(CSRC1) $(CSRC2) - - -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = . -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \ - $(top_srcdir)/m4/curl-bearssl.m4 \ - $(top_srcdir)/m4/curl-compilers.m4 \ - $(top_srcdir)/m4/curl-confopts.m4 \ - $(top_srcdir)/m4/curl-functions.m4 \ - $(top_srcdir)/m4/curl-gnutls.m4 \ - $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \ - $(top_srcdir)/m4/curl-openssl.m4 \ - $(top_srcdir)/m4/curl-override.m4 \ - $(top_srcdir)/m4/curl-reentrant.m4 \ - $(top_srcdir)/m4/curl-rustls.m4 \ - $(top_srcdir)/m4/curl-schannel.m4 \ - $(top_srcdir)/m4/curl-sectransp.m4 \ - $(top_srcdir)/m4/curl-sysconfig.m4 \ - $(top_srcdir)/m4/curl-wolfssl.m4 $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/m4/xc-am-iface.m4 \ - $(top_srcdir)/m4/xc-cc-check.m4 \ - $(top_srcdir)/m4/xc-lt-iface.m4 \ - $(top_srcdir)/m4/xc-translit.m4 \ - $(top_srcdir)/m4/xc-val-flgs.m4 \ - $(top_srcdir)/m4/zz40-xc-ovr.m4 \ - $(top_srcdir)/m4/zz50-xc-ovr.m4 \ - $(top_srcdir)/m4/zz60-xc-ovr.m4 $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ - $(am__configure_deps) $(am__DIST_COMMON) -am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ - configure.lineno config.status.lineno -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/lib/curl_config.h -CONFIG_CLEAN_FILES = curl-config libcurl.pc -CONFIG_CLEAN_VPATH_FILES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgconfigdir)" -SCRIPTS = $(bin_SCRIPTS) -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -SOURCES = -DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ - ctags-recursive dvi-recursive html-recursive info-recursive \ - install-data-recursive install-dvi-recursive \ - install-exec-recursive install-html-recursive \ - install-info-recursive install-pdf-recursive \ - install-ps-recursive install-recursive installcheck-recursive \ - installdirs-recursive pdf-recursive ps-recursive \ - tags-recursive uninstall-recursive -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -DATA = $(pkgconfig_DATA) -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -am__recursive_targets = \ - $(RECURSIVE_TARGETS) \ - $(RECURSIVE_CLEAN_TARGETS) \ - $(am__extra_recursive_targets) -AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ - cscope distdir distdir-am dist dist-all distcheck -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/curl-config.in \ - $(srcdir)/lib/Makefile.inc $(srcdir)/libcurl.pc.in \ - $(srcdir)/src/Makefile.inc COPYING README compile config.guess \ - config.sub depcomp install-sh ltmain.sh missing -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -distdir = $(PACKAGE)-$(VERSION) -top_distdir = $(distdir) -am__remove_distdir = \ - if test -d "$(distdir)"; then \ - find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -rf "$(distdir)" \ - || { sleep 5 && rm -rf "$(distdir)"; }; \ - else :; fi -am__post_remove_distdir = $(am__remove_distdir) -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" -DIST_ARCHIVES = $(distdir).tar.gz -GZIP_ENV = --best -DIST_TARGETS = dist-gzip -# Exists only to be overridden by the user if desired. -AM_DISTCHECK_DVI_TARGET = dvi -distuninstallcheck_listfiles = find . -type f -print -am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ - | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' -distcleancheck_listfiles = find . -type f -print -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AR_FLAGS = @AR_FLAGS@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BLANK_AT_MAKETIME = @BLANK_AT_MAKETIME@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CFLAG_CURL_SYMBOL_HIDING = @CFLAG_CURL_SYMBOL_HIDING@ -CONFIGURE_OPTIONS = @CONFIGURE_OPTIONS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CPPFLAG_CURL_STATICLIB = @CPPFLAG_CURL_STATICLIB@ -CSCOPE = @CSCOPE@ -CTAGS = @CTAGS@ -CURLVERSION = @CURLVERSION@ -CURL_CA_BUNDLE = @CURL_CA_BUNDLE@ -CURL_CFLAG_EXTRAS = @CURL_CFLAG_EXTRAS@ -CURL_DISABLE_DICT = @CURL_DISABLE_DICT@ -CURL_DISABLE_FILE = @CURL_DISABLE_FILE@ -CURL_DISABLE_FTP = @CURL_DISABLE_FTP@ -CURL_DISABLE_GOPHER = @CURL_DISABLE_GOPHER@ -CURL_DISABLE_HTTP = @CURL_DISABLE_HTTP@ -CURL_DISABLE_IMAP = @CURL_DISABLE_IMAP@ -CURL_DISABLE_LDAP = @CURL_DISABLE_LDAP@ -CURL_DISABLE_LDAPS = @CURL_DISABLE_LDAPS@ -CURL_DISABLE_MQTT = @CURL_DISABLE_MQTT@ -CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@ -CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@ -CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@ -CURL_DISABLE_SMB = @CURL_DISABLE_SMB@ -CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@ -CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@ -CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@ -CURL_LT_SHLIB_VERSIONED_FLAVOUR = @CURL_LT_SHLIB_VERSIONED_FLAVOUR@ -CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@ -CURL_NETWORK_LIBS = @CURL_NETWORK_LIBS@ -CURL_PLIST_VERSION = @CURL_PLIST_VERSION@ -CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@ -CYGPATH_W = @CYGPATH_W@ -DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -ENABLE_SHARED = @ENABLE_SHARED@ -ENABLE_STATIC = @ENABLE_STATIC@ -ETAGS = @ETAGS@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -FILECMD = @FILECMD@ -FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@ -GCOV = @GCOV@ -GREP = @GREP@ -HAVE_BROTLI = @HAVE_BROTLI@ -HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@ -HAVE_LDAP_SSL = @HAVE_LDAP_SSL@ -HAVE_LIBZ = @HAVE_LIBZ@ -HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@ -HAVE_PROTO_BSDSOCKET_H = @HAVE_PROTO_BSDSOCKET_H@ -HAVE_ZSTD = @HAVE_ZSTD@ -IDN_ENABLED = @IDN_ENABLED@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -IPV6_ENABLED = @IPV6_ENABLED@ -LCOV = @LCOV@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBCURL_LIBS = @LIBCURL_LIBS@ -LIBCURL_NO_SHARED = @LIBCURL_NO_SHARED@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MANOPT = @MANOPT@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NROFF = @NROFF@ -NSS_LIBS = @NSS_LIBS@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PERL = @PERL@ -PKGADD_NAME = @PKGADD_NAME@ -PKGADD_PKG = @PKGADD_PKG@ -PKGADD_VENDOR = @PKGADD_VENDOR@ -PKGCONFIG = @PKGCONFIG@ -RANDOM_FILE = @RANDOM_FILE@ -RANLIB = @RANLIB@ -REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -SSL_BACKENDS = @SSL_BACKENDS@ -SSL_ENABLED = @SSL_ENABLED@ -SSL_LIBS = @SSL_LIBS@ -STRIP = @STRIP@ -SUPPORT_FEATURES = @SUPPORT_FEATURES@ -SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@ -USE_ARES = @USE_ARES@ -USE_BEARSSL = @USE_BEARSSL@ -USE_GNUTLS = @USE_GNUTLS@ -USE_HYPER = @USE_HYPER@ -USE_LIBRTMP = @USE_LIBRTMP@ -USE_LIBSSH = @USE_LIBSSH@ -USE_LIBSSH2 = @USE_LIBSSH2@ -USE_MBEDTLS = @USE_MBEDTLS@ -USE_MSH3 = @USE_MSH3@ -USE_NGHTTP2 = @USE_NGHTTP2@ -USE_NGHTTP3 = @USE_NGHTTP3@ -USE_NGTCP2 = @USE_NGTCP2@ -USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@ -USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@ -USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@ -USE_NSS = @USE_NSS@ -USE_OPENLDAP = @USE_OPENLDAP@ -USE_QUICHE = @USE_QUICHE@ -USE_RUSTLS = @USE_RUSTLS@ -USE_SCHANNEL = @USE_SCHANNEL@ -USE_SECTRANSP = @USE_SECTRANSP@ -USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@ -USE_WIN32_CRYPTO = @USE_WIN32_CRYPTO@ -USE_WIN32_LARGE_FILES = @USE_WIN32_LARGE_FILES@ -USE_WIN32_SMALL_FILES = @USE_WIN32_SMALL_FILES@ -USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@ -USE_WOLFSSH = @USE_WOLFSSH@ -USE_WOLFSSL = @USE_WOLFSSL@ -VERSION = @VERSION@ -VERSIONNUM = @VERSIONNUM@ -ZLIB_LIBS = @ZLIB_LIBS@ -ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -libext = @libext@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -runstatedir = @runstatedir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -AUTOMAKE_OPTIONS = foreign -ACLOCAL_AMFLAGS = -I m4 -CMAKE_DIST = \ - CMake/cmake_uninstall.cmake.in \ - CMake/CMakeConfigurableFile.in \ - CMake/curl-config.cmake.in \ - CMake/CurlSymbolHiding.cmake \ - CMake/CurlTests.c \ - CMake/FindBearSSL.cmake \ - CMake/FindBrotli.cmake \ - CMake/FindCARES.cmake \ - CMake/FindGSS.cmake \ - CMake/FindLibPSL.cmake \ - CMake/FindLibSSH2.cmake \ - CMake/FindMbedTLS.cmake \ - CMake/FindMSH3.cmake \ - CMake/FindNGHTTP2.cmake \ - CMake/FindNGHTTP3.cmake \ - CMake/FindNGTCP2.cmake \ - CMake/FindNSS.cmake \ - CMake/FindQUICHE.cmake \ - CMake/FindWolfSSL.cmake \ - CMake/FindZstd.cmake \ - CMake/Macros.cmake \ - CMake/OtherTests.cmake \ - CMake/Platforms/WindowsCache.cmake \ - CMake/Utilities.cmake \ - CMakeLists.txt - -VC10_LIBTMPL = projects/Windows/VC10/lib/libcurl.tmpl -VC10_LIBVCXPROJ = projects/Windows/VC10/lib/libcurl.vcxproj.dist -VC10_LIBVCXPROJ_DEPS = $(VC10_LIBTMPL) Makefile.am lib/Makefile.inc -VC10_SRCTMPL = projects/Windows/VC10/src/curl.tmpl -VC10_SRCVCXPROJ = projects/Windows/VC10/src/curl.vcxproj.dist -VC10_SRCVCXPROJ_DEPS = $(VC10_SRCTMPL) Makefile.am src/Makefile.inc -VC11_LIBTMPL = projects/Windows/VC11/lib/libcurl.tmpl -VC11_LIBVCXPROJ = projects/Windows/VC11/lib/libcurl.vcxproj.dist -VC11_LIBVCXPROJ_DEPS = $(VC11_LIBTMPL) Makefile.am lib/Makefile.inc -VC11_SRCTMPL = projects/Windows/VC11/src/curl.tmpl -VC11_SRCVCXPROJ = projects/Windows/VC11/src/curl.vcxproj.dist -VC11_SRCVCXPROJ_DEPS = $(VC11_SRCTMPL) Makefile.am src/Makefile.inc -VC12_LIBTMPL = projects/Windows/VC12/lib/libcurl.tmpl -VC12_LIBVCXPROJ = projects/Windows/VC12/lib/libcurl.vcxproj.dist -VC12_LIBVCXPROJ_DEPS = $(VC12_LIBTMPL) Makefile.am lib/Makefile.inc -VC12_SRCTMPL = projects/Windows/VC12/src/curl.tmpl -VC12_SRCVCXPROJ = projects/Windows/VC12/src/curl.vcxproj.dist -VC12_SRCVCXPROJ_DEPS = $(VC12_SRCTMPL) Makefile.am src/Makefile.inc -VC14_LIBTMPL = projects/Windows/VC14/lib/libcurl.tmpl -VC14_LIBVCXPROJ = projects/Windows/VC14/lib/libcurl.vcxproj.dist -VC14_LIBVCXPROJ_DEPS = $(VC14_LIBTMPL) Makefile.am lib/Makefile.inc -VC14_SRCTMPL = projects/Windows/VC14/src/curl.tmpl -VC14_SRCVCXPROJ = projects/Windows/VC14/src/curl.vcxproj.dist -VC14_SRCVCXPROJ_DEPS = $(VC14_SRCTMPL) Makefile.am src/Makefile.inc -VC14_10_LIBTMPL = projects/Windows/VC14.10/lib/libcurl.tmpl -VC14_10_LIBVCXPROJ = projects/Windows/VC14.10/lib/libcurl.vcxproj.dist -VC14_10_LIBVCXPROJ_DEPS = $(VC14_10_LIBTMPL) Makefile.am lib/Makefile.inc -VC14_10_SRCTMPL = projects/Windows/VC14.10/src/curl.tmpl -VC14_10_SRCVCXPROJ = projects/Windows/VC14.10/src/curl.vcxproj.dist -VC14_10_SRCVCXPROJ_DEPS = $(VC14_10_SRCTMPL) Makefile.am src/Makefile.inc -VC14_30_LIBTMPL = projects/Windows/VC14.30/lib/libcurl.tmpl -VC14_30_LIBVCXPROJ = projects/Windows/VC14.30/lib/libcurl.vcxproj.dist -VC14_30_LIBVCXPROJ_DEPS = $(VC14_30_LIBTMPL) Makefile.am lib/Makefile.inc -VC14_30_SRCTMPL = projects/Windows/VC14.30/src/curl.tmpl -VC14_30_SRCVCXPROJ = projects/Windows/VC14.30/src/curl.vcxproj.dist -VC14_30_SRCVCXPROJ_DEPS = $(VC14_30_SRCTMPL) Makefile.am src/Makefile.inc -VC_DIST = projects/README.md \ - projects/build-openssl.bat \ - projects/build-wolfssl.bat \ - projects/checksrc.bat \ - projects/Windows/VC10/curl-all.sln \ - projects/Windows/VC10/lib/libcurl.sln \ - projects/Windows/VC10/lib/libcurl.vcxproj.filters \ - projects/Windows/VC10/src/curl.sln \ - projects/Windows/VC10/src/curl.vcxproj.filters \ - projects/Windows/VC11/curl-all.sln \ - projects/Windows/VC11/lib/libcurl.sln \ - projects/Windows/VC11/lib/libcurl.vcxproj.filters \ - projects/Windows/VC11/src/curl.sln \ - projects/Windows/VC11/src/curl.vcxproj.filters \ - projects/Windows/VC12/curl-all.sln \ - projects/Windows/VC12/lib/libcurl.sln \ - projects/Windows/VC12/lib/libcurl.vcxproj.filters \ - projects/Windows/VC12/src/curl.sln \ - projects/Windows/VC12/src/curl.vcxproj.filters \ - projects/Windows/VC14/curl-all.sln \ - projects/Windows/VC14/lib/libcurl.sln \ - projects/Windows/VC14/lib/libcurl.vcxproj.filters \ - projects/Windows/VC14/src/curl.sln \ - projects/Windows/VC14/src/curl.vcxproj.filters \ - projects/Windows/VC14.10/curl-all.sln \ - projects/Windows/VC14.10/lib/libcurl.sln \ - projects/Windows/VC14.10/lib/libcurl.vcxproj.filters \ - projects/Windows/VC14.10/src/curl.sln \ - projects/Windows/VC14.10/src/curl.vcxproj.filters \ - projects/Windows/VC14.30/curl-all.sln \ - projects/Windows/VC14.30/lib/libcurl.sln \ - projects/Windows/VC14.30/lib/libcurl.vcxproj.filters \ - projects/Windows/VC14.30/src/curl.sln \ - projects/Windows/VC14.30/src/curl.vcxproj.filters \ - projects/generate.bat \ - projects/wolfssl_options.h \ - projects/wolfssl_override.props - -WINBUILD_DIST = winbuild/README.md winbuild/gen_resp_file.bat \ - winbuild/MakefileBuild.vc winbuild/Makefile.vc - -PLAN9_DIST = plan9/include/mkfile \ - plan9/include/mkfile \ - plan9/mkfile.proto \ - plan9/mkfile \ - plan9/README \ - plan9/lib/mkfile.inc \ - plan9/lib/mkfile \ - plan9/src/mkfile.inc \ - plan9/src/mkfile - -EXTRA_DIST = CHANGES COPYING maketgz Makefile.dist curl-config.in \ - RELEASE-NOTES buildconf libcurl.pc.in MacOSX-Framework $(CMAKE_DIST) \ - $(VC_DIST) $(WINBUILD_DIST) $(PLAN9_DIST) lib/libcurl.vers.in buildconf.bat - -CLEANFILES = $(VC10_LIBVCXPROJ) $(VC10_SRCVCXPROJ) $(VC11_LIBVCXPROJ) \ - $(VC11_SRCVCXPROJ) $(VC12_LIBVCXPROJ) $(VC12_SRCVCXPROJ) $(VC14_LIBVCXPROJ) \ - $(VC14_SRCVCXPROJ) $(VC14_10_LIBVCXPROJ) $(VC14_10_SRCVCXPROJ) \ - $(VC14_30_LIBVCXPROJ) $(VC14_30_SRCVCXPROJ) - -bin_SCRIPTS = curl-config -SUBDIRS = lib src -DIST_SUBDIRS = $(SUBDIRS) tests packages scripts include docs -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = libcurl.pc -LIB_VAUTH_CFILES = \ - vauth/cleartext.c \ - vauth/cram.c \ - vauth/digest.c \ - vauth/digest_sspi.c \ - vauth/gsasl.c \ - vauth/krb5_gssapi.c \ - vauth/krb5_sspi.c \ - vauth/ntlm.c \ - vauth/ntlm_sspi.c \ - vauth/oauth2.c \ - vauth/spnego_gssapi.c \ - vauth/spnego_sspi.c \ - vauth/vauth.c - -LIB_VAUTH_HFILES = \ - vauth/digest.h \ - vauth/ntlm.h \ - vauth/vauth.h - -LIB_VTLS_CFILES = \ - vtls/bearssl.c \ - vtls/gskit.c \ - vtls/gtls.c \ - vtls/hostcheck.c \ - vtls/keylog.c \ - vtls/mbedtls.c \ - vtls/mbedtls_threadlock.c \ - vtls/nss.c \ - vtls/openssl.c \ - vtls/rustls.c \ - vtls/schannel.c \ - vtls/schannel_verify.c \ - vtls/sectransp.c \ - vtls/vtls.c \ - vtls/wolfssl.c \ - vtls/x509asn1.c - -LIB_VTLS_HFILES = \ - vtls/bearssl.h \ - vtls/gskit.h \ - vtls/gtls.h \ - vtls/hostcheck.h \ - vtls/keylog.h \ - vtls/mbedtls.h \ - vtls/mbedtls_threadlock.h \ - vtls/nssg.h \ - vtls/openssl.h \ - vtls/rustls.h \ - vtls/schannel.h \ - vtls/sectransp.h \ - vtls/vtls.h \ - vtls/wolfssl.h \ - vtls/x509asn1.h - -LIB_VQUIC_CFILES = \ - vquic/msh3.c \ - vquic/ngtcp2.c \ - vquic/quiche.c \ - vquic/vquic.c - -LIB_VQUIC_HFILES = \ - vquic/msh3.h \ - vquic/ngtcp2.h \ - vquic/quiche.h \ - vquic/vquic.h - -LIB_VSSH_CFILES = \ - vssh/libssh.c \ - vssh/libssh2.c \ - vssh/wolfssh.c - -LIB_VSSH_HFILES = \ - vssh/ssh.h - -LIB_CFILES = \ - altsvc.c \ - amigaos.c \ - asyn-ares.c \ - asyn-thread.c \ - base64.c \ - bufref.c \ - c-hyper.c \ - conncache.c \ - connect.c \ - content_encoding.c \ - cookie.c \ - curl_addrinfo.c \ - curl_ctype.c \ - curl_des.c \ - curl_endian.c \ - curl_fnmatch.c \ - curl_get_line.c \ - curl_gethostname.c \ - curl_gssapi.c \ - curl_memrchr.c \ - curl_multibyte.c \ - curl_ntlm_core.c \ - curl_ntlm_wb.c \ - curl_path.c \ - curl_range.c \ - curl_rtmp.c \ - curl_sasl.c \ - curl_sspi.c \ - curl_threads.c \ - dict.c \ - doh.c \ - dotdot.c \ - dynbuf.c \ - easy.c \ - easygetopt.c \ - easyoptions.c \ - escape.c \ - file.c \ - fileinfo.c \ - fopen.c \ - formdata.c \ - ftp.c \ - ftplistparser.c \ - getenv.c \ - getinfo.c \ - gopher.c \ - h2h3.c \ - hash.c \ - headers.c \ - hmac.c \ - hostasyn.c \ - hostip.c \ - hostip4.c \ - hostip6.c \ - hostsyn.c \ - hsts.c \ - http.c \ - http2.c \ - http_chunks.c \ - http_digest.c \ - http_negotiate.c \ - http_ntlm.c \ - http_proxy.c \ - http_aws_sigv4.c \ - idn_win32.c \ - if2ip.c \ - imap.c \ - inet_ntop.c \ - inet_pton.c \ - krb5.c \ - ldap.c \ - llist.c \ - md4.c \ - md5.c \ - memdebug.c \ - mime.c \ - mprintf.c \ - mqtt.c \ - multi.c \ - netrc.c \ - nonblock.c \ - openldap.c \ - parsedate.c \ - pingpong.c \ - pop3.c \ - progress.c \ - psl.c \ - rand.c \ - rename.c \ - rtsp.c \ - select.c \ - sendf.c \ - setopt.c \ - sha256.c \ - share.c \ - slist.c \ - smb.c \ - smtp.c \ - socketpair.c \ - socks.c \ - socks_gssapi.c \ - socks_sspi.c \ - speedcheck.c \ - splay.c \ - strcase.c \ - strdup.c \ - strerror.c \ - strtok.c \ - strtoofft.c \ - system_win32.c \ - telnet.c \ - tftp.c \ - timediff.c \ - timeval.c \ - transfer.c \ - url.c \ - urlapi.c \ - version.c \ - version_win32.c \ - warnless.c \ - wildcard.c - -LIB_HFILES = \ - altsvc.h \ - amigaos.h \ - arpa_telnet.h \ - asyn.h \ - bufref.h \ - c-hyper.h \ - conncache.h \ - connect.h \ - content_encoding.h \ - cookie.h \ - curl_addrinfo.h \ - curl_base64.h \ - curl_ctype.h \ - curl_des.h \ - curl_endian.h \ - curl_fnmatch.h \ - curl_get_line.h \ - curl_gethostname.h \ - curl_gssapi.h \ - curl_hmac.h \ - curl_krb5.h \ - curl_ldap.h \ - curl_md4.h \ - curl_md5.h \ - curl_memory.h \ - curl_memrchr.h \ - curl_multibyte.h \ - curl_ntlm_core.h \ - curl_ntlm_wb.h \ - curl_path.h \ - curl_printf.h \ - curl_range.h \ - curl_rtmp.h \ - curl_sasl.h \ - curl_setup.h \ - curl_setup_once.h \ - curl_sha256.h \ - curl_sspi.h \ - curl_threads.h \ - curlx.h \ - dict.h \ - doh.h \ - dotdot.h \ - dynbuf.h \ - easy_lock.h \ - easyif.h \ - easyoptions.h \ - escape.h \ - file.h \ - fileinfo.h \ - fopen.h \ - formdata.h \ - ftp.h \ - ftplistparser.h \ - getinfo.h \ - gopher.h \ - h2h3.h \ - hash.h \ - headers.h \ - hostip.h \ - hsts.h \ - http.h \ - http2.h \ - http_chunks.h \ - http_digest.h \ - http_negotiate.h \ - http_ntlm.h \ - http_proxy.h \ - http_aws_sigv4.h \ - if2ip.h \ - imap.h \ - inet_ntop.h \ - inet_pton.h \ - llist.h \ - memdebug.h \ - mime.h \ - mqtt.h \ - multihandle.h \ - multiif.h \ - netrc.h \ - nonblock.h \ - parsedate.h \ - pingpong.h \ - pop3.h \ - progress.h \ - psl.h \ - quic.h \ - rand.h \ - rename.h \ - rtsp.h \ - select.h \ - sendf.h \ - setopt.h \ - setup-vms.h \ - share.h \ - sigpipe.h \ - slist.h \ - smb.h \ - smtp.h \ - sockaddr.h \ - socketpair.h \ - socks.h \ - speedcheck.h \ - splay.h \ - strcase.h \ - strdup.h \ - strerror.h \ - strtok.h \ - strtoofft.h \ - system_win32.h \ - telnet.h \ - tftp.h \ - timediff.h \ - timeval.h \ - transfer.h \ - url.h \ - urlapi-int.h \ - urldata.h \ - version_win32.h \ - warnless.h \ - wildcard.h - -LIB_RCFILES = libcurl.rc -CSOURCES = $(LIB_CFILES) $(LIB_VAUTH_CFILES) $(LIB_VTLS_CFILES) \ - $(LIB_VQUIC_CFILES) $(LIB_VSSH_CFILES) - -HHEADERS = $(LIB_HFILES) $(LIB_VAUTH_HFILES) $(LIB_VTLS_HFILES) \ - $(LIB_VQUIC_HFILES) $(LIB_VSSH_HFILES) - - -# libcurl has sources that provide functions named curlx_* that aren't part of -# the official API, but we re-use the code here to avoid duplication. -CURLX_CFILES = \ - ../lib/strtoofft.c \ - ../lib/timediff.c \ - ../lib/nonblock.c \ - ../lib/warnless.c \ - ../lib/curl_ctype.c \ - ../lib/curl_multibyte.c \ - ../lib/version_win32.c \ - ../lib/dynbuf.c - -CURLX_HFILES = \ - ../lib/curl_setup.h \ - ../lib/strtoofft.h \ - ../lib/timediff.h \ - ../lib/nonblock.h \ - ../lib/warnless.h \ - ../lib/curl_ctype.h \ - ../lib/curl_multibyte.h \ - ../lib/version_win32.h \ - ../lib/dynbuf.h - -CURL_CFILES = \ - slist_wc.c \ - tool_binmode.c \ - tool_bname.c \ - tool_cb_dbg.c \ - tool_cb_hdr.c \ - tool_cb_prg.c \ - tool_cb_rea.c \ - tool_cb_see.c \ - tool_cb_wrt.c \ - tool_cfgable.c \ - tool_dirhie.c \ - tool_doswin.c \ - tool_easysrc.c \ - tool_filetime.c \ - tool_findfile.c \ - tool_formparse.c \ - tool_getparam.c \ - tool_getpass.c \ - tool_help.c \ - tool_helpers.c \ - tool_hugehelp.c \ - tool_libinfo.c \ - tool_listhelp.c \ - tool_main.c \ - tool_msgs.c \ - tool_operate.c \ - tool_operhlp.c \ - tool_panykey.c \ - tool_paramhlp.c \ - tool_parsecfg.c \ - tool_progress.c \ - tool_strdup.c \ - tool_setopt.c \ - tool_sleep.c \ - tool_urlglob.c \ - tool_util.c \ - tool_vms.c \ - tool_writeout.c \ - tool_writeout_json.c \ - tool_xattr.c - -CURL_HFILES = \ - slist_wc.h \ - tool_binmode.h \ - tool_bname.h \ - tool_cb_dbg.h \ - tool_cb_hdr.h \ - tool_cb_prg.h \ - tool_cb_rea.h \ - tool_cb_see.h \ - tool_cb_wrt.h \ - tool_cfgable.h \ - tool_dirhie.h \ - tool_doswin.h \ - tool_easysrc.h \ - tool_filetime.h \ - tool_findfile.h \ - tool_formparse.h \ - tool_getparam.h \ - tool_getpass.h \ - tool_help.h \ - tool_helpers.h \ - tool_hugehelp.h \ - tool_libinfo.h \ - tool_main.h \ - tool_msgs.h \ - tool_operate.h \ - tool_operhlp.h \ - tool_panykey.h \ - tool_paramhlp.h \ - tool_parsecfg.h \ - tool_progress.h \ - tool_sdecls.h \ - tool_setopt.h \ - tool_setup.h \ - tool_sleep.h \ - tool_strdup.h \ - tool_urlglob.h \ - tool_util.h \ - tool_version.h \ - tool_vms.h \ - tool_writeout.h \ - tool_writeout_json.h \ - tool_xattr.h - -CURL_RCFILES = curl.rc - -# curl_SOURCES is special and gets assigned in src/Makefile.am -CURL_FILES = $(CURL_CFILES) $(CURLX_CFILES) $(CURL_HFILES) -all: all-recursive - -.SUFFIXES: -am--refresh: Makefile - @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/lib/Makefile.inc $(srcdir)/src/Makefile.inc $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ - $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - echo ' $(SHELL) ./config.status'; \ - $(SHELL) ./config.status;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ - esac; -$(srcdir)/lib/Makefile.inc $(srcdir)/src/Makefile.inc $(am__empty): - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - $(am__cd) $(srcdir) && $(AUTOCONF) -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) -$(am__aclocal_m4_deps): -curl-config: $(top_builddir)/config.status $(srcdir)/curl-config.in - cd $(top_builddir) && $(SHELL) ./config.status $@ -libcurl.pc: $(top_builddir)/config.status $(srcdir)/libcurl.pc.in - cd $(top_builddir) && $(SHELL) ./config.status $@ -install-binSCRIPTS: $(bin_SCRIPTS) - @$(NORMAL_INSTALL) - @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ - done | \ - sed -e 'p;s,.*/,,;n' \ - -e 'h;s|.*|.|' \ - -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ - $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ - { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ - if ($$2 == $$4) { files[d] = files[d] " " $$1; \ - if (++n[d] == $(am__install_max)) { \ - print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ - else { print "f", d "/" $$4, $$1 } } \ - END { for (d in files) print "f", d, files[d] }' | \ - while read type dir files; do \ - if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ - test -z "$$files" || { \ - echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ - $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ - } \ - ; done - -uninstall-binSCRIPTS: - @$(NORMAL_UNINSTALL) - @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ - files=`for p in $$list; do echo "$$p"; done | \ - sed -e 's,.*/,,;$(transform)'`; \ - dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool config.lt -install-pkgconfigDATA: $(pkgconfig_DATA) - @$(NORMAL_INSTALL) - @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ - done - -uninstall-pkgconfigDATA: - @$(NORMAL_UNINSTALL) - @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) - -# 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. -$(am__recursive_targets): - @fail=; \ - if $(am__make_keepgoing); then \ - failcom='fail=yes'; \ - else \ - failcom='exit 1'; \ - fi; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - 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; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-recursive -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-recursive - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscope: cscope.files - test ! -s cscope.files \ - || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) -clean-cscope: - -rm -f cscope.files -cscope.files: clean-cscope cscopelist -cscopelist: cscopelist-recursive - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -rm -f cscope.out cscope.in.out cscope.po.out cscope.files -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - $(am__remove_distdir) - test -d "$(distdir)" || mkdir "$(distdir)" - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - $(am__make_dryrun) \ - || test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$(top_distdir)" distdir="$(distdir)" \ - dist-hook - -test -n "$(am__skip_mode_fix)" \ - || find "$(distdir)" -type d ! -perm -755 \ - -exec chmod u+rwx,go+rx {} \; -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 $(install_sh) -c -m a+r {} {} \; \ - || chmod -R a+r "$(distdir)" -dist-gzip: distdir - tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz - $(am__post_remove_distdir) - -dist-bzip2: distdir - tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 - $(am__post_remove_distdir) - -dist-lzip: distdir - tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz - $(am__post_remove_distdir) - -dist-xz: distdir - tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz - $(am__post_remove_distdir) - -dist-zstd: distdir - tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst - $(am__post_remove_distdir) - -dist-tarZ: distdir - @echo WARNING: "Support for distribution archives compressed with" \ - "legacy program 'compress' is deprecated." >&2 - @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 - tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z - $(am__post_remove_distdir) - -dist-shar: distdir - @echo WARNING: "Support for shar distribution archives is" \ - "deprecated." >&2 - @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 - shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz - $(am__post_remove_distdir) - -dist-zip: distdir - -rm -f $(distdir).zip - zip -rq $(distdir).zip $(distdir) - $(am__post_remove_distdir) - -dist dist-all: - $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' - $(am__post_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 - case '$(DIST_ARCHIVES)' in \ - *.tar.gz*) \ - eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ - *.tar.bz2*) \ - bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ - *.tar.lz*) \ - lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ - *.tar.xz*) \ - xz -dc $(distdir).tar.xz | $(am__untar) ;;\ - *.tar.Z*) \ - uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ - *.shar.gz*) \ - eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ - *.zip*) \ - unzip $(distdir).zip ;;\ - *.tar.zst*) \ - zstd -dc $(distdir).tar.zst | $(am__untar) ;;\ - esac - chmod -R a-w $(distdir) - chmod u+w $(distdir) - mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst - chmod a-w $(distdir) - test -d $(distdir)/_build || exit 0; \ - dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ - && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ - && am__cwd=`pwd` \ - && $(am__cd) $(distdir)/_build/sub \ - && ../../configure \ - $(AM_DISTCHECK_CONFIGURE_FLAGS) \ - $(DISTCHECK_CONFIGURE_FLAGS) \ - --srcdir=../.. --prefix="$$dc_install_base" \ - && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \ - && $(MAKE) $(AM_MAKEFLAGS) check \ - && $(MAKE) $(AM_MAKEFLAGS) install \ - && $(MAKE) $(AM_MAKEFLAGS) installcheck \ - && $(MAKE) $(AM_MAKEFLAGS) uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ - distuninstallcheck \ - && chmod -R a-w "$$dc_install_base" \ - && ({ \ - (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ - distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ - } || { rm -rf "$$dc_destdir"; exit 1; }) \ - && rm -rf "$$dc_destdir" \ - && $(MAKE) $(AM_MAKEFLAGS) dist \ - && rm -rf $(DIST_ARCHIVES) \ - && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ - && cd "$$am__cwd" \ - || exit 1 - $(am__post_remove_distdir) - @(echo "$(distdir) archives ready for distribution: "; \ - list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ - sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' -distuninstallcheck: - @test -n '$(distuninstallcheck_dir)' || { \ - echo 'ERROR: trying to run $@ with an empty' \ - '$$(distuninstallcheck_dir)' >&2; \ - exit 1; \ - }; \ - $(am__cd) '$(distuninstallcheck_dir)' || { \ - echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ - exit 1; \ - }; \ - test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ - || { echo "ERROR: files left after uninstall:" ; \ - if test -n "$(DESTDIR)"; then \ - echo " (check DESTDIR support)"; \ - fi ; \ - $(distuninstallcheck_listfiles) ; \ - exit 1; } >&2 -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 in build directory after distclean:" ; \ - $(distcleancheck_listfiles) ; \ - exit 1; } >&2 -check-am: all-am -check: check-recursive -all-am: Makefile $(SCRIPTS) $(DATA) -installdirs: installdirs-recursive -installdirs-am: - for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgconfigdir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -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: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -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-libtool mostlyclean-am - -distclean: distclean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool \ - distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html-am: - -info: info-recursive - -info-am: - -install-data-am: install-pkgconfigDATA - @$(NORMAL_INSTALL) - $(MAKE) $(AM_MAKEFLAGS) install-data-hook -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: install-binSCRIPTS - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf $(top_srcdir)/autom4te.cache - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: uninstall-binSCRIPTS uninstall-pkgconfigDATA - @$(NORMAL_INSTALL) - $(MAKE) $(AM_MAKEFLAGS) uninstall-hook -.MAKE: $(am__recursive_targets) install-am install-data-am \ - install-strip uninstall-am - -.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ - am--refresh check check-am clean clean-cscope clean-generic \ - clean-libtool cscope cscopelist-am ctags ctags-am dist \ - dist-all dist-bzip2 dist-gzip dist-hook dist-lzip dist-shar \ - dist-tarZ dist-xz dist-zip dist-zstd distcheck distclean \ - distclean-generic distclean-libtool distclean-tags \ - distcleancheck distdir distuninstallcheck dvi dvi-am html \ - html-am info info-am install install-am install-binSCRIPTS \ - install-data install-data-am install-data-hook install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pkgconfigDATA install-ps \ - install-ps-am install-strip installcheck installcheck-am \ - installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ - uninstall-am uninstall-binSCRIPTS uninstall-hook \ - uninstall-pkgconfigDATA - -.PRECIOUS: Makefile - - -# List of files required to generate VC IDE .dsp, .vcproj and .vcxproj files - -dist-hook: - rm -rf $(top_builddir)/tests/log - find $(distdir) -name "*.dist" -exec rm {} \; - (distit=`find $(srcdir) -name "*.dist" | grep -v ./ares/`; \ - for file in $$distit; do \ - strip=`echo $$file | sed -e s/^$(srcdir)// -e s/\.dist//`; \ - cp -p $$file $(distdir)$$strip; \ - done) - -html: - cd docs && $(MAKE) html - -pdf: - cd docs && $(MAKE) pdf - -check: test examples check-docs - -@CROSSCOMPILING_TRUE@test-full: test -@CROSSCOMPILING_TRUE@test-torture: test - -@CROSSCOMPILING_TRUE@test: -@CROSSCOMPILING_TRUE@ @echo "NOTICE: we can't run the tests when cross-compiling!" - -@CROSSCOMPILING_FALSE@test: -@CROSSCOMPILING_FALSE@ @(cd tests; $(MAKE) all quiet-test) - -@CROSSCOMPILING_FALSE@test-full: -@CROSSCOMPILING_FALSE@ @(cd tests; $(MAKE) all full-test) - -@CROSSCOMPILING_FALSE@test-nonflaky: -@CROSSCOMPILING_FALSE@ @(cd tests; $(MAKE) all nonflaky-test) - -@CROSSCOMPILING_FALSE@test-torture: -@CROSSCOMPILING_FALSE@ @(cd tests; $(MAKE) all torture-test) - -@CROSSCOMPILING_FALSE@test-event: -@CROSSCOMPILING_FALSE@ @(cd tests; $(MAKE) all event-test) - -@CROSSCOMPILING_FALSE@test-am: -@CROSSCOMPILING_FALSE@ @(cd tests; $(MAKE) all am-test) - -@CROSSCOMPILING_FALSE@test-ci: -@CROSSCOMPILING_FALSE@ @(cd tests; $(MAKE) all ci-test) - -examples: - @(cd docs/examples; $(MAKE) check) - -check-docs: - @(cd docs/libcurl; $(MAKE) check) - -# Build source and binary rpms. For rpm-3.0 and above, the ~/.rpmmacros -# must contain the following line: -# %_topdir /home/loic/local/rpm -# and that /home/loic/local/rpm contains the directory SOURCES, BUILD etc. -# -# cd /home/loic/local/rpm ; mkdir -p SOURCES BUILD RPMS/i386 SPECS SRPMS -# -# If additional configure flags are needed to build the package, add the -# following in ~/.rpmmacros -# %configure CFLAGS="%{optflags}" ./configure %{_target_platform} --prefix=%{_prefix} ${AM_CONFIGFLAGS} -# and run make rpm in the following way: -# AM_CONFIGFLAGS='--with-uri=/home/users/loic/local/RedHat-6.2' make rpm -# - -rpms: - $(MAKE) RPMDIST=curl rpm - $(MAKE) RPMDIST=curl-ssl rpm - -rpm: - RPM_TOPDIR=`rpm --showrc | $(PERL) -n -e 'print if(s/.*_topdir\s+(.*)/$$1/)'` ; \ - cp $(srcdir)/packages/Linux/RPM/$(RPMDIST).spec $$RPM_TOPDIR/SPECS ; \ - cp $(PACKAGE)-$(VERSION).tar.gz $$RPM_TOPDIR/SOURCES ; \ - rpm -ba --clean --rmsource $$RPM_TOPDIR/SPECS/$(RPMDIST).spec ; \ - mv $$RPM_TOPDIR/RPMS/i386/$(RPMDIST)-*.rpm . ; \ - mv $$RPM_TOPDIR/SRPMS/$(RPMDIST)-*.src.rpm . - -# -# Build a Solaris pkgadd format file -# run 'make pkgadd' once you've done './configure' and 'make' to make a Solaris pkgadd format -# file (which ends up back in this directory). -# The pkgadd file is in 'pkgtrans' format, so to install on Solaris, do -# pkgadd -d ./HAXXcurl-* -# - -# gak - libtool requires an absolute directory, hence the pwd below... -pkgadd: - umask 022 ; \ - $(MAKE) install DESTDIR=`/bin/pwd`/packages/Solaris/root ; \ - cat COPYING > $(srcdir)/packages/Solaris/copyright ; \ - cd $(srcdir)/packages/Solaris && $(MAKE) package - -# -# Build a cygwin binary tarball installation file -# resulting .tar.bz2 file will end up at packages/Win32/cygwin -cygwinbin: - $(MAKE) -C packages/Win32/cygwin cygwinbin - -# We extend the standard install with a custom hook: -install-data-hook: - (cd include && $(MAKE) install) - (cd docs && $(MAKE) install) - (cd docs/libcurl && $(MAKE) install) - -# We extend the standard uninstall with a custom hook: -uninstall-hook: - (cd include && $(MAKE) uninstall) - (cd docs && $(MAKE) uninstall) - (cd docs/libcurl && $(MAKE) uninstall) - -ca-bundle: $(srcdir)/scripts/mk-ca-bundle.pl - @echo "generating a fresh ca-bundle.crt" - @perl $(srcdir)/scripts/mk-ca-bundle.pl -b -l -u lib/ca-bundle.crt - -ca-firefox: $(srcdir)/scripts/firefox-db2pem.sh - @echo "generating a fresh ca-bundle.crt" - $(srcdir)/scripts/firefox-db2pem.sh lib/ca-bundle.crt - -checksrc: - (cd lib && $(MAKE) checksrc) - (cd src && $(MAKE) checksrc) - (cd tests && $(MAKE) checksrc) - (cd include/curl && $(MAKE) checksrc) - (cd docs/examples && $(MAKE) checksrc) - (cd packages && $(MAKE) checksrc) - -.PHONY: vc-ide - -vc-ide: $(VC10_LIBVCXPROJ_DEPS) $(VC10_SRCVCXPROJ_DEPS) \ - $(VC11_LIBVCXPROJ_DEPS) $(VC11_SRCVCXPROJ_DEPS) $(VC12_LIBVCXPROJ_DEPS) \ - $(VC12_SRCVCXPROJ_DEPS) $(VC14_LIBVCXPROJ_DEPS) $(VC14_SRCVCXPROJ_DEPS) \ - $(VC14_10_LIBVCXPROJ_DEPS) $(VC14_10_SRCVCXPROJ_DEPS) \ - $(VC14_30_LIBVCXPROJ_DEPS) $(VC14_30_SRCVCXPROJ_DEPS) - @(win32_lib_srcs='$(LIB_CFILES)'; \ - win32_lib_hdrs='$(LIB_HFILES) config-win32.h'; \ - win32_lib_rc='$(LIB_RCFILES)'; \ - win32_lib_vauth_srcs='$(LIB_VAUTH_CFILES)'; \ - win32_lib_vauth_hdrs='$(LIB_VAUTH_HFILES)'; \ - win32_lib_vquic_srcs='$(LIB_VQUIC_CFILES)'; \ - win32_lib_vquic_hdrs='$(LIB_VQUIC_HFILES)'; \ - win32_lib_vssh_srcs='$(LIB_VSSH_CFILES)'; \ - win32_lib_vssh_hdrs='$(LIB_VSSH_HFILES)'; \ - win32_lib_vtls_srcs='$(LIB_VTLS_CFILES)'; \ - win32_lib_vtls_hdrs='$(LIB_VTLS_HFILES)'; \ - win32_src_srcs='$(CURL_CFILES)'; \ - win32_src_hdrs='$(CURL_HFILES)'; \ - win32_src_rc='$(CURL_RCFILES)'; \ - win32_src_x_srcs='$(CURLX_CFILES)'; \ - win32_src_x_hdrs='$(CURLX_HFILES) ../lib/config-win32.h'; \ - \ - sorted_lib_srcs=`for file in $$win32_lib_srcs; do echo $$file; done | sort`; \ - sorted_lib_hdrs=`for file in $$win32_lib_hdrs; do echo $$file; done | sort`; \ - sorted_lib_vauth_srcs=`for file in $$win32_lib_vauth_srcs; do echo $$file; done | sort`; \ - sorted_lib_vauth_hdrs=`for file in $$win32_lib_vauth_hdrs; do echo $$file; done | sort`; \ - sorted_lib_vquic_srcs=`for file in $$win32_lib_vquic_srcs; do echo $$file; done | sort`; \ - sorted_lib_vquic_hdrs=`for file in $$win32_lib_vquic_hdrs; do echo $$file; done | sort`; \ - sorted_lib_vssh_srcs=`for file in $$win32_lib_vssh_srcs; do echo $$file; done | sort`; \ - sorted_lib_vssh_hdrs=`for file in $$win32_lib_vssh_hdrs; do echo $$file; done | sort`; \ - sorted_lib_vtls_srcs=`for file in $$win32_lib_vtls_srcs; do echo $$file; done | sort`; \ - sorted_lib_vtls_hdrs=`for file in $$win32_lib_vtls_hdrs; do echo $$file; done | sort`; \ - sorted_src_srcs=`for file in $$win32_src_srcs; do echo $$file; done | sort`; \ - sorted_src_hdrs=`for file in $$win32_src_hdrs; do echo $$file; done | sort`; \ - sorted_src_x_srcs=`for file in $$win32_src_x_srcs; do echo $$file; done | sort`; \ - sorted_src_x_hdrs=`for file in $$win32_src_x_hdrs; do echo $$file; done | sort`; \ - \ - awk_code='\ -function gen_element(type, dir, file)\ -{\ - sub(/vauth\//, "", file);\ - sub(/vquic\//, "", file);\ - sub(/vssh\//, "", file);\ - sub(/vtls\//, "", file);\ -\ - spaces=" ";\ - if(dir == "lib\\vauth" ||\ - dir == "lib\\vquic" ||\ - dir == "lib\\vssh" ||\ - dir == "lib\\vtls")\ - tabs=" ";\ - else\ - tabs=" ";\ -\ - if(type == "dsp") {\ - printf("# Begin Source File\r\n");\ - printf("\r\n");\ - printf("SOURCE=..\\..\\..\\..\\%s\\%s\r\n", dir, file);\ - printf("# End Source File\r\n");\ - }\ - else if(type == "vcproj1") {\ - printf("%s\r\n",\ - tabs, dir, file);\ - printf("%s\r\n", tabs);\ - }\ - else if(type == "vcproj2") {\ - printf("%s\r\n", tabs);\ - printf("%s\r\n", tabs);\ - }\ - else if(type == "vcxproj") {\ - i = index(file, ".");\ - ext = substr(file, i == 0 ? 0 : i + 1);\ -\ - if(ext == "c")\ - printf("%s\r\n",\ - spaces, dir, file);\ - else if(ext == "h")\ - printf("%s\r\n",\ - spaces, dir, file);\ - else if(ext == "rc")\ - printf("%s\r\n",\ - spaces, dir, file);\ - }\ -}\ -\ -{\ -\ - if($$0 == "CURL_LIB_C_FILES") {\ - split(lib_srcs, arr);\ - for(val in arr) gen_element(proj_type, "lib", arr[val]);\ - }\ - else if($$0 == "CURL_LIB_H_FILES") {\ - split(lib_hdrs, arr);\ - for(val in arr) gen_element(proj_type, "lib", arr[val]);\ - }\ - else if($$0 == "CURL_LIB_RC_FILES") {\ - split(lib_rc, arr);\ - for(val in arr) gen_element(proj_type, "lib", arr[val]);\ - }\ - else if($$0 == "CURL_LIB_VAUTH_C_FILES") {\ - split(lib_vauth_srcs, arr);\ - for(val in arr) gen_element(proj_type, "lib\\vauth", arr[val]);\ - }\ - else if($$0 == "CURL_LIB_VAUTH_H_FILES") {\ - split(lib_vauth_hdrs, arr);\ - for(val in arr) gen_element(proj_type, "lib\\vauth", arr[val]);\ - }\ - else if($$0 == "CURL_LIB_VQUIC_C_FILES") {\ - split(lib_vquic_srcs, arr);\ - for(val in arr) gen_element(proj_type, "lib\\vquic", arr[val]);\ - }\ - else if($$0 == "CURL_LIB_VQUIC_H_FILES") {\ - split(lib_vquic_hdrs, arr);\ - for(val in arr) gen_element(proj_type, "lib\\vquic", arr[val]);\ - }\ - else if($$0 == "CURL_LIB_VSSH_C_FILES") {\ - split(lib_vssh_srcs, arr);\ - for(val in arr) gen_element(proj_type, "lib\\vssh", arr[val]);\ - }\ - else if($$0 == "CURL_LIB_VSSH_H_FILES") {\ - split(lib_vssh_hdrs, arr);\ - for(val in arr) gen_element(proj_type, "lib\\vssh", arr[val]);\ - }\ - else if($$0 == "CURL_LIB_VTLS_C_FILES") {\ - split(lib_vtls_srcs, arr);\ - for(val in arr) gen_element(proj_type, "lib\\vtls", arr[val]);\ - }\ - else if($$0 == "CURL_LIB_VTLS_H_FILES") {\ - split(lib_vtls_hdrs, arr);\ - for(val in arr) gen_element(proj_type, "lib\\vtls", arr[val]);\ - }\ - else if($$0 == "CURL_SRC_C_FILES") {\ - split(src_srcs, arr);\ - for(val in arr) gen_element(proj_type, "src", arr[val]);\ - }\ - else if($$0 == "CURL_SRC_H_FILES") {\ - split(src_hdrs, arr);\ - for(val in arr) gen_element(proj_type, "src", arr[val]);\ - }\ - else if($$0 == "CURL_SRC_RC_FILES") {\ - split(src_rc, arr);\ - for(val in arr) gen_element(proj_type, "src", arr[val]);\ - }\ - else if($$0 == "CURL_SRC_X_C_FILES") {\ - split(src_x_srcs, arr);\ - for(val in arr) {\ - sub(/..\/lib\//, "", arr[val]);\ - gen_element(proj_type, "lib", arr[val]);\ - }\ - }\ - else if($$0 == "CURL_SRC_X_H_FILES") {\ - split(src_x_hdrs, arr);\ - for(val in arr) {\ - sub(/..\/lib\//, "", arr[val]);\ - gen_element(proj_type, "lib", arr[val]);\ - }\ - }\ - else\ - printf("%s\r\n", $$0);\ -}';\ - \ - echo "generating '$(VC10_LIBVCXPROJ)'"; \ - awk -v proj_type=vcxproj \ - -v lib_srcs="$$sorted_lib_srcs" \ - -v lib_hdrs="$$sorted_lib_hdrs" \ - -v lib_rc="$$win32_lib_rc" \ - -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \ - -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \ - -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \ - -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \ - -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \ - -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \ - -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \ - -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \ - "$$awk_code" $(srcdir)/$(VC10_LIBTMPL) > $(VC10_LIBVCXPROJ) || { exit 1; }; \ - \ - echo "generating '$(VC10_SRCVCXPROJ)'"; \ - awk -v proj_type=vcxproj \ - -v src_srcs="$$sorted_src_srcs" \ - -v src_hdrs="$$sorted_src_hdrs" \ - -v src_rc="$$win32_src_rc" \ - -v src_x_srcs="$$sorted_src_x_srcs" \ - -v src_x_hdrs="$$sorted_src_x_hdrs" \ - "$$awk_code" $(srcdir)/$(VC10_SRCTMPL) > $(VC10_SRCVCXPROJ) || { exit 1; }; \ - \ - echo "generating '$(VC11_LIBVCXPROJ)'"; \ - awk -v proj_type=vcxproj \ - -v lib_srcs="$$sorted_lib_srcs" \ - -v lib_hdrs="$$sorted_lib_hdrs" \ - -v lib_rc="$$win32_lib_rc" \ - -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \ - -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \ - -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \ - -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \ - -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \ - -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \ - -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \ - -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \ - "$$awk_code" $(srcdir)/$(VC11_LIBTMPL) > $(VC11_LIBVCXPROJ) || { exit 1; }; \ - \ - echo "generating '$(VC11_SRCVCXPROJ)'"; \ - awk -v proj_type=vcxproj \ - -v src_srcs="$$sorted_src_srcs" \ - -v src_hdrs="$$sorted_src_hdrs" \ - -v src_rc="$$win32_src_rc" \ - -v src_x_srcs="$$sorted_src_x_srcs" \ - -v src_x_hdrs="$$sorted_src_x_hdrs" \ - "$$awk_code" $(srcdir)/$(VC11_SRCTMPL) > $(VC11_SRCVCXPROJ) || { exit 1; }; \ - \ - echo "generating '$(VC12_LIBVCXPROJ)'"; \ - awk -v proj_type=vcxproj \ - -v lib_srcs="$$sorted_lib_srcs" \ - -v lib_hdrs="$$sorted_lib_hdrs" \ - -v lib_rc="$$win32_lib_rc" \ - -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \ - -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \ - -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \ - -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \ - -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \ - -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \ - -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \ - -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \ - "$$awk_code" $(srcdir)/$(VC12_LIBTMPL) > $(VC12_LIBVCXPROJ) || { exit 1; }; \ - \ - echo "generating '$(VC12_SRCVCXPROJ)'"; \ - awk -v proj_type=vcxproj \ - -v src_srcs="$$sorted_src_srcs" \ - -v src_hdrs="$$sorted_src_hdrs" \ - -v src_rc="$$win32_src_rc" \ - -v src_x_srcs="$$sorted_src_x_srcs" \ - -v src_x_hdrs="$$sorted_src_x_hdrs" \ - "$$awk_code" $(srcdir)/$(VC12_SRCTMPL) > $(VC12_SRCVCXPROJ) || { exit 1; }; \ - \ - echo "generating '$(VC14_LIBVCXPROJ)'"; \ - awk -v proj_type=vcxproj \ - -v lib_srcs="$$sorted_lib_srcs" \ - -v lib_hdrs="$$sorted_lib_hdrs" \ - -v lib_rc="$$win32_lib_rc" \ - -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \ - -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \ - -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \ - -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \ - -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \ - -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \ - -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \ - -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \ - "$$awk_code" $(srcdir)/$(VC14_LIBTMPL) > $(VC14_LIBVCXPROJ) || { exit 1; }; \ - \ - echo "generating '$(VC14_SRCVCXPROJ)'"; \ - awk -v proj_type=vcxproj \ - -v src_srcs="$$sorted_src_srcs" \ - -v src_hdrs="$$sorted_src_hdrs" \ - -v src_rc="$$win32_src_rc" \ - -v src_x_srcs="$$sorted_src_x_srcs" \ - -v src_x_hdrs="$$sorted_src_x_hdrs" \ - "$$awk_code" $(srcdir)/$(VC14_SRCTMPL) > $(VC14_SRCVCXPROJ) || { exit 1; }; \ - \ - echo "generating '$(VC14_10_LIBVCXPROJ)'"; \ - awk -v proj_type=vcxproj \ - -v lib_srcs="$$sorted_lib_srcs" \ - -v lib_hdrs="$$sorted_lib_hdrs" \ - -v lib_rc="$$win32_lib_rc" \ - -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \ - -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \ - -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \ - -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \ - -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \ - -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \ - -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \ - -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \ - "$$awk_code" $(srcdir)/$(VC14_10_LIBTMPL) > $(VC14_10_LIBVCXPROJ) || { exit 1; }; \ - \ - echo "generating '$(VC14_10_SRCVCXPROJ)'"; \ - awk -v proj_type=vcxproj \ - -v src_srcs="$$sorted_src_srcs" \ - -v src_hdrs="$$sorted_src_hdrs" \ - -v src_rc="$$win32_src_rc" \ - -v src_x_srcs="$$sorted_src_x_srcs" \ - -v src_x_hdrs="$$sorted_src_x_hdrs" \ - "$$awk_code" $(srcdir)/$(VC14_10_SRCTMPL) > $(VC14_10_SRCVCXPROJ) || { exit 1; }; \ - \ - echo "generating '$(VC14_30_LIBVCXPROJ)'"; \ - awk -v proj_type=vcxproj \ - -v lib_srcs="$$sorted_lib_srcs" \ - -v lib_hdrs="$$sorted_lib_hdrs" \ - -v lib_rc="$$win32_lib_rc" \ - -v lib_vauth_srcs="$$sorted_lib_vauth_srcs" \ - -v lib_vauth_hdrs="$$sorted_lib_vauth_hdrs" \ - -v lib_vquic_srcs="$$sorted_lib_vquic_srcs" \ - -v lib_vquic_hdrs="$$sorted_lib_vquic_hdrs" \ - -v lib_vssh_srcs="$$sorted_lib_vssh_srcs" \ - -v lib_vssh_hdrs="$$sorted_lib_vssh_hdrs" \ - -v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \ - -v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \ - "$$awk_code" $(srcdir)/$(VC14_30_LIBTMPL) > $(VC14_30_LIBVCXPROJ) || { exit 1; }; \ - \ - echo "generating '$(VC14_30_SRCVCXPROJ)'"; \ - awk -v proj_type=vcxproj \ - -v src_srcs="$$sorted_src_srcs" \ - -v src_hdrs="$$sorted_src_hdrs" \ - -v src_rc="$$win32_src_rc" \ - -v src_x_srcs="$$sorted_src_x_srcs" \ - -v src_x_hdrs="$$sorted_src_x_hdrs" \ - "$$awk_code" $(srcdir)/$(VC14_30_SRCTMPL) > $(VC14_30_SRCVCXPROJ) || { exit 1; };) - -tidy: - (cd src && $(MAKE) tidy) - (cd lib && $(MAKE) tidy) - -# 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/Engine/lib/curl/README b/Engine/lib/curl/README deleted file mode 100644 index 9705f4198..000000000 --- a/Engine/lib/curl/README +++ /dev/null @@ -1,55 +0,0 @@ - _ _ ____ _ - ___| | | | _ \| | - / __| | | | |_) | | - | (__| |_| | _ <| |___ - \___|\___/|_| \_\_____| - -README - - Curl is a command line tool for transferring data specified with URL - syntax. Find out how to use curl by reading the curl.1 man page or the - MANUAL document. Find out how to install Curl by reading the INSTALL - document. - - libcurl is the library curl is using to do its job. It is readily - available to be used by your software. Read the libcurl.3 man page to - learn how! - - You find answers to the most frequent questions we get in the FAQ document. - - Study the COPYING file for distribution terms. - - Those documents and more can be found in the docs/ directory. - -CONTACT - - If you have problems, questions, ideas or suggestions, please contact us - by posting to a suitable mailing list. See https://curl.se/mail/ - - All contributors to the project are listed in the THANKS document. - -WEBSITE - - Visit the curl website for the latest news and downloads: - - https://curl.se/ - -GIT - - To download the very latest source off the GIT server do this: - - git clone https://github.com/curl/curl.git - - (you will get a directory named curl created, filled with the source code) - -SECURITY PROBLEMS - - Report suspected security problems via our HackerOne page and not in public! - - https://hackerone.com/curl - -NOTICE - - Curl contains pieces of source code that is Copyright (c) 1998, 1999 - Kungliga Tekniska Högskolan. This notice is included here to comply with the - distribution terms. diff --git a/Engine/lib/curl/RELEASE-NOTES b/Engine/lib/curl/RELEASE-NOTES deleted file mode 100644 index 30165420b..000000000 --- a/Engine/lib/curl/RELEASE-NOTES +++ /dev/null @@ -1,379 +0,0 @@ -curl and libcurl 7.85.0 - - Public curl releases: 210 - Command line options: 248 - curl_easy_setopt() options: 299 - Public functions in libcurl: 88 - Contributors: 2690 - -This release includes the following changes: - - o quic: add support via wolfSSL [142] - o schannel: Add TLS 1.3 support [96] - o setopt: add CURLOPT_PROTOCOLS_STR and CURLOPT_REDIR_PROTOCOLS_STR [30] - -This release includes the following bugfixes: - - o amigaos: fix threaded resolver on AmigaOS 4.x [133] - o amissl: allow AmiSSL to be used with AmigaOS 4.x builds [115] - o amissl: make AmiSSL v5 a minimum requirement [117] - o asyn-ares: make a single alloc out of hostname + async data [123] - o asyn-thread: fix socket leak on OOM [128] - o asyn-thread: make getaddrinfo_complete return CURLcode [53] - o base64: base64url encoding has no padding [41] - o BUGS.md: improve language [62] - o build: improve OS string in CMake and `config-win32.h` [15] - o cert.d: clarify that escape character works for file paths [161] - o cirrus.yml: replace py38-pip with py39-pip [63] - o cirrus/freebsd-ci: bootstrap the pip installer [104] - o cmake: add detection of threadsafe feature [163] - o cmake: do not force Windows target versions [28] - o cmake: fix build for mingw cross compile [33] - o cmake: link curl to its dependencies with PRIVATE [57] - o cmake: remove APPEND in export(TARGETS) [58] - o cmake: set feature PSL if present [168] - o cmake: support ngtcp2 boringssl backend [18] - o cmdline-opts/gen.pl: improve performance [97] - o config: remove the check for and use of SIZEOF_SHORT [129] - o configure: -pthread not available on AmigaOS 4.x [118] - o configure: check for the stdatomic.h header in configure [7] - o configure: fix --disable-headers-api [55] - o configure: fix broken m4 syntax in TLS options [145] - o configure: fixup bsdsocket detection code for AmigaOS 4.x [110] - o configure: if asked to use TLS, fail if no TLS lib was detected [156] - o configure: introduce CURL_SIZEOF [130] - o connect: add quic connection information [100] - o connect: close the happy eyeballs loser connection when using QUIC [109] - o connect: revert the use of IP*_RECVERR [102] - o connect: set socktype/protocol correctly [114] - o cookie: reject cookies with "control bytes" [152] - o cookie: treat a blank domain in Set-Cookie: as non-existing [40] - o cookie: use %zu to infof() for size_t values [26] - o curl-compilers.m4: make icc use -diag* options and disable two warnings [84] - o curl-config: quote directories with potential space [132] - o curl-confopts: remove leftover AC_REQUIREs [91] - o curl-functions.m4: check whether atomics can link [86] - o curl-wolfssl.m4: add options header when building test code [87] - o curl.h: CURLE_CONV_FAILED is obsoleted [4] - o curl.h: include on SunOS [151] - o curl: output warning when a cookie is dropped due to size [5] - o curl: writeout: fix repeated header outputs [47] - o Curl_close: call Curl_resolver_cancel to avoid memory-leak [124] - o curl_easy_header: Add CURLH_PSEUDO to sanity check [94] - o curl_mime_data.3: polish the wording [6] - o curl_multi_timeout.3: clarify usage [48] - o CURLINFO_SPEED_UPLOAD/DOWNLOAD.3: fix examples [121] - o CURLOPT_BUFFERSIZE.3: add upload buffersize to see also [159] - o CURLOPT_CONNECT_ONLY.3: clarify multi API use [64] - o CURLOPT_SERVER_RESPONSE_TIMEOUT: the new name [16] - o digest: fix memory leak, fix not quoted 'opaque' [66] - o digest: fix missing increment of 'nc' value for auth-int [39] - o digest: pass over leading spaces in qop values [119] - o digest: reject broken header with session protocol but without qop [120] - o docs/cmdline-opts/gen.pl: encode leading single and double quotes [138] - o docs/cmdline-opts: fix example and categories for --form-escape [125] - o docs/cmdline: mark fail and fail-with-body as mutually exclusive [98] - o docs: add dns category to --resolve [95] - o docs: explain curl_easy_escape/unescape curl handle is ignored [23] - o docs: remove him/her/he/she from documentation [103] - o doh: move doh related struct definitions to doh.h [45] - o doh: use https protocol by default [51] - o easy_lock.h: include sched.h if available to fix build [13] - o easy_lock.h: use __asm__ instead of asm to fix build [11] - o easy_lock: fix build for mingw [34] - o easy_lock: fix build with icc [54] - o easy_lock: fix the #ifdef conditional for ia32_pause [8] - o easy_lock: switch to using atomic_int instead of bool [9] - o easyoptions: fix icc warning [42] - o escape: remove outdated comment [25] - o examples/curlx.c: remove [150] - o file: add handling of native AmigaOS paths [108] - o file: fix icc enumerated type mixed with another type warning [92] - o ftp: use a correct expire ID for timer expiry [88] - o getinfo: return better error on NULL as first argument [21] - o GHA: add two Intel compiler CI jobs [85] - o GHA: move libressl CI from zuul to GitHub [144] - o gha: move over ngtcp2-gnutls CI job from zuul [162] - o GHA: mv CI torture test from Zuul [135] - o h2h3: fix overriding the 'TE: Trailers' header [43] - o hostip: resolve *.localhost to 127.0.0.1/::1 [127] - o HTTP3.md: update to msh3 v0.4.0 [126] - o http: typecast the httpreq assignment to avoid icc compiler warning [76] - o http_aws_sigv4.c: remove two unusued includes [36] - o http_chunks: remove an assign + typecast [82] - o hyper: customize test1274 to how hyper unfolds headers [131] - o hyper: enable obs-folded multiline headers [101] - o hyper: use wakers for curl pause/resume [2] - o imap: use ISALNUM() for alphanumeric checks [134] - o ldap: adapt to conn->port now being an 'int' [106] - o lib/curl_path.c: add ISC to license expression [1] - o lib3026: reduce the number of threads to 100 [44] - o libcurl-security.3: fix typo on macro "SH_" [12] - o libssh2: make atime/mtime date overflow return error [148] - o libssh2: provide symlink name in SFTP dir listing [155] - o libssh: ignore deprecation warnings [157] - o libssh: make atime/mtime date overflow return error [149] - o Makefile.m32: add `CURL_RC` and `CURL_STRIP` variables [ci skip] [17] - o Makefile.m32: add `NGTCP2_LIBS` option [ci skip] [38] - o makefile.m32: add support for custom ARCH [ci skip] [27] - o Makefile.m32: allow -nghttp3/-ngtcp2 without -ssl [ci skip] [141] - o Makefile.m32: do not set the libcurl.rc debug flag [ci skip] [3] - o Makefile.m32: stop trying to build libcares.a [ci skip] [46] - o memdebug: add annotation attributes [143] - o mprintf: fix *dyn_vprintf() when out-of-memory [90] - o mprintf: make dprintf_formatf never return negative [49] - o msh3: fix the QUIC disconnect function [107] - o multi: fix the return code from Curl_pgrsDone() [80] - o multi: have curl_multi_remove_handle close CONNECT_ONLY transfer [136] - o multi: use a pipe instead of a socketpair on apple platforms [154] - o multi: use larger dns hash table for multi interface [140] - o multi_wait: fix and improve Curl_poll error handling on Windows [146] - o multi_wait: fix skipping to populate revents for extra_fds [147] - o netrc.d: remove spurious quote [37] - o netrc: Use the password from lines without login [166] - o ngtcp2: Fix build error due to change in nghttp3 prototypes [61] - o ngtcp2: fix incompatible function pointer types [10] - o ngtcp2: Fix missing initialization of nghttp3_nv.flags [31] - o ngtcp2: fix stall or busy loop on STOP_SENDING with upload data [19] - o ngtcp2: implement cb_h3_stop_sending and cb_h3_reset_stream callbacks [59] - o openssl: add `CURL_BORINGSSL_VERSION` to identify BoringSSL [24] - o openssl: add cert path in error message [160] - o openssl: add details to "unable to set client certificate" error [116] - o openssl: fix BoringSSL symbol conflicts with LDAP and Schannel [52] - o quiche: fix build failure [99] - o select: do not return fatal error on EINTR from poll() [32] - o sendf: fix paused header writes since after the header API [89] - o sendf: make Curl_debug a void function [81] - o sendf: skip storing HTTP headers if HTTP disabled [73] - o sendf: store the header type in an usigned char to avoid icc warnings [79] - o splay: avoid using -1 in unsigned variable [78] - o test3026: add support for Windows using native Win32 threads [65] - o test3026: require 'threadsafe' [56] - o test44[2-4]: add '--resolve' to the keywords [122] - o tests/server/sockfilt.c: avoid race condition without a mutex [139] - o tests: fix http2 tests to use CRLF headers [153] - o tests: several enumerated type cleanups [67] - o THANKS: merged two entries for Evgeny Grin - o tidy-up: delete unused build configuration macros [93] - o tool: reintroduce set file comment code for AmigaOS [111] - o tool_cfgable: make 'synthetic_error' a plain bool [70] - o tool_formparse: fix variable may be used before its value is set [72] - o tool_getparam: make --doh-url "" switch it off [60] - o tool_getparam: repair cleanarg [22] - o tool_operate: better cleanup of easy handle in exit path [20] - o tool_paramhlp: fix "enumerated type mixed with another type" [68] - o tool_paramhlp: make check_protocol return ParameterError [71] - o tool_progress: avoid division by zero in parallel progress meter [35] - o tool_writeout: fix enumerated type mixed with another type [69] - o trace: 0x7F character is non-printable [50] - o unit1303: four tests should have TRUE for 'connecting' [158] - o url: enumerated type mixed with another type [74] - o url: really use the user provided in the url when netrc entry exists [165] - o url: reject URLs with hostnames longer than 65535 bytes [137] - o url: treat missing usernames in netrc as empty [167] - o urldata: change second proxytype field to unsigned char to match [75] - o urldata: make 'negnpn' use less storage [112] - o urldata: make state.httpreq an unsigned char [77] - o urldata: make three *_proto struct fields smaller [113] - o urldata: move smaller fields down in connectdata struct [105] - o urldata: reduce size of several struct fields [14] - o vtls: make Curl_ssl_backend() return the enum type curl_sslbackend [83] - o windows: improve random source [29] - -This release includes the following known bugs: - - o see docs/KNOWN_BUGS (https://curl.se/docs/knownbugs.html) - -This release would not have looked like this without help, code, reports and -advice from friends like these: - - Adam Sampson, Alessandro Ghedini, Alexandre Bury, Andreas Sommer, - Andrew Lambert, Axel Chong, Brad Forschinger, Brian Carpenter, - Cering on github, Chris Paulson-Ellis, Chris Young, Daniel Katz, - Daniel Stenberg, David Carlier, dEajL3kA on github, Domen Kožar, - Dominik Thalhammer, Don J Olmstead, Dustin Howett, Emanuele Torre, - Emil Engler, Érico Nogueira Rolim, Even Rouault, Evgeny Grin (Karlson2k), - Fabian Fischer, Fabian Keil, Gisle Vanem, Gwen Shapira, Harry Sintonen, - highmtworks on github, Ivan Tsybulin, Jacob Tolar, Jakub Zakrzewski, - Jilayne Lovejoy, Joshua Root, jurisuk on github, jvvprasad78 on github, - Kai Pastor, Litter White, lwthiker on github, Marcel Raad, Marc Hörsken, - Marco Kamner, MasterInQuestion on github, Matthew Thompson, Maxim Ivanov, - Michael Trebilcock, MichaÅ‚ Antoniak, Nao Yonashiro, Nick Banks, - Oliver Roberts, opensignature on github, Orgad Shaneh, Patrick Monnerat, - Philip H, privetryan on github, Ray Satiro, rcombs on github, Rosen Penev, - Ryan Schmidt, Ryan Sleevi, rzrymiak on github, Samuel Henrique, - Sean McArthur, Sergey Ogryzkov, Somnath Kundu, Stefan Eissing, - Sukanya Hanumanthu, Tatsuhiro Tsujikawa, Ted Lyngmo, TheKnarf on github, - Thomas Weißschuh, Tobias Nygren, Viktor Szakats, vlubart on github, Wu Zheng, - Wyatt O'Day, Xiaoke Wang, yiyuaner on github - (79 contributors) - -References to bug reports and discussions on issues: - - [1] = https://curl.se/bug/?i=9073 - [2] = https://curl.se/bug/?i=9070 - [3] = https://curl.se/bug/?i=9069 - [4] = https://curl.se/bug/?i=9067 - [5] = https://curl.se/bug/?i=9064 - [6] = https://curl.se/bug/?i=9063 - [7] = https://curl.se/bug/?i=9059 - [8] = https://curl.se/bug/?i=9058 - [9] = https://curl.se/bug/?i=9055 - [10] = https://curl.se/bug/?i=9056 - [11] = https://curl.se/bug/?i=9056 - [12] = https://curl.se/bug/?i=9057 - [13] = https://curl.se/bug/?i=9054 - [14] = https://curl.se/bug/?i=9106 - [15] = https://curl.se/bug/?i=9117 - [16] = https://curl.se/bug/?i=9104 - [17] = https://curl.se/bug/?i=9132 - [18] = https://curl.se/bug/?i=9065 - [19] = https://curl.se/bug/?i=9122 - [20] = https://curl.se/bug/?i=9114 - [21] = https://curl.se/bug/?i=9114 - [22] = https://curl.se/bug/?i=9128 - [23] = https://curl.se/bug/?i=9115 - [24] = https://curl.se/bug/?i=9113 - [25] = https://curl.se/bug/?i=9115 - [26] = https://curl.se/bug/?i=9095 - [27] = https://curl.se/bug/?i=9092 - [28] = https://curl.se/bug/?i=9046 - [29] = https://curl.se/bug/?i=9027 - [30] = https://curl.se/bug/?i=8992 - [31] = https://curl.se/bug/?i=9118 - [32] = https://bugs.archlinux.org/task/75201 - [33] = https://curl.se/bug/?i=9084 - [34] = https://curl.se/bug/?i=8997 - [35] = https://curl.se/bug/?i=9082 - [36] = https://curl.se/bug/?i=9080 - [37] = https://curl.se/bug/?i=9111 - [38] = https://curl.se/bug/?i=9109 - [39] = https://curl.se/bug/?i=9090 - [40] = https://curl.se/bug/?i=9164 - [41] = https://curl.se/bug/?i=9139 - [42] = https://curl.se/bug/?i=9176 - [43] = https://curl.se/bug/?i=9170 - [44] = https://curl.se/bug/?i=9172 - [45] = https://curl.se/bug/?i=9174 - [46] = https://curl.se/bug/?i=9169 - [47] = https://curl.se/bug/?i=9150 - [48] = https://curl.se/bug/?i=9155 - [49] = https://curl.se/bug/?i=9149 - [50] = https://curl.se/bug/?i=9162 - [51] = https://curl.se/bug/?i=9163 - [52] = https://curl.se/bug/?i=9110 - [53] = https://curl.se/bug/?i=9081 - [54] = https://curl.se/bug/?i=9081 - [55] = https://curl.se/bug/?i=9134 - [56] = https://curl.se/bug/?i=9141 - [57] = https://curl.se/bug/?i=9125 - [58] = https://curl.se/bug/?i=9124 - [59] = https://curl.se/bug/?i=9135 - [60] = https://curl.se/bug/?i=9207 - [61] = https://curl.se/bug/?i=9204 - [62] = https://curl.se/bug/?i=9205 - [63] = https://curl.se/bug/?i=9201 - [64] = https://curl.se/bug/?i=9244 - [65] = https://curl.se/bug/?i=9012 - [66] = https://curl.se/bug/?i=9199 - [67] = https://curl.se/bug/?i=9179 - [68] = https://curl.se/bug/?i=9179 - [69] = https://curl.se/bug/?i=9179 - [70] = https://curl.se/bug/?i=9179 - [71] = https://curl.se/bug/?i=9179 - [72] = https://curl.se/bug/?i=9179 - [73] = https://curl.se/bug/?i=9179 - [74] = https://curl.se/bug/?i=9179 - [75] = https://curl.se/bug/?i=9179 - [76] = https://curl.se/bug/?i=9179 - [77] = https://curl.se/bug/?i=9179 - [78] = https://curl.se/bug/?i=9179 - [79] = https://curl.se/bug/?i=9179 - [80] = https://curl.se/bug/?i=9179 - [81] = https://curl.se/bug/?i=9179 - [82] = https://curl.se/bug/?i=9179 - [83] = https://curl.se/bug/?i=9179 - [84] = https://curl.se/bug/?i=9179 - [85] = https://curl.se/bug/?i=9179 - [86] = https://curl.se/bug/?i=9190 - [87] = https://curl.se/bug/?i=9187 - [88] = https://curl.se/bug/?i=9184 - [89] = https://curl.se/bug/?i=9180 - [90] = https://curl.se/bug/?i=9185 - [91] = https://curl.se/bug/?i=9183 - [92] = https://curl.se/bug/?i=9181 - [93] = https://curl.se/bug/?i=9044 - [94] = https://curl.se/bug/?i=9235 - [95] = https://curl.se/bug/?i=9229 - [96] = https://curl.se/bug/?i=8419 - [97] = https://curl.se/bug/?i=9230 - [98] = https://curl.se/bug/?i=9221 - [99] = https://curl.se/bug/?i=9223 - [100] = https://curl.se/bug/?i=9286 - [101] = https://curl.se/bug/?i=9216 - [102] = https://curl.se/bug/?i=9209 - [103] = https://curl.se/bug/?i=9208 - [104] = https://curl.se/bug/?i=9213 - [105] = https://curl.se/bug/?i=9280 - [106] = https://curl.se/bug/?i=9281 - [107] = https://curl.se/bug/?i=8915 - [108] = https://curl.se/bug/?i=9259 - [109] = https://curl.se/bug/?i=9303 - [110] = https://curl.se/bug/?i=9268 - [111] = https://curl.se/bug/?i=9258 - [112] = https://curl.se/bug/?i=9279 - [113] = https://curl.se/bug/?i=9278 - [114] = https://curl.se/bug/?i=9274 - [115] = https://curl.se/bug/?i=9269 - [116] = https://curl.se/bug/?i=9228 - [117] = https://curl.se/bug/?i=9267 - [118] = https://curl.se/bug/?i=9266 - [119] = https://curl.se/bug/?i=9264 - [120] = https://curl.se/bug/?i=9077 - [121] = https://curl.se/bug/?i=9239 - [122] = https://curl.se/bug/?i=9250 - [123] = https://curl.se/bug/?i=9310 - [124] = https://curl.se/bug/?i=9310 - [125] = https://curl.se/bug/?i=9298 - [126] = https://curl.se/bug/?i=9297 - [127] = https://curl.se/bug/?i=9192 - [128] = https://curl.se/bug/?i=9310 - [129] = https://curl.se/bug/?i=9291 - [130] = https://curl.se/bug/?i=9291 - [131] = https://curl.se/bug/?i=9217 - [132] = https://curl.se/bug/?i=9253 - [133] = https://curl.se/bug/?i=9265 - [134] = https://curl.se/bug/?i=9289 - [135] = https://curl.se/bug/?i=9310 - [136] = https://curl.se/bug/?i=9335 - [137] = https://curl.se/bug/?i=9317 - [138] = https://curl.se/bug/?i=9352 - [139] = https://curl.se/bug/?i=9023 - [140] = https://curl.se/bug/?i=9376 - [141] = https://curl.se/bug/?i=9314 - [142] = https://curl.se/bug/?i=9290 - [143] = https://curl.se/bug/?i=9306 - [144] = https://curl.se/bug/?i=9309 - [145] = https://curl.se/bug/?i=9344 - [146] = https://curl.se/bug/?i=9372 - [147] = https://curl.se/bug/?i=9361 - [148] = https://curl.se/bug/?i=9328 - [149] = https://curl.se/bug/?i=9328 - [150] = https://curl.se/bug/?i=9330 - [151] = https://curl.se/bug/?i=9329 - [152] = https://curl.se/docs/CVE-2022-35252.html - [153] = https://curl.se/bug/?i=9364 - [154] = https://curl.se/bug/?i=6132 - [155] = https://curl.se/bug/?i=9369 - [156] = https://curl.se/bug/?i=9367 - [157] = https://curl.se/bug/?i=9382 - [158] = https://curl.se/bug/?i=9356 - [159] = https://curl.se/bug/?i=9354 - [160] = https://curl.se/bug/?i=9349 - [161] = https://curl.se/bug/?i=9349 - [162] = https://curl.se/bug/?i=9331 - [163] = https://curl.se/bug/?i=9312 - [165] = https://curl.se/bug/?i=9243 - [166] = https://curl.se/bug/?i=9248 - [167] = https://curl.se/bug/?i=8653 - [168] = https://curl.se/bug/?i=9391 diff --git a/Engine/lib/curl/acinclude.m4 b/Engine/lib/curl/acinclude.m4 deleted file mode 100644 index cd26f4306..000000000 --- a/Engine/lib/curl/acinclude.m4 +++ /dev/null @@ -1,2262 +0,0 @@ -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -#*************************************************************************** - -dnl CURL_CHECK_DEF (SYMBOL, [INCLUDES], [SILENT]) -dnl ------------------------------------------------- -dnl Use the C preprocessor to find out if the given object-style symbol -dnl is defined and get its expansion. This macro will not use default -dnl includes even if no INCLUDES argument is given. This macro will run -dnl silently when invoked with three arguments. If the expansion would -dnl result in a set of double-quoted strings the returned expansion will -dnl actually be a single double-quoted string concatenating all them. - -AC_DEFUN([CURL_CHECK_DEF], [ - AC_REQUIRE([CURL_CPP_P])dnl - OLDCPPFLAGS=$CPPFLAGS - # CPPPFLAG comes from CURL_CPP_P - CPPFLAGS="$CPPFLAGS $CPPPFLAG" - AS_VAR_PUSHDEF([ac_HaveDef], [curl_cv_have_def_$1])dnl - AS_VAR_PUSHDEF([ac_Def], [curl_cv_def_$1])dnl - if test -z "$SED"; then - AC_MSG_ERROR([SED not set. Cannot continue without SED being set.]) - fi - if test -z "$GREP"; then - AC_MSG_ERROR([GREP not set. Cannot continue without GREP being set.]) - fi - ifelse($3,,[AC_MSG_CHECKING([for preprocessor definition of $1])]) - tmp_exp="" - AC_PREPROC_IFELSE([ - AC_LANG_SOURCE( -ifelse($2,,,[$2])[[ -#ifdef $1 -CURL_DEF_TOKEN $1 -#endif - ]]) - ],[ - tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \ - "$GREP" CURL_DEF_TOKEN 2>/dev/null | \ - "$SED" 's/.*CURL_DEF_TOKEN[[ ]][[ ]]*//' 2>/dev/null | \ - "$SED" 's/[["]][[ ]]*[["]]//g' 2>/dev/null` - if test -z "$tmp_exp" || test "$tmp_exp" = "$1"; then - tmp_exp="" - fi - ]) - if test -z "$tmp_exp"; then - AS_VAR_SET(ac_HaveDef, no) - ifelse($3,,[AC_MSG_RESULT([no])]) - else - AS_VAR_SET(ac_HaveDef, yes) - AS_VAR_SET(ac_Def, $tmp_exp) - ifelse($3,,[AC_MSG_RESULT([$tmp_exp])]) - fi - AS_VAR_POPDEF([ac_Def])dnl - AS_VAR_POPDEF([ac_HaveDef])dnl - CPPFLAGS=$OLDCPPFLAGS -]) - - -dnl CURL_CHECK_DEF_CC (SYMBOL, [INCLUDES], [SILENT]) -dnl ------------------------------------------------- -dnl Use the C compiler to find out only if the given symbol is defined -dnl or not, this can not find out its expansion. This macro will not use -dnl default includes even if no INCLUDES argument is given. This macro -dnl will run silently when invoked with three arguments. - -AC_DEFUN([CURL_CHECK_DEF_CC], [ - AS_VAR_PUSHDEF([ac_HaveDef], [curl_cv_have_def_$1])dnl - ifelse($3,,[AC_MSG_CHECKING([for compiler definition of $1])]) - AC_COMPILE_IFELSE([ - AC_LANG_SOURCE( -ifelse($2,,,[$2])[[ -int main (void) -{ -#ifdef $1 - return 0; -#else - force compilation error -#endif -} - ]]) - ],[ - tst_symbol_defined="yes" - ],[ - tst_symbol_defined="no" - ]) - if test "$tst_symbol_defined" = "yes"; then - AS_VAR_SET(ac_HaveDef, yes) - ifelse($3,,[AC_MSG_RESULT([yes])]) - else - AS_VAR_SET(ac_HaveDef, no) - ifelse($3,,[AC_MSG_RESULT([no])]) - fi - AS_VAR_POPDEF([ac_HaveDef])dnl -]) - - -dnl CURL_CHECK_LIB_XNET -dnl ------------------------------------------------- -dnl Verify if X/Open network library is required. - -AC_DEFUN([CURL_CHECK_LIB_XNET], [ - AC_MSG_CHECKING([if X/Open network library is required]) - tst_lib_xnet_required="no" - AC_COMPILE_IFELSE([ - AC_LANG_SOURCE([[ -int main (void) -{ -#if defined(__hpux) && defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 600) - return 0; -#elif defined(__hpux) && defined(_XOPEN_SOURCE_EXTENDED) - return 0; -#else - force compilation error -#endif -} - ]]) - ],[ - tst_lib_xnet_required="yes" - LIBS="-lxnet $LIBS" - ]) - AC_MSG_RESULT([$tst_lib_xnet_required]) -]) - - -dnl CURL_CHECK_AIX_ALL_SOURCE -dnl ------------------------------------------------- -dnl Provides a replacement of traditional AC_AIX with -dnl an uniform behavior across all autoconf versions, -dnl and with our own placement rules. - -AC_DEFUN([CURL_CHECK_AIX_ALL_SOURCE], [ - AH_VERBATIM([_ALL_SOURCE], - [/* Define to 1 if OS is AIX. */ -#ifndef _ALL_SOURCE -# undef _ALL_SOURCE -#endif]) - AC_BEFORE([$0], [AC_SYS_LARGEFILE])dnl - AC_BEFORE([$0], [CURL_CONFIGURE_REENTRANT])dnl - AC_BEFORE([$0], [CURL_CONFIGURE_PULL_SYS_POLL])dnl - AC_MSG_CHECKING([if OS is AIX (to define _ALL_SOURCE)]) - AC_EGREP_CPP([yes_this_is_aix],[ -#ifdef _AIX - yes_this_is_aix -#endif - ],[ - AC_MSG_RESULT([yes]) - AC_DEFINE(_ALL_SOURCE) - ],[ - AC_MSG_RESULT([no]) - ]) -]) - - -dnl CURL_CHECK_HEADER_WINDOWS -dnl ------------------------------------------------- -dnl Check for compilable and valid windows.h header - -AC_DEFUN([CURL_CHECK_HEADER_WINDOWS], [ - AC_CACHE_CHECK([for windows.h], [curl_cv_header_windows_h], [ - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ -#undef inline -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include - ]],[[ -#if defined(__CYGWIN__) || defined(__CEGCC__) - HAVE_WINDOWS_H shall not be defined. -#else - int dummy=2*WINVER; -#endif - ]]) - ],[ - curl_cv_header_windows_h="yes" - ],[ - curl_cv_header_windows_h="no" - ]) - ]) - case "$curl_cv_header_windows_h" in - yes) - AC_DEFINE_UNQUOTED(HAVE_WINDOWS_H, 1, - [Define to 1 if you have the windows.h header file.]) - ;; - esac -]) - - -dnl CURL_CHECK_NATIVE_WINDOWS -dnl ------------------------------------------------- -dnl Check if building a native Windows target - -AC_DEFUN([CURL_CHECK_NATIVE_WINDOWS], [ - AC_REQUIRE([CURL_CHECK_HEADER_WINDOWS])dnl - AC_CACHE_CHECK([whether build target is a native Windows one], [curl_cv_native_windows], [ - if test "$curl_cv_header_windows_h" = "no"; then - curl_cv_native_windows="no" - else - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ - ]],[[ -#if defined(__MINGW32__) || defined(__MINGW32CE__) || \ - (defined(_MSC_VER) && (defined(_WIN32) || defined(_WIN64))) - int dummy=1; -#else - Not a native Windows build target. -#endif - ]]) - ],[ - curl_cv_native_windows="yes" - ],[ - curl_cv_native_windows="no" - ]) - fi - ]) - AM_CONDITIONAL(DOING_NATIVE_WINDOWS, test "x$curl_cv_native_windows" = xyes) -]) - - -dnl CURL_CHECK_HEADER_WINSOCK2 -dnl ------------------------------------------------- -dnl Check for compilable and valid winsock2.h header - -AC_DEFUN([CURL_CHECK_HEADER_WINSOCK2], [ - AC_REQUIRE([CURL_CHECK_HEADER_WINDOWS])dnl - AC_CACHE_CHECK([for winsock2.h], [curl_cv_header_winsock2_h], [ - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ -#undef inline -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#include - ]],[[ -#if defined(__CYGWIN__) || defined(__CEGCC__) || defined(__MINGW32CE__) - HAVE_WINSOCK2_H shall not be defined. -#else - int dummy=2*IPPROTO_ESP; -#endif - ]]) - ],[ - curl_cv_header_winsock2_h="yes" - ],[ - curl_cv_header_winsock2_h="no" - ]) - ]) - case "$curl_cv_header_winsock2_h" in - yes) - AC_DEFINE_UNQUOTED(HAVE_WINSOCK2_H, 1, - [Define to 1 if you have the winsock2.h header file.]) - ;; - esac -]) - - -dnl CURL_CHECK_HEADER_WS2TCPIP -dnl ------------------------------------------------- -dnl Check for compilable and valid ws2tcpip.h header - -AC_DEFUN([CURL_CHECK_HEADER_WS2TCPIP], [ - AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl - AC_CACHE_CHECK([for ws2tcpip.h], [curl_cv_header_ws2tcpip_h], [ - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ -#undef inline -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#include -#include - ]],[[ -#if defined(__CYGWIN__) || defined(__CEGCC__) || defined(__MINGW32CE__) - HAVE_WS2TCPIP_H shall not be defined. -#else - int dummy=2*IP_PKTINFO; -#endif - ]]) - ],[ - curl_cv_header_ws2tcpip_h="yes" - ],[ - curl_cv_header_ws2tcpip_h="no" - ]) - ]) - case "$curl_cv_header_ws2tcpip_h" in - yes) - AC_DEFINE_UNQUOTED(HAVE_WS2TCPIP_H, 1, - [Define to 1 if you have the ws2tcpip.h header file.]) - ;; - esac -]) - - -dnl CURL_CHECK_HEADER_WINCRYPT -dnl ------------------------------------------------- -dnl Check for compilable and valid wincrypt.h header - -AC_DEFUN([CURL_CHECK_HEADER_WINCRYPT], [ - AC_REQUIRE([CURL_CHECK_HEADER_WINDOWS])dnl - AC_CACHE_CHECK([for wincrypt.h], [curl_cv_header_wincrypt_h], [ - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ -#undef inline -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#include - ]],[[ - int dummy=2*PROV_RSA_FULL; - ]]) - ],[ - curl_cv_header_wincrypt_h="yes" - ],[ - curl_cv_header_wincrypt_h="no" - ]) - ]) - case "$curl_cv_header_wincrypt_h" in - yes) - AC_DEFINE_UNQUOTED(HAVE_WINCRYPT_H, 1, - [Define to 1 if you have the wincrypt.h header file.]) - ;; - esac -]) - - -dnl CURL_CHECK_HEADER_WINLDAP -dnl ------------------------------------------------- -dnl Check for compilable and valid winldap.h header - -AC_DEFUN([CURL_CHECK_HEADER_WINLDAP], [ - AC_REQUIRE([CURL_CHECK_HEADER_WINDOWS])dnl - AC_CACHE_CHECK([for winldap.h], [curl_cv_header_winldap_h], [ - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ -#undef inline -#ifdef HAVE_WINDOWS_H -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#endif -#include - ]],[[ -#if defined(__CYGWIN__) || defined(__CEGCC__) - HAVE_WINLDAP_H shall not be defined. -#else - LDAP *ldp = ldap_init("dummy", LDAP_PORT); - ULONG res = ldap_unbind(ldp); -#endif - ]]) - ],[ - curl_cv_header_winldap_h="yes" - ],[ - curl_cv_header_winldap_h="no" - ]) - ]) - case "$curl_cv_header_winldap_h" in - yes) - AC_DEFINE_UNQUOTED(HAVE_WINLDAP_H, 1, - [Define to 1 if you have the winldap.h header file.]) - ;; - esac -]) - - -dnl CURL_CHECK_HEADER_LBER -dnl ------------------------------------------------- -dnl Check for compilable and valid lber.h header, -dnl and check if it is needed even with ldap.h - -AC_DEFUN([CURL_CHECK_HEADER_LBER], [ - AC_REQUIRE([CURL_CHECK_HEADER_WINDOWS])dnl - AC_CACHE_CHECK([for lber.h], [curl_cv_header_lber_h], [ - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ -#undef inline -#ifdef HAVE_WINDOWS_H -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#else -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#endif -#ifndef NULL -#define NULL (void *)0 -#endif -#include - ]],[[ - BerValue *bvp = NULL; - BerElement *bep = ber_init(bvp); - ber_free(bep, 1); - ]]) - ],[ - curl_cv_header_lber_h="yes" - ],[ - curl_cv_header_lber_h="no" - ]) - ]) - if test "$curl_cv_header_lber_h" = "yes"; then - AC_DEFINE_UNQUOTED(HAVE_LBER_H, 1, - [Define to 1 if you have the lber.h header file.]) - # - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ -#undef inline -#ifdef HAVE_WINDOWS_H -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#else -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#endif -#ifndef NULL -#define NULL (void *)0 -#endif -#ifndef LDAP_DEPRECATED -#define LDAP_DEPRECATED 1 -#endif -#include - ]],[[ - BerValue *bvp = NULL; - BerElement *bep = ber_init(bvp); - ber_free(bep, 1); - ]]) - ],[ - curl_cv_need_header_lber_h="no" - ],[ - curl_cv_need_header_lber_h="yes" - ]) - # - case "$curl_cv_need_header_lber_h" in - yes) - AC_DEFINE_UNQUOTED(NEED_LBER_H, 1, - [Define to 1 if you need the lber.h header file even with ldap.h]) - ;; - esac - fi -]) - - -dnl CURL_CHECK_HEADER_LDAP -dnl ------------------------------------------------- -dnl Check for compilable and valid ldap.h header - -AC_DEFUN([CURL_CHECK_HEADER_LDAP], [ - AC_REQUIRE([CURL_CHECK_HEADER_LBER])dnl - AC_CACHE_CHECK([for ldap.h], [curl_cv_header_ldap_h], [ - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ -#undef inline -#ifdef HAVE_WINDOWS_H -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#else -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#endif -#ifndef LDAP_DEPRECATED -#define LDAP_DEPRECATED 1 -#endif -#ifdef NEED_LBER_H -#include -#endif -#include - ]],[[ - LDAP *ldp = ldap_init("dummy", LDAP_PORT); - int res = ldap_unbind(ldp); - ]]) - ],[ - curl_cv_header_ldap_h="yes" - ],[ - curl_cv_header_ldap_h="no" - ]) - ]) - case "$curl_cv_header_ldap_h" in - yes) - AC_DEFINE_UNQUOTED(HAVE_LDAP_H, 1, - [Define to 1 if you have the ldap.h header file.]) - ;; - esac -]) - - -dnl CURL_CHECK_HEADER_LDAP_SSL -dnl ------------------------------------------------- -dnl Check for compilable and valid ldap_ssl.h header - -AC_DEFUN([CURL_CHECK_HEADER_LDAP_SSL], [ - AC_REQUIRE([CURL_CHECK_HEADER_LDAP])dnl - AC_CACHE_CHECK([for ldap_ssl.h], [curl_cv_header_ldap_ssl_h], [ - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ -#undef inline -#ifdef HAVE_WINDOWS_H -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#else -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#endif -#ifndef LDAP_DEPRECATED -#define LDAP_DEPRECATED 1 -#endif -#ifdef NEED_LBER_H -#include -#endif -#ifdef HAVE_LDAP_H -#include -#endif -#include - ]],[[ - LDAP *ldp = ldapssl_init("dummy", LDAPS_PORT, 1); - ]]) - ],[ - curl_cv_header_ldap_ssl_h="yes" - ],[ - curl_cv_header_ldap_ssl_h="no" - ]) - ]) - case "$curl_cv_header_ldap_ssl_h" in - yes) - AC_DEFINE_UNQUOTED(HAVE_LDAP_SSL_H, 1, - [Define to 1 if you have the ldap_ssl.h header file.]) - ;; - esac -]) - - -dnl CURL_CHECK_LIBS_WINLDAP -dnl ------------------------------------------------- -dnl Check for libraries needed for WINLDAP support, -dnl and prepended to LIBS any needed libraries. -dnl This macro can take an optional parameter with a -dnl whitespace separated list of libraries to check -dnl before the WINLDAP default ones. - -AC_DEFUN([CURL_CHECK_LIBS_WINLDAP], [ - AC_REQUIRE([CURL_CHECK_HEADER_WINBER])dnl - # - AC_MSG_CHECKING([for WINLDAP libraries]) - # - u_libs="" - # - ifelse($1,,,[ - for x_lib in $1; do - case "$x_lib" in - -l*) - l_lib="$x_lib" - ;; - *) - l_lib="-l$x_lib" - ;; - esac - if test -z "$u_libs"; then - u_libs="$l_lib" - else - u_libs="$u_libs $l_lib" - fi - done - ]) - # - curl_cv_save_LIBS="$LIBS" - curl_cv_ldap_LIBS="unknown" - # - for x_nlibs in '' "$u_libs" \ - '-lwldap32' ; do - if test "$curl_cv_ldap_LIBS" = "unknown"; then - if test -z "$x_nlibs"; then - LIBS="$curl_cv_save_LIBS" - else - LIBS="$x_nlibs $curl_cv_save_LIBS" - fi - AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ -#undef inline -#ifdef HAVE_WINDOWS_H -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#ifdef HAVE_WINLDAP_H -#include -#endif -#ifdef HAVE_WINBER_H -#include -#endif -#endif - ]],[[ - BERVAL *bvp = NULL; - BerElement *bep = ber_init(bvp); - LDAP *ldp = ldap_init("dummy", LDAP_PORT); - ULONG res = ldap_unbind(ldp); - ber_free(bep, 1); - ]]) - ],[ - curl_cv_ldap_LIBS="$x_nlibs" - ]) - fi - done - # - LIBS="$curl_cv_save_LIBS" - # - case X-"$curl_cv_ldap_LIBS" in - X-unknown) - AC_MSG_RESULT([cannot find WINLDAP libraries]) - ;; - X-) - AC_MSG_RESULT([no additional lib required]) - ;; - *) - if test -z "$curl_cv_save_LIBS"; then - LIBS="$curl_cv_ldap_LIBS" - else - LIBS="$curl_cv_ldap_LIBS $curl_cv_save_LIBS" - fi - AC_MSG_RESULT([$curl_cv_ldap_LIBS]) - ;; - esac - # -]) - - -dnl CURL_CHECK_LIBS_LDAP -dnl ------------------------------------------------- -dnl Check for libraries needed for LDAP support, -dnl and prepended to LIBS any needed libraries. -dnl This macro can take an optional parameter with a -dnl whitespace separated list of libraries to check -dnl before the default ones. - -AC_DEFUN([CURL_CHECK_LIBS_LDAP], [ - AC_REQUIRE([CURL_CHECK_HEADER_LDAP])dnl - # - AC_MSG_CHECKING([for LDAP libraries]) - # - u_libs="" - # - ifelse($1,,,[ - for x_lib in $1; do - case "$x_lib" in - -l*) - l_lib="$x_lib" - ;; - *) - l_lib="-l$x_lib" - ;; - esac - if test -z "$u_libs"; then - u_libs="$l_lib" - else - u_libs="$u_libs $l_lib" - fi - done - ]) - # - curl_cv_save_LIBS="$LIBS" - curl_cv_ldap_LIBS="unknown" - # - for x_nlibs in '' "$u_libs" \ - '-lldap' \ - '-lldap -llber' \ - '-llber -lldap' \ - '-lldapssl -lldapx -lldapsdk' \ - '-lldapsdk -lldapx -lldapssl' \ - '-lldap -llber -lssl -lcrypto' ; do - - if test "$curl_cv_ldap_LIBS" = "unknown"; then - if test -z "$x_nlibs"; then - LIBS="$curl_cv_save_LIBS" - else - LIBS="$x_nlibs $curl_cv_save_LIBS" - fi - AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ -#undef inline -#ifdef HAVE_WINDOWS_H -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#else -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#endif -#ifndef NULL -#define NULL (void *)0 -#endif -#ifndef LDAP_DEPRECATED -#define LDAP_DEPRECATED 1 -#endif -#ifdef NEED_LBER_H -#include -#endif -#ifdef HAVE_LDAP_H -#include -#endif - ]],[[ - BerValue *bvp = NULL; - BerElement *bep = ber_init(bvp); - LDAP *ldp = ldap_init("dummy", LDAP_PORT); - int res = ldap_unbind(ldp); - ber_free(bep, 1); - ]]) - ],[ - curl_cv_ldap_LIBS="$x_nlibs" - ]) - fi - done - # - LIBS="$curl_cv_save_LIBS" - # - case X-"$curl_cv_ldap_LIBS" in - X-unknown) - AC_MSG_RESULT([cannot find LDAP libraries]) - ;; - X-) - AC_MSG_RESULT([no additional lib required]) - ;; - *) - if test -z "$curl_cv_save_LIBS"; then - LIBS="$curl_cv_ldap_LIBS" - else - LIBS="$curl_cv_ldap_LIBS $curl_cv_save_LIBS" - fi - AC_MSG_RESULT([$curl_cv_ldap_LIBS]) - ;; - esac - # -]) - - -dnl TYPE_SOCKADDR_STORAGE -dnl ------------------------------------------------- -dnl Check for struct sockaddr_storage. Most IPv6-enabled -dnl hosts have it, but AIX 4.3 is one known exception. - -AC_DEFUN([TYPE_SOCKADDR_STORAGE], -[ - AC_CHECK_TYPE([struct sockaddr_storage], - AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE, 1, - [if struct sockaddr_storage is defined]), , - [ -#undef inline -#ifdef HAVE_WINDOWS_H -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#ifdef HAVE_WINSOCK2_H -#include -#endif -#else -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_ARPA_INET_H -#include -#endif -#endif - ]) -]) - -dnl CURL_CHECK_FUNC_RECV -dnl ------------------------------------------------- -dnl Test if the socket recv() function is available, -dnl and check its return type and the types of its -dnl arguments. If the function succeeds HAVE_RECV -dnl will be defined, defining the types of the arguments -dnl in RECV_TYPE_ARG1, RECV_TYPE_ARG2, RECV_TYPE_ARG3 -dnl and RECV_TYPE_ARG4, defining the type of the function -dnl return value in RECV_TYPE_RETV. - -AC_DEFUN([CURL_CHECK_FUNC_RECV], [ - AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl - AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl - AC_CHECK_HEADERS(sys/types.h sys/socket.h) - # - AC_MSG_CHECKING([for recv]) - AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ -#undef inline -#ifdef HAVE_WINDOWS_H -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#ifdef HAVE_WINSOCK2_H -#include -#endif -#else -$curl_includes_bsdsocket -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#endif - ]],[[ - recv(0, 0, 0, 0); - ]]) - ],[ - AC_MSG_RESULT([yes]) - curl_cv_recv="yes" - ],[ - AC_MSG_RESULT([no]) - curl_cv_recv="no" - ]) - # - if test "$curl_cv_recv" = "yes"; then - AC_CACHE_CHECK([types of args and return type for recv], - [curl_cv_func_recv_args], [ - curl_cv_func_recv_args="unknown" - for recv_retv in 'int' 'ssize_t'; do - for recv_arg1 in 'int' 'ssize_t' 'SOCKET'; do - for recv_arg2 in 'char *' 'void *'; do - for recv_arg3 in 'size_t' 'int' 'socklen_t' 'unsigned int'; do - for recv_arg4 in 'int' 'unsigned int'; do - if test "$curl_cv_func_recv_args" = "unknown"; then - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ -#undef inline -#ifdef HAVE_WINDOWS_H -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#ifdef HAVE_WINSOCK2_H -#include -#endif -#define RECVCALLCONV PASCAL -#else -$curl_includes_bsdsocket -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#define RECVCALLCONV -#endif -#ifndef HAVE_PROTO_BSDSOCKET_H - extern $recv_retv RECVCALLCONV - recv($recv_arg1, $recv_arg2, $recv_arg3, $recv_arg4); -#endif - ]],[[ - $recv_arg1 s=0; - $recv_arg2 buf=0; - $recv_arg3 len=0; - $recv_arg4 flags=0; - $recv_retv res = recv(s, buf, len, flags); - ]]) - ],[ - curl_cv_func_recv_args="$recv_arg1,$recv_arg2,$recv_arg3,$recv_arg4,$recv_retv" - ]) - fi - done - done - done - done - done - ]) # AC-CACHE-CHECK - if test "$curl_cv_func_recv_args" = "unknown"; then - AC_MSG_ERROR([Cannot find proper types to use for recv args]) - else - recv_prev_IFS=$IFS; IFS=',' - set dummy `echo "$curl_cv_func_recv_args" | sed 's/\*/\*/g'` - IFS=$recv_prev_IFS - shift - # - AC_DEFINE_UNQUOTED(RECV_TYPE_ARG1, $[1], - [Define to the type of arg 1 for recv.]) - AC_DEFINE_UNQUOTED(RECV_TYPE_ARG2, $[2], - [Define to the type of arg 2 for recv.]) - AC_DEFINE_UNQUOTED(RECV_TYPE_ARG3, $[3], - [Define to the type of arg 3 for recv.]) - AC_DEFINE_UNQUOTED(RECV_TYPE_ARG4, $[4], - [Define to the type of arg 4 for recv.]) - AC_DEFINE_UNQUOTED(RECV_TYPE_RETV, $[5], - [Define to the function return type for recv.]) - # - AC_DEFINE_UNQUOTED(HAVE_RECV, 1, - [Define to 1 if you have the recv function.]) - curl_cv_func_recv="yes" - fi - else - AC_MSG_ERROR([Unable to link function recv]) - fi -]) - - -dnl CURL_CHECK_FUNC_SEND -dnl ------------------------------------------------- -dnl Test if the socket send() function is available, -dnl and check its return type and the types of its -dnl arguments. If the function succeeds HAVE_SEND -dnl will be defined, defining the types of the arguments -dnl in SEND_TYPE_ARG1, SEND_TYPE_ARG2, SEND_TYPE_ARG3 -dnl and SEND_TYPE_ARG4, defining the type of the function -dnl return value in SEND_TYPE_RETV, and also defining the -dnl type qualifier of second argument in SEND_QUAL_ARG2. - -AC_DEFUN([CURL_CHECK_FUNC_SEND], [ - AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl - AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl - AC_CHECK_HEADERS(sys/types.h sys/socket.h) - # - AC_MSG_CHECKING([for send]) - AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ -#undef inline -#ifdef HAVE_WINDOWS_H -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#ifdef HAVE_WINSOCK2_H -#include -#endif -#else -$curl_includes_bsdsocket -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#endif - ]],[[ - send(0, 0, 0, 0); - ]]) - ],[ - AC_MSG_RESULT([yes]) - curl_cv_send="yes" - ],[ - AC_MSG_RESULT([no]) - curl_cv_send="no" - ]) - # - if test "$curl_cv_send" = "yes"; then - AC_CACHE_CHECK([types of args and return type for send], - [curl_cv_func_send_args], [ - curl_cv_func_send_args="unknown" - for send_retv in 'int' 'ssize_t'; do - for send_arg1 in 'int' 'ssize_t' 'SOCKET'; do - for send_arg2 in 'char *' 'void *' 'const char *' 'const void *'; do - for send_arg3 in 'size_t' 'int' 'socklen_t' 'unsigned int'; do - for send_arg4 in 'int' 'unsigned int'; do - if test "$curl_cv_func_send_args" = "unknown"; then - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ -#undef inline -#ifdef HAVE_WINDOWS_H -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#ifdef HAVE_WINSOCK2_H -#include -#endif -#define SENDCALLCONV PASCAL -#else -$curl_includes_bsdsocket -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#define SENDCALLCONV -#endif -#ifndef HAVE_PROTO_BSDSOCKET_H - extern $send_retv SENDCALLCONV - send($send_arg1, $send_arg2, $send_arg3, $send_arg4); -#endif - ]],[[ - $send_arg1 s=0; - $send_arg3 len=0; - $send_arg4 flags=0; - $send_retv res = send(s, 0, len, flags); - ]]) - ],[ - curl_cv_func_send_args="$send_arg1,$send_arg2,$send_arg3,$send_arg4,$send_retv" - ]) - fi - done - done - done - done - done - ]) # AC-CACHE-CHECK - if test "$curl_cv_func_send_args" = "unknown"; then - AC_MSG_ERROR([Cannot find proper types to use for send args]) - else - send_prev_IFS=$IFS; IFS=',' - set dummy `echo "$curl_cv_func_send_args" | sed 's/\*/\*/g'` - IFS=$send_prev_IFS - shift - # - send_qual_type_arg2=$[2] - # - AC_DEFINE_UNQUOTED(SEND_TYPE_ARG1, $[1], - [Define to the type of arg 1 for send.]) - AC_DEFINE_UNQUOTED(SEND_TYPE_ARG3, $[3], - [Define to the type of arg 3 for send.]) - AC_DEFINE_UNQUOTED(SEND_TYPE_ARG4, $[4], - [Define to the type of arg 4 for send.]) - AC_DEFINE_UNQUOTED(SEND_TYPE_RETV, $[5], - [Define to the function return type for send.]) - # - prev_sh_opts=$- - # - case $prev_sh_opts in - *f*) - ;; - *) - set -f - ;; - esac - # - case "$send_qual_type_arg2" in - const*) - send_qual_arg2=const - send_type_arg2=`echo $send_qual_type_arg2 | sed 's/^const //'` - ;; - *) - send_qual_arg2= - send_type_arg2=$send_qual_type_arg2 - ;; - esac - # - AC_DEFINE_UNQUOTED(SEND_QUAL_ARG2, $send_qual_arg2, - [Define to the type qualifier of arg 2 for send.]) - AC_DEFINE_UNQUOTED(SEND_TYPE_ARG2, $send_type_arg2, - [Define to the type of arg 2 for send.]) - # - case $prev_sh_opts in - *f*) - ;; - *) - set +f - ;; - esac - # - AC_DEFINE_UNQUOTED(HAVE_SEND, 1, - [Define to 1 if you have the send function.]) - curl_cv_func_send="yes" - fi - else - AC_MSG_ERROR([Unable to link function send]) - fi -]) - -dnl CURL_CHECK_MSG_NOSIGNAL -dnl ------------------------------------------------- -dnl Check for MSG_NOSIGNAL - -AC_DEFUN([CURL_CHECK_MSG_NOSIGNAL], [ - AC_CHECK_HEADERS(sys/types.h sys/socket.h) - AC_CACHE_CHECK([for MSG_NOSIGNAL], [curl_cv_msg_nosignal], [ - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ -#undef inline -#ifdef HAVE_WINDOWS_H -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#ifdef HAVE_WINSOCK2_H -#include -#endif -#else -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#endif - ]],[[ - int flag=MSG_NOSIGNAL; - ]]) - ],[ - curl_cv_msg_nosignal="yes" - ],[ - curl_cv_msg_nosignal="no" - ]) - ]) - case "$curl_cv_msg_nosignal" in - yes) - AC_DEFINE_UNQUOTED(HAVE_MSG_NOSIGNAL, 1, - [Define to 1 if you have the MSG_NOSIGNAL flag.]) - ;; - esac -]) - - -dnl CURL_CHECK_STRUCT_TIMEVAL -dnl ------------------------------------------------- -dnl Check for timeval struct - -AC_DEFUN([CURL_CHECK_STRUCT_TIMEVAL], [ - AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl - AC_CHECK_HEADERS(sys/types.h sys/time.h sys/socket.h) - AC_CACHE_CHECK([for struct timeval], [curl_cv_struct_timeval], [ - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ -#undef inline -#ifdef HAVE_WINDOWS_H -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#ifdef HAVE_WINSOCK2_H -#include -#endif -#endif -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#include -#ifdef HAVE_SYS_SOCKET_H -#include -#endif - ]],[[ - struct timeval ts; - ts.tv_sec = 0; - ts.tv_usec = 0; - ]]) - ],[ - curl_cv_struct_timeval="yes" - ],[ - curl_cv_struct_timeval="no" - ]) - ]) - case "$curl_cv_struct_timeval" in - yes) - AC_DEFINE_UNQUOTED(HAVE_STRUCT_TIMEVAL, 1, - [Define to 1 if you have the timeval struct.]) - ;; - esac -]) - - -dnl TYPE_IN_ADDR_T -dnl ------------------------------------------------- -dnl Check for in_addr_t: it is used to receive the return code of inet_addr() -dnl and a few other things. - -AC_DEFUN([TYPE_IN_ADDR_T], [ - AC_CHECK_TYPE([in_addr_t], ,[ - dnl in_addr_t not available - AC_CACHE_CHECK([for in_addr_t equivalent], - [curl_cv_in_addr_t_equiv], [ - curl_cv_in_addr_t_equiv="unknown" - for t in "unsigned long" int size_t unsigned long; do - if test "$curl_cv_in_addr_t_equiv" = "unknown"; then - AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ -#undef inline -#ifdef HAVE_WINDOWS_H -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#ifdef HAVE_WINSOCK2_H -#include -#endif -#else -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_ARPA_INET_H -#include -#endif -#endif - ]],[[ - $t data = inet_addr ("1.2.3.4"); - ]]) - ],[ - curl_cv_in_addr_t_equiv="$t" - ]) - fi - done - ]) - case "$curl_cv_in_addr_t_equiv" in - unknown) - AC_MSG_ERROR([Cannot find a type to use in place of in_addr_t]) - ;; - *) - AC_DEFINE_UNQUOTED(in_addr_t, $curl_cv_in_addr_t_equiv, - [Type to use in place of in_addr_t when system does not provide it.]) - ;; - esac - ],[ -#undef inline -#ifdef HAVE_WINDOWS_H -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#ifdef HAVE_WINSOCK2_H -#include -#endif -#else -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_ARPA_INET_H -#include -#endif -#endif - ]) -]) - - -dnl CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC -dnl ------------------------------------------------- -dnl Check if monotonic clock_gettime is available. - -AC_DEFUN([CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC], [ - AC_CHECK_HEADERS(sys/types.h sys/time.h) - AC_MSG_CHECKING([for monotonic clock_gettime]) - # - if test "x$dontwant_rt" = "xno" ; then - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#include - ]],[[ - struct timespec ts; - (void)clock_gettime(CLOCK_MONOTONIC, &ts); - ]]) - ],[ - AC_MSG_RESULT([yes]) - curl_func_clock_gettime="yes" - ],[ - AC_MSG_RESULT([no]) - curl_func_clock_gettime="no" - ]) - fi - dnl Definition of HAVE_CLOCK_GETTIME_MONOTONIC is intentionally postponed - dnl until library linking and run-time checks for clock_gettime succeed. -]) - - -dnl CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC -dnl ------------------------------------------------- -dnl If monotonic clock_gettime is available then, -dnl check and prepended to LIBS any needed libraries. - -AC_DEFUN([CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC], [ - AC_REQUIRE([CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC])dnl - # - if test "$curl_func_clock_gettime" = "yes"; then - # - AC_MSG_CHECKING([for clock_gettime in libraries]) - # - curl_cv_save_LIBS="$LIBS" - curl_cv_gclk_LIBS="unknown" - # - for x_xlibs in '' '-lrt' '-lposix4' ; do - if test "$curl_cv_gclk_LIBS" = "unknown"; then - if test -z "$x_xlibs"; then - LIBS="$curl_cv_save_LIBS" - else - LIBS="$x_xlibs $curl_cv_save_LIBS" - fi - AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#include - ]],[[ - struct timespec ts; - (void)clock_gettime(CLOCK_MONOTONIC, &ts); - ]]) - ],[ - curl_cv_gclk_LIBS="$x_xlibs" - ]) - fi - done - # - LIBS="$curl_cv_save_LIBS" - # - case X-"$curl_cv_gclk_LIBS" in - X-unknown) - AC_MSG_RESULT([cannot find clock_gettime]) - AC_MSG_WARN([HAVE_CLOCK_GETTIME_MONOTONIC will not be defined]) - curl_func_clock_gettime="no" - ;; - X-) - AC_MSG_RESULT([no additional lib required]) - curl_func_clock_gettime="yes" - ;; - *) - if test -z "$curl_cv_save_LIBS"; then - LIBS="$curl_cv_gclk_LIBS" - else - LIBS="$curl_cv_gclk_LIBS $curl_cv_save_LIBS" - fi - AC_MSG_RESULT([$curl_cv_gclk_LIBS]) - curl_func_clock_gettime="yes" - ;; - esac - # - dnl only do runtime verification when not cross-compiling - if test "x$cross_compiling" != "xyes" && - test "$curl_func_clock_gettime" = "yes"; then - AC_MSG_CHECKING([if monotonic clock_gettime works]) - CURL_RUN_IFELSE([ - AC_LANG_PROGRAM([[ -#ifdef HAVE_STDLIB_H -#include -#endif -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#include - ]],[[ - struct timespec ts; - if (0 == clock_gettime(CLOCK_MONOTONIC, &ts)) - exit(0); - else - exit(1); - ]]) - ],[ - AC_MSG_RESULT([yes]) - ],[ - AC_MSG_RESULT([no]) - AC_MSG_WARN([HAVE_CLOCK_GETTIME_MONOTONIC will not be defined]) - curl_func_clock_gettime="no" - LIBS="$curl_cv_save_LIBS" - ]) - fi - # - case "$curl_func_clock_gettime" in - yes) - AC_DEFINE_UNQUOTED(HAVE_CLOCK_GETTIME_MONOTONIC, 1, - [Define to 1 if you have the clock_gettime function and monotonic timer.]) - ;; - esac - # - fi - # -]) - - -dnl CURL_CHECK_LIBS_CONNECT -dnl ------------------------------------------------- -dnl Verify if network connect function is already available -dnl using current libraries or if another one is required. - -AC_DEFUN([CURL_CHECK_LIBS_CONNECT], [ - AC_REQUIRE([CURL_INCLUDES_WINSOCK2])dnl - AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl - AC_MSG_CHECKING([for connect in libraries]) - tst_connect_save_LIBS="$LIBS" - tst_connect_need_LIBS="unknown" - for tst_lib in '' '-lsocket' ; do - if test "$tst_connect_need_LIBS" = "unknown"; then - LIBS="$tst_lib $tst_connect_save_LIBS" - AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ - $curl_includes_winsock2 - $curl_includes_bsdsocket - #if !defined(HAVE_WINDOWS_H) && !defined(HAVE_PROTO_BSDSOCKET_H) - int connect(int, void*, int); - #endif - ]],[[ - if(0 != connect(0, 0, 0)) - return 1; - ]]) - ],[ - tst_connect_need_LIBS="$tst_lib" - ]) - fi - done - LIBS="$tst_connect_save_LIBS" - # - case X-"$tst_connect_need_LIBS" in - X-unknown) - AC_MSG_RESULT([cannot find connect]) - AC_MSG_ERROR([cannot find connect function in libraries.]) - ;; - X-) - AC_MSG_RESULT([yes]) - ;; - *) - AC_MSG_RESULT([$tst_connect_need_LIBS]) - LIBS="$tst_connect_need_LIBS $tst_connect_save_LIBS" - ;; - esac -]) - - -dnl CURL_DEFINE_UNQUOTED (VARIABLE, [VALUE]) -dnl ------------------------------------------------- -dnl Like AC_DEFINE_UNQUOTED this macro will define a C preprocessor -dnl symbol that can be further used in custom template configuration -dnl files. This macro, unlike AC_DEFINE_UNQUOTED, does not use a third -dnl argument for the description. Symbol definitions done with this -dnl macro are intended to be exclusively used in handcrafted *.h.in -dnl template files. Contrary to what AC_DEFINE_UNQUOTED does, this one -dnl prevents autoheader generation and insertion of symbol template -dnl stub and definition into the first configuration header file. Do -dnl not use this macro as a replacement for AC_DEFINE_UNQUOTED, each -dnl one serves different functional needs. - -AC_DEFUN([CURL_DEFINE_UNQUOTED], [ -cat >>confdefs.h <<_EOF -[@%:@define] $1 ifelse($#, 2, [$2], 1) -_EOF -]) - -dnl CURL_CONFIGURE_PULL_SYS_POLL -dnl ------------------------------------------------- -dnl The need for the sys/poll.h inclusion arises mainly to properly -dnl interface AIX systems which define macros 'events' and 'revents'. - -AC_DEFUN([CURL_CONFIGURE_PULL_SYS_POLL], [ - AC_REQUIRE([CURL_INCLUDES_POLL])dnl - # - tst_poll_events_macro_defined="unknown" - # - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ - $curl_includes_poll - ]],[[ -#if defined(events) || defined(revents) - return 0; -#else - force compilation error -#endif - ]]) - ],[ - tst_poll_events_macro_defined="yes" - ],[ - tst_poll_events_macro_defined="no" - ]) - # - if test "$tst_poll_events_macro_defined" = "yes"; then - if test "x$ac_cv_header_sys_poll_h" = "xyes"; then - CURL_DEFINE_UNQUOTED([CURL_PULL_SYS_POLL_H]) - fi - fi - # -]) - - -dnl CURL_CHECK_FUNC_SELECT -dnl ------------------------------------------------- -dnl Test if the socket select() function is available, -dnl and check its return type and the types of its -dnl arguments. If the function succeeds HAVE_SELECT -dnl will be defined, defining the types of the -dnl arguments in SELECT_TYPE_ARG1, SELECT_TYPE_ARG234 -dnl and SELECT_TYPE_ARG5, defining the type of the -dnl function return value in SELECT_TYPE_RETV, and -dnl also defining the type qualifier of fifth argument -dnl in SELECT_QUAL_ARG5. - -AC_DEFUN([CURL_CHECK_FUNC_SELECT], [ - AC_REQUIRE([CURL_CHECK_STRUCT_TIMEVAL])dnl - AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl - AC_CHECK_HEADERS(sys/select.h sys/socket.h) - # - AC_MSG_CHECKING([for select]) - AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ -#undef inline -#ifdef HAVE_WINDOWS_H -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#ifdef HAVE_WINSOCK2_H -#include -#endif -#endif -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#include -#ifndef HAVE_WINDOWS_H -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -$curl_includes_bsdsocket -#endif - ]],[[ - select(0, 0, 0, 0, 0); - ]]) - ],[ - AC_MSG_RESULT([yes]) - curl_cv_select="yes" - ],[ - AC_MSG_RESULT([no]) - curl_cv_select="no" - ]) - # - if test "$curl_cv_select" = "yes"; then - AC_CACHE_CHECK([types of args and return type for select], - [curl_cv_func_select_args], [ - curl_cv_func_select_args="unknown" - for sel_retv in 'int' 'ssize_t'; do - for sel_arg1 in 'int' 'ssize_t' 'size_t' 'unsigned long int' 'unsigned int'; do - for sel_arg234 in 'fd_set *' 'int *' 'void *'; do - for sel_arg5 in 'struct timeval *' 'const struct timeval *'; do - if test "$curl_cv_func_select_args" = "unknown"; then - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ -#undef inline -#ifdef HAVE_WINDOWS_H -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#ifdef HAVE_WINSOCK2_H -#include -#endif -#define SELECTCALLCONV PASCAL -#endif -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#include -#ifndef HAVE_WINDOWS_H -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -$curl_includes_bsdsocket -#define SELECTCALLCONV -#endif -#ifndef HAVE_STRUCT_TIMEVAL - struct timeval { - long tv_sec; - long tv_usec; - }; -#endif -#ifndef HAVE_PROTO_BSDSOCKET_H - extern $sel_retv SELECTCALLCONV - select($sel_arg1, - $sel_arg234, - $sel_arg234, - $sel_arg234, - $sel_arg5); -#endif - ]],[[ - $sel_arg1 nfds=0; - $sel_arg234 rfds=0; - $sel_arg234 wfds=0; - $sel_arg234 efds=0; - $sel_retv res = select(nfds, rfds, wfds, efds, 0); - ]]) - ],[ - curl_cv_func_select_args="$sel_arg1,$sel_arg234,$sel_arg5,$sel_retv" - ]) - fi - done - done - done - done - ]) # AC-CACHE-CHECK - if test "$curl_cv_func_select_args" = "unknown"; then - AC_MSG_WARN([Cannot find proper types to use for select args]) - AC_MSG_WARN([HAVE_SELECT will not be defined]) - else - select_prev_IFS=$IFS; IFS=',' - set dummy `echo "$curl_cv_func_select_args" | sed 's/\*/\*/g'` - IFS=$select_prev_IFS - shift - # - sel_qual_type_arg5=$[3] - # - AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG1, $[1], - [Define to the type of arg 1 for select.]) - AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG234, $[2], - [Define to the type of args 2, 3 and 4 for select.]) - AC_DEFINE_UNQUOTED(SELECT_TYPE_RETV, $[4], - [Define to the function return type for select.]) - # - prev_sh_opts=$- - # - case $prev_sh_opts in - *f*) - ;; - *) - set -f - ;; - esac - # - case "$sel_qual_type_arg5" in - const*) - sel_qual_arg5=const - sel_type_arg5=`echo $sel_qual_type_arg5 | sed 's/^const //'` - ;; - *) - sel_qual_arg5= - sel_type_arg5=$sel_qual_type_arg5 - ;; - esac - # - AC_DEFINE_UNQUOTED(SELECT_QUAL_ARG5, $sel_qual_arg5, - [Define to the type qualifier of arg 5 for select.]) - AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG5, $sel_type_arg5, - [Define to the type of arg 5 for select.]) - # - case $prev_sh_opts in - *f*) - ;; - *) - set +f - ;; - esac - # - AC_DEFINE_UNQUOTED(HAVE_SELECT, 1, - [Define to 1 if you have the select function.]) - curl_cv_func_select="yes" - fi - fi -]) - - -dnl CURL_VERIFY_RUNTIMELIBS -dnl ------------------------------------------------- -dnl Verify that the shared libs found so far can be used when running -dnl programs, since otherwise the situation will create odd configure errors -dnl that are misleading people. -dnl -dnl Make sure this test is run BEFORE the first test in the script that -dnl runs anything, which at the time of this writing is the AC_CHECK_SIZEOF -dnl macro. It must also run AFTER all lib-checking macros are complete. - -AC_DEFUN([CURL_VERIFY_RUNTIMELIBS], [ - - dnl this test is of course not sensible if we are cross-compiling! - if test "x$cross_compiling" != xyes; then - - dnl just run a program to verify that the libs checked for previous to this - dnl point also is available run-time! - AC_MSG_CHECKING([run-time libs availability]) - CURL_RUN_IFELSE([ -int main() -{ - return 0; -} -], - AC_MSG_RESULT([fine]), - AC_MSG_RESULT([failed]) - AC_MSG_ERROR([one or more libs available at link-time are not available run-time. Libs used at link-time: $LIBS]) - ) - - dnl if this test fails, configure has already stopped - fi -]) - - -dnl CURL_CHECK_VARIADIC_MACROS -dnl ------------------------------------------------- -dnl Check compiler support of variadic macros - -AC_DEFUN([CURL_CHECK_VARIADIC_MACROS], [ - AC_CACHE_CHECK([for compiler support of C99 variadic macro style], - [curl_cv_variadic_macros_c99], [ - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ -#define c99_vmacro3(first, ...) fun3(first, __VA_ARGS__) -#define c99_vmacro2(first, ...) fun2(first, __VA_ARGS__) - int fun3(int arg1, int arg2, int arg3); - int fun2(int arg1, int arg2); - int fun3(int arg1, int arg2, int arg3) - { return arg1 + arg2 + arg3; } - int fun2(int arg1, int arg2) - { return arg1 + arg2; } - ]],[[ - int res3 = c99_vmacro3(1, 2, 3); - int res2 = c99_vmacro2(1, 2); - ]]) - ],[ - curl_cv_variadic_macros_c99="yes" - ],[ - curl_cv_variadic_macros_c99="no" - ]) - ]) - case "$curl_cv_variadic_macros_c99" in - yes) - AC_DEFINE_UNQUOTED(HAVE_VARIADIC_MACROS_C99, 1, - [Define to 1 if compiler supports C99 variadic macro style.]) - ;; - esac - AC_CACHE_CHECK([for compiler support of old gcc variadic macro style], - [curl_cv_variadic_macros_gcc], [ - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ -#define gcc_vmacro3(first, args...) fun3(first, args) -#define gcc_vmacro2(first, args...) fun2(first, args) - int fun3(int arg1, int arg2, int arg3); - int fun2(int arg1, int arg2); - int fun3(int arg1, int arg2, int arg3) - { return arg1 + arg2 + arg3; } - int fun2(int arg1, int arg2) - { return arg1 + arg2; } - ]],[[ - int res3 = gcc_vmacro3(1, 2, 3); - int res2 = gcc_vmacro2(1, 2); - ]]) - ],[ - curl_cv_variadic_macros_gcc="yes" - ],[ - curl_cv_variadic_macros_gcc="no" - ]) - ]) - case "$curl_cv_variadic_macros_gcc" in - yes) - AC_DEFINE_UNQUOTED(HAVE_VARIADIC_MACROS_GCC, 1, - [Define to 1 if compiler supports old gcc variadic macro style.]) - ;; - esac -]) - - -dnl CURL_CHECK_CA_BUNDLE -dnl ------------------------------------------------- -dnl Check if a default ca-bundle should be used -dnl -dnl regarding the paths this will scan: -dnl /etc/ssl/certs/ca-certificates.crt Debian systems -dnl /etc/pki/tls/certs/ca-bundle.crt Redhat and Mandriva -dnl /usr/share/ssl/certs/ca-bundle.crt old(er) Redhat -dnl /usr/local/share/certs/ca-root-nss.crt FreeBSD, MidnightBSD -dnl /etc/ssl/cert.pem OpenBSD, FreeBSD, MidnightBSD (symlink) -dnl /etc/ssl/certs/ (ca path) SUSE - -AC_DEFUN([CURL_CHECK_CA_BUNDLE], [ - - AC_MSG_CHECKING([default CA cert bundle/path]) - - AC_ARG_WITH(ca-bundle, -AS_HELP_STRING([--with-ca-bundle=FILE], -[Path to a file containing CA certificates (example: /etc/ca-bundle.crt)]) -AS_HELP_STRING([--without-ca-bundle], [Don't use a default CA bundle]), - [ - want_ca="$withval" - if test "x$want_ca" = "xyes"; then - AC_MSG_ERROR([--with-ca-bundle=FILE requires a path to the CA bundle]) - fi - ], - [ want_ca="unset" ]) - AC_ARG_WITH(ca-path, -AS_HELP_STRING([--with-ca-path=DIRECTORY], -[Path to a directory containing CA certificates stored individually, with \ -their filenames in a hash format. This option can be used with the OpenSSL, \ -GnuTLS and mbedTLS backends. Refer to OpenSSL c_rehash for details. \ -(example: /etc/certificates)]) -AS_HELP_STRING([--without-ca-path], [Don't use a default CA path]), - [ - want_capath="$withval" - if test "x$want_capath" = "xyes"; then - AC_MSG_ERROR([--with-ca-path=DIRECTORY requires a path to the CA path directory]) - fi - ], - [ want_capath="unset"]) - - ca_warning=" (warning: certs not found)" - capath_warning=" (warning: certs not found)" - check_capath="" - - if test "x$want_ca" != "xno" -a "x$want_ca" != "xunset" -a \ - "x$want_capath" != "xno" -a "x$want_capath" != "xunset"; then - dnl both given - ca="$want_ca" - capath="$want_capath" - elif test "x$want_ca" != "xno" -a "x$want_ca" != "xunset"; then - dnl --with-ca-bundle given - ca="$want_ca" - capath="no" - elif test "x$want_capath" != "xno" -a "x$want_capath" != "xunset"; then - dnl --with-ca-path given - if test "x$OPENSSL_ENABLED" != "x1" -a "x$GNUTLS_ENABLED" != "x1" -a "x$MBEDTLS_ENABLED" != "x1"; then - AC_MSG_ERROR([--with-ca-path only works with OpenSSL, GnuTLS or mbedTLS]) - fi - capath="$want_capath" - ca="no" - else - dnl first try autodetecting a CA bundle , then a CA path - dnl both autodetections can be skipped by --without-ca-* - ca="no" - capath="no" - if test "x$cross_compiling" != "xyes"; then - dnl NOT cross-compiling and... - dnl neither of the --with-ca-* options are provided - if test "x$want_ca" = "xunset"; then - dnl the path we previously would have installed the curl ca bundle - dnl to, and thus we now check for an already existing cert in that - dnl place in case we find no other - if test "x$prefix" != xNONE; then - cac="${prefix}/share/curl/curl-ca-bundle.crt" - else - cac="$ac_default_prefix/share/curl/curl-ca-bundle.crt" - fi - - for a in /etc/ssl/certs/ca-certificates.crt \ - /etc/pki/tls/certs/ca-bundle.crt \ - /usr/share/ssl/certs/ca-bundle.crt \ - /usr/local/share/certs/ca-root-nss.crt \ - /etc/ssl/cert.pem \ - "$cac"; do - if test -f "$a"; then - ca="$a" - break - fi - done - fi - if test "x$want_capath" = "xunset" -a "x$ca" = "xno" -a \ - "x$OPENSSL_ENABLED" = "x1"; then - check_capath="/etc/ssl/certs/" - fi - else - dnl no option given and cross-compiling - AC_MSG_WARN([skipped the ca-cert path detection when cross-compiling]) - fi - fi - - if test "x$ca" = "xno" || test -f "$ca"; then - ca_warning="" - fi - - if test "x$capath" != "xno"; then - check_capath="$capath" - fi - - if test ! -z "$check_capath"; then - for a in "$check_capath"; do - if test -d "$a" && ls "$a"/[[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]].0 >/dev/null 2>/dev/null; then - if test "x$capath" = "xno"; then - capath="$a" - fi - capath_warning="" - break - fi - done - fi - - if test "x$capath" = "xno"; then - capath_warning="" - fi - - if test "x$ca" != "xno"; then - CURL_CA_BUNDLE='"'$ca'"' - AC_DEFINE_UNQUOTED(CURL_CA_BUNDLE, "$ca", [Location of default ca bundle]) - AC_SUBST(CURL_CA_BUNDLE) - AC_MSG_RESULT([$ca]) - fi - if test "x$capath" != "xno"; then - CURL_CA_PATH="\"$capath\"" - AC_DEFINE_UNQUOTED(CURL_CA_PATH, "$capath", [Location of default ca path]) - AC_MSG_RESULT([$capath (capath)]) - fi - if test "x$ca" = "xno" && test "x$capath" = "xno"; then - AC_MSG_RESULT([no]) - fi - - AC_MSG_CHECKING([whether to use builtin CA store of SSL library]) - AC_ARG_WITH(ca-fallback, -AS_HELP_STRING([--with-ca-fallback], [Use the built in CA store of the SSL library]) -AS_HELP_STRING([--without-ca-fallback], [Don't use the built in CA store of the SSL library]), - [ - if test "x$with_ca_fallback" != "xyes" -a "x$with_ca_fallback" != "xno"; then - AC_MSG_ERROR([--with-ca-fallback only allows yes or no as parameter]) - fi - ], - [ with_ca_fallback="no"]) - AC_MSG_RESULT([$with_ca_fallback]) - if test "x$with_ca_fallback" = "xyes"; then - if test "x$OPENSSL_ENABLED" != "x1" -a "x$GNUTLS_ENABLED" != "x1"; then - AC_MSG_ERROR([--with-ca-fallback only works with OpenSSL or GnuTLS]) - fi - AC_DEFINE_UNQUOTED(CURL_CA_FALLBACK, 1, [define "1" to use built in CA store of SSL library ]) - fi -]) - -dnl CURL_CHECK_WIN32_LARGEFILE -dnl ------------------------------------------------- -dnl Check if curl's WIN32 large file will be used - -AC_DEFUN([CURL_CHECK_WIN32_LARGEFILE], [ - AC_REQUIRE([CURL_CHECK_HEADER_WINDOWS])dnl - AC_MSG_CHECKING([whether build target supports WIN32 file API]) - curl_win32_file_api="no" - if test "$curl_cv_header_windows_h" = "yes"; then - if test x"$enable_largefile" != "xno"; then - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ - ]],[[ -#if !defined(_WIN32_WCE) && \ - (defined(__MINGW32__) || \ - (defined(_MSC_VER) && (defined(_WIN32) || defined(_WIN64)))) - int dummy=1; -#else - WIN32 large file API not supported. -#endif - ]]) - ],[ - curl_win32_file_api="win32_large_files" - ]) - fi - if test "$curl_win32_file_api" = "no"; then - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ - ]],[[ -#if defined(_WIN32_WCE) || defined(__MINGW32__) || defined(_MSC_VER) - int dummy=1; -#else - WIN32 small file API not supported. -#endif - ]]) - ],[ - curl_win32_file_api="win32_small_files" - ]) - fi - fi - case "$curl_win32_file_api" in - win32_large_files) - AC_MSG_RESULT([yes (large file enabled)]) - AC_DEFINE_UNQUOTED(USE_WIN32_LARGE_FILES, 1, - [Define to 1 if you are building a Windows target with large file support.]) - AC_SUBST(USE_WIN32_LARGE_FILES, [1]) - ;; - win32_small_files) - AC_MSG_RESULT([yes (large file disabled)]) - AC_DEFINE_UNQUOTED(USE_WIN32_SMALL_FILES, 1, - [Define to 1 if you are building a Windows target without large file support.]) - AC_SUBST(USE_WIN32_SMALL_FILES, [1]) - ;; - *) - AC_MSG_RESULT([no]) - ;; - esac -]) - -dnl CURL_CHECK_WIN32_CRYPTO -dnl ------------------------------------------------- -dnl Check if curl's WIN32 crypto lib can be used - -AC_DEFUN([CURL_CHECK_WIN32_CRYPTO], [ - AC_REQUIRE([CURL_CHECK_HEADER_WINCRYPT])dnl - AC_MSG_CHECKING([whether build target supports WIN32 crypto API]) - curl_win32_crypto_api="no" - if test "$curl_cv_header_wincrypt_h" = "yes"; then - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ -#undef inline -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#include - ]],[[ - HCRYPTPROV hCryptProv; - if(CryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_FULL, - CRYPT_VERIFYCONTEXT | CRYPT_SILENT)) { - CryptReleaseContext(hCryptProv, 0); - } - ]]) - ],[ - curl_win32_crypto_api="yes" - ]) - fi - case "$curl_win32_crypto_api" in - yes) - AC_MSG_RESULT([yes]) - AC_DEFINE_UNQUOTED(USE_WIN32_CRYPTO, 1, - [Define to 1 if you are building a Windows target with crypto API support.]) - AC_SUBST(USE_WIN32_CRYPTO, [1]) - ;; - *) - AC_MSG_RESULT([no]) - ;; - esac -]) - -dnl CURL_EXPORT_PCDIR ($pcdir) -dnl ------------------------ -dnl if $pcdir is not empty, set PKG_CONFIG_LIBDIR to $pcdir and export -dnl -dnl we need this macro since pkg-config distinguishes among empty and unset -dnl variable while checking PKG_CONFIG_LIBDIR -dnl - -AC_DEFUN([CURL_EXPORT_PCDIR], [ - if test -n "$1"; then - PKG_CONFIG_LIBDIR="$1" - export PKG_CONFIG_LIBDIR - fi -]) - -dnl CURL_CHECK_PKGCONFIG ($module, [$pcdir]) -dnl ------------------------ -dnl search for the pkg-config tool. Set the PKGCONFIG variable to hold the -dnl path to it, or 'no' if not found/present. -dnl -dnl If pkg-config is present, check that it has info about the $module or -dnl return "no" anyway! -dnl -dnl Optionally PKG_CONFIG_LIBDIR may be given as $pcdir. -dnl - -AC_DEFUN([CURL_CHECK_PKGCONFIG], [ - if test -n "$PKG_CONFIG"; then - PKGCONFIG="$PKG_CONFIG" - else - AC_PATH_TOOL([PKGCONFIG], [pkg-config], [no], - [$PATH:/usr/bin:/usr/local/bin]) - fi - - if test "x$PKGCONFIG" != "xno"; then - AC_MSG_CHECKING([for $1 options with pkg-config]) - dnl ask pkg-config about $1 - itexists=`CURL_EXPORT_PCDIR([$2]) dnl - $PKGCONFIG --exists $1 >/dev/null 2>&1 && echo 1` - - if test -z "$itexists"; then - dnl pkg-config does not have info about the given module! set the - dnl variable to 'no' - PKGCONFIG="no" - AC_MSG_RESULT([no]) - else - AC_MSG_RESULT([found]) - fi - fi -]) - - -dnl CURL_GENERATE_CONFIGUREHELP_PM -dnl ------------------------------------------------- -dnl Generate test harness configurehelp.pm module, defining and -dnl initializing some perl variables with values which are known -dnl when the configure script runs. For portability reasons, test -dnl harness needs information on how to run the C preprocessor. - -AC_DEFUN([CURL_GENERATE_CONFIGUREHELP_PM], [ - AC_REQUIRE([AC_PROG_CPP])dnl - tmp_cpp=`eval echo "$ac_cpp" 2>/dev/null` - if test -z "$tmp_cpp"; then - tmp_cpp='cpp' - fi - cat >./tests/configurehelp.pm <<_EOF -[@%:@] This is a generated file. Do not edit. - -package configurehelp; - -use strict; -use warnings; -use Exporter; - -use vars qw( - @ISA - @EXPORT_OK - \$Cpreprocessor - ); - -@ISA = qw(Exporter); - -@EXPORT_OK = qw( - \$Cpreprocessor - ); - -\$Cpreprocessor = '$tmp_cpp'; - -1; -_EOF -]) - -dnl CURL_CPP_P -dnl -dnl Check if $cpp -P should be used for extract define values due to gcc 5 -dnl splitting up strings and defines between line outputs. gcc by default -dnl (without -P) will show TEST EINVAL TEST as -dnl -dnl # 13 "conftest.c" -dnl TEST -dnl # 13 "conftest.c" 3 4 -dnl 22 -dnl # 13 "conftest.c" -dnl TEST - -AC_DEFUN([CURL_CPP_P], [ - AC_MSG_CHECKING([if cpp -P is needed]) - AC_EGREP_CPP([TEST.*TEST], [ - #include -TEST EINVAL TEST - ], [cpp=no], [cpp=yes]) - AC_MSG_RESULT([$cpp]) - - dnl we need cpp -P so check if it works then - if test "x$cpp" = "xyes"; then - AC_MSG_CHECKING([if cpp -P works]) - OLDCPPFLAGS=$CPPFLAGS - CPPFLAGS="$CPPFLAGS -P" - AC_EGREP_CPP([TEST.*TEST], [ - #include -TEST EINVAL TEST - ], [cpp_p=yes], [cpp_p=no]) - AC_MSG_RESULT([$cpp_p]) - - if test "x$cpp_p" = "xno"; then - AC_MSG_WARN([failed to figure out cpp -P alternative]) - # without -P - CPPPFLAG="" - else - # with -P - CPPPFLAG="-P" - fi - dnl restore CPPFLAGS - CPPFLAGS=$OLDCPPFLAGS - else - # without -P - CPPPFLAG="" - fi -]) - - -dnl CURL_DARWIN_CFLAGS -dnl -dnl Set -Werror=partial-availability to detect possible breaking code -dnl with very low deployment targets. -dnl - -AC_DEFUN([CURL_DARWIN_CFLAGS], [ - - tst_cflags="no" - case $host_os in - darwin*) - tst_cflags="yes" - ;; - esac - - AC_MSG_CHECKING([for good-to-use Darwin CFLAGS]) - AC_MSG_RESULT([$tst_cflags]); - - if test "$tst_cflags" = "yes"; then - old_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS -Werror=partial-availability" - AC_MSG_CHECKING([whether $CC accepts -Werror=partial-availability]) - AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], - [AC_MSG_RESULT([yes])], - [AC_MSG_RESULT([no]) - CFLAGS=$old_CFLAGS]) - fi - -]) - - -dnl CURL_SUPPORTS_BUILTIN_AVAILABLE -dnl -dnl Check to see if the compiler supports __builtin_available. This built-in -dnl compiler function first appeared in Apple LLVM 9.0.0. It's so new that, at -dnl the time this macro was written, the function was not yet documented. Its -dnl purpose is to return true if the code is running under a certain OS version -dnl or later. - -AC_DEFUN([CURL_SUPPORTS_BUILTIN_AVAILABLE], [ - AC_MSG_CHECKING([to see if the compiler supports __builtin_available()]) - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ -#include - ]],[[ - if (__builtin_available(macOS 10.8, iOS 5.0, *)) {} - ]]) - ],[ - AC_MSG_RESULT([yes]) - AC_DEFINE_UNQUOTED(HAVE_BUILTIN_AVAILABLE, 1, - [Define to 1 if you have the __builtin_available function.]) - ],[ - AC_MSG_RESULT([no]) - ]) -]) diff --git a/Engine/lib/curl/aclocal.m4 b/Engine/lib/curl/aclocal.m4 deleted file mode 100644 index 380bdb0b8..000000000 --- a/Engine/lib/curl/aclocal.m4 +++ /dev/null @@ -1,1216 +0,0 @@ -# generated automatically by aclocal 1.16.5 -*- Autoconf -*- - -# Copyright (C) 1996-2021 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. - -m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.71],, -[m4_warning([this file was generated for autoconf 2.71. -You have another version of autoconf. It may work, but is not guaranteed to. -If you have problems, you may need to regenerate the build system entirely. -To do so, use the procedure documented by the package, typically 'autoreconf'.])]) - -# Copyright (C) 2002-2021 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. - -# 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. -# (This private macro should not be called outside this file.) -AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.16' -dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to -dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.16.5], [], - [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl -]) - -# _AM_AUTOCONF_VERSION(VERSION) -# ----------------------------- -# aclocal traces this macro to find the Autoconf version. -# This is a private macro too. Using m4_define simplifies -# the logic in aclocal, which can simply ignore this definition. -m4_define([_AM_AUTOCONF_VERSION], []) - -# AM_SET_CURRENT_AUTOMAKE_VERSION -# ------------------------------- -# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. -# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. -AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.16.5])dnl -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) - -# AM_AUX_DIR_EXPAND -*- Autoconf -*- - -# Copyright (C) 2001-2021 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. - -# 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. - -AC_DEFUN([AM_AUX_DIR_EXPAND], -[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl -# Expand $ac_aux_dir to an absolute path. -am_aux_dir=`cd "$ac_aux_dir" && pwd` -]) - -# AM_CONDITIONAL -*- Autoconf -*- - -# Copyright (C) 1997-2021 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. - -# AM_CONDITIONAL(NAME, SHELL-CONDITION) -# ------------------------------------- -# Define a conditional. -AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ([2.52])dnl - m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE])dnl -AC_SUBST([$1_FALSE])dnl -_AM_SUBST_NOTMAKE([$1_TRUE])dnl -_AM_SUBST_NOTMAKE([$1_FALSE])dnl -m4_define([_AM_COND_VALUE_$1], [$2])dnl -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])]) - -# Copyright (C) 1999-2021 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. - - -# 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", "OBJC", "OBJCXX", "UPC", or "GJC". -# 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 - -m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], - [$1], [CXX], [depcc="$CXX" am_compiler_list=], - [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], - [$1], [UPC], [depcc="$UPC" am_compiler_list=], - [$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". - rm -rf conftest.dir - 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 - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - 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 - am__universal=false - m4_case([$1], [CC], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac], - [CXX], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac]) - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # 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. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with - # Solaris 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # 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. Also, some Intel - # versions had trouble with output in subdirs. - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - 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 - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_$1_dependencies_compiler_type=$depmode - break - fi - 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_CONDITIONAL([am__fastdep$1], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) -]) - - -# AM_SET_DEPDIR -# ------------- -# Choose a directory name for dependency files. -# This macro is AC_REQUIREd in _AM_DEPENDENCIES. -AC_DEFUN([AM_SET_DEPDIR], -[AC_REQUIRE([AM_SET_LEADING_DOT])dnl -AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl -]) - - -# AM_DEP_TRACK -# ------------ -AC_DEFUN([AM_DEP_TRACK], -[AC_ARG_ENABLE([dependency-tracking], [dnl -AS_HELP_STRING( - [--enable-dependency-tracking], - [do not reject slow dependency extractors]) -AS_HELP_STRING( - [--disable-dependency-tracking], - [speeds up one-time build])]) -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' - am__nodep='_no' -fi -AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH])dnl -_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl -AC_SUBST([am__nodep])dnl -_AM_SUBST_NOTMAKE([am__nodep])dnl -]) - -# Generate code to set up dependency tracking. -*- Autoconf -*- - -# Copyright (C) 1999-2021 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. - -# _AM_OUTPUT_DEPENDENCY_COMMANDS -# ------------------------------ -AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -[{ - # Older Autoconf quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - # TODO: see whether this extra hack can be removed once we start - # requiring Autoconf 2.70 or later. - AS_CASE([$CONFIG_FILES], - [*\'*], [eval set x "$CONFIG_FILES"], - [*], [set x $CONFIG_FILES]) - shift - # Used to flag and report bootstrapping failures. - am_rc=0 - for am_mf - do - # Strip MF so we end up with the name of the file. - am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile which includes - # dependency-tracking related rules and includes. - # Grep'ing the whole file directly is not great: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ - || continue - am_dirpart=`AS_DIRNAME(["$am_mf"])` - am_filepart=`AS_BASENAME(["$am_mf"])` - AM_RUN_LOG([cd "$am_dirpart" \ - && sed -e '/# am--include-marker/d' "$am_filepart" \ - | $MAKE -f - am--depfiles]) || am_rc=$? - done - if test $am_rc -ne 0; then - AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments - for automatic dependency tracking. If GNU make was not used, consider - re-running the configure script with MAKE="gmake" (or whatever is - necessary). You can also try re-running configure with the - '--disable-dependency-tracking' option to at least be able to build - the package (albeit without support for automatic dependency tracking).]) - fi - AS_UNSET([am_dirpart]) - AS_UNSET([am_filepart]) - AS_UNSET([am_mf]) - AS_UNSET([am_rc]) - rm -f conftest-deps.mk -} -])# _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. -# This creates each '.Po' and '.Plo' makefile fragment that we'll 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" MAKE="${MAKE-make}"])]) - -# Do all the work for Automake. -*- Autoconf -*- - -# Copyright (C) 1996-2021 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 macro actually does too much. Some checks are only needed if -# your package does certain things. But this isn't really a big deal. - -dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. -m4_define([AC_PROG_CC], -m4_defn([AC_PROG_CC]) -[_AM_PROG_CC_C_O -]) - -# 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_PREREQ([2.65])dnl -m4_ifdef([_$0_ALREADY_INIT], - [m4_fatal([$0 expanded multiple times -]m4_defn([_$0_ALREADY_INIT]))], - [m4_define([_$0_ALREADY_INIT], m4_expansion_stack)])dnl -dnl Autoconf wants to disallow AM_ names. We explicitly allow -dnl the ones we care about. -m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl -AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl -AC_REQUIRE([AC_PROG_INSTALL])dnl -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi -AC_SUBST([CYGPATH_W]) - -# Define the identity of the package. -dnl Distinguish between old-style and new-style calls. -m4_ifval([$2], -[AC_DIAGNOSE([obsolete], - [$0: two- and three-arguments forms are deprecated.]) -m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl - AC_SUBST([PACKAGE], [$1])dnl - AC_SUBST([VERSION], [$2])], -[_AM_SET_OPTIONS([$1])dnl -dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. -m4_if( - m4_ifset([AC_PACKAGE_NAME], [ok]):m4_ifset([AC_PACKAGE_VERSION], [ok]), - [ok:ok],, - [m4_fatal([AC_INIT should be called with package and version arguments])])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]) -AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl -AC_REQUIRE([AC_PROG_MKDIR_P])dnl -# For better backward compatibility. To be removed once Automake 1.9.x -# dies out for good. For more background, see: -# -# -AC_SUBST([mkdir_p], ['$(MKDIR_P)']) -# We need awk for the "check" target (and possibly the TAP driver). The -# system "awk" is bad on some platforms. -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([AC_PROG_MAKE_SET])dnl -AC_REQUIRE([AM_SET_LEADING_DOT])dnl -_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], - [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], - [_AM_PROG_TAR([v7])])]) -_AM_IF_OPTION([no-dependencies],, -[AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES([CC])], - [m4_define([AC_PROG_CC], - m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl -AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES([CXX])], - [m4_define([AC_PROG_CXX], - m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl -AC_PROVIDE_IFELSE([AC_PROG_OBJC], - [_AM_DEPENDENCIES([OBJC])], - [m4_define([AC_PROG_OBJC], - m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl -AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], - [_AM_DEPENDENCIES([OBJCXX])], - [m4_define([AC_PROG_OBJCXX], - m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl -]) -# Variables for tags utilities; see am/tags.am -if test -z "$CTAGS"; then - CTAGS=ctags -fi -AC_SUBST([CTAGS]) -if test -z "$ETAGS"; then - ETAGS=etags -fi -AC_SUBST([ETAGS]) -if test -z "$CSCOPE"; then - CSCOPE=cscope -fi -AC_SUBST([CSCOPE]) - -AC_REQUIRE([AM_SILENT_RULES])dnl -dnl The testsuite driver may need to know about EXEEXT, so add the -dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This -dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. -AC_CONFIG_COMMANDS_PRE(dnl -[m4_provide_if([_AM_COMPILER_EXEEXT], - [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl - -# POSIX will say in a future version that running "rm -f" with no argument -# is OK; and we want to be able to make that assumption in our Makefile -# recipes. So use an aggressive probe to check that the usage we want is -# actually supported "in the wild" to an acceptable degree. -# See automake bug#10828. -# To make any issue more visible, cause the running configure to be aborted -# by default if the 'rm' program in use doesn't match our expectations; the -# user can still override this though. -if rm -f && rm -fr && rm -rf; then : OK; else - cat >&2 <<'END' -Oops! - -Your 'rm' program seems unable to run without file operands specified -on the command line, even when the '-f' option is present. This is contrary -to the behaviour of most rm programs out there, and not conforming with -the upcoming POSIX standard: - -Please tell bug-automake@gnu.org about your system, including the value -of your $PATH and any error possibly output before this message. This -can help us improve future automake versions. - -END - if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then - echo 'Configuration will proceed anyway, since you have set the' >&2 - echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 - echo >&2 - else - cat >&2 <<'END' -Aborting the configuration process, to ensure you take notice of the issue. - -You can download and install GNU coreutils to get an 'rm' implementation -that behaves properly: . - -If you want to complete the configuration process using your problematic -'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM -to "yes", and re-run configure. - -END - AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) - fi -fi -dnl The trailing newline in this macro's definition is deliberate, for -dnl backward compatibility and to allow trailing 'dnl'-style comments -dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. -]) - -dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not -dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further -dnl mangled by Autoconf and run in a shell conditional statement. -m4_define([_AC_COMPILER_EXEEXT], -m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) - -# 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. The stamp files are numbered to have different names. - -# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the -# loop where config.status creates the headers, so we can generate -# our stamp files there. -AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], -[# Compute $1's index in $config_headers. -_am_arg=$1 -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) - -# Copyright (C) 2001-2021 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. - -# AM_PROG_INSTALL_SH -# ------------------ -# Define $install_sh. -AC_DEFUN([AM_PROG_INSTALL_SH], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -if test x"${install_sh+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi -AC_SUBST([install_sh])]) - -# Copyright (C) 2003-2021 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. - -# Check whether the underlying file-system supports filenames -# with a leading dot. For instance MS-DOS doesn't. -AC_DEFUN([AM_SET_LEADING_DOT], -[rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null -AC_SUBST([am__leading_dot])]) - -# Add --enable-maintainer-mode option to configure. -*- Autoconf -*- -# From Jim Meyering - -# Copyright (C) 1996-2021 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. - -# AM_MAINTAINER_MODE([DEFAULT-MODE]) -# ---------------------------------- -# Control maintainer-specific portions of Makefiles. -# Default is to disable them, unless 'enable' is passed literally. -# For symmetry, 'disable' may be passed as well. Anyway, the user -# can override the default with the --enable/--disable switch. -AC_DEFUN([AM_MAINTAINER_MODE], -[m4_case(m4_default([$1], [disable]), - [enable], [m4_define([am_maintainer_other], [disable])], - [disable], [m4_define([am_maintainer_other], [enable])], - [m4_define([am_maintainer_other], [enable]) - m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) -AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) - dnl maintainer-mode's default is 'disable' unless 'enable' is passed - AC_ARG_ENABLE([maintainer-mode], - [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode], - am_maintainer_other[ make rules and dependencies not useful - (and sometimes confusing) to the casual installer])], - [USE_MAINTAINER_MODE=$enableval], - [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) - AC_MSG_RESULT([$USE_MAINTAINER_MODE]) - AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) - MAINT=$MAINTAINER_MODE_TRUE - AC_SUBST([MAINT])dnl -] -) - -# Check to see how 'make' treats includes. -*- Autoconf -*- - -# Copyright (C) 2001-2021 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. - -# AM_MAKE_INCLUDE() -# ----------------- -# Check whether make has an 'include' directive that can support all -# the idioms we need for our automatic dependency tracking code. -AC_DEFUN([AM_MAKE_INCLUDE], -[AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive]) -cat > confinc.mk << 'END' -am__doit: - @echo this is the am__doit target >confinc.out -.PHONY: am__doit -END -am__include="#" -am__quote= -# BSD make does it like this. -echo '.include "confinc.mk" # ignored' > confmf.BSD -# Other make implementations (GNU, Solaris 10, AIX) do it like this. -echo 'include confinc.mk # ignored' > confmf.GNU -_am_result=no -for s in GNU BSD; do - AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out]) - AS_CASE([$?:`cat confinc.out 2>/dev/null`], - ['0:this is the am__doit target'], - [AS_CASE([$s], - [BSD], [am__include='.include' am__quote='"'], - [am__include='include' am__quote=''])]) - if test "$am__include" != "#"; then - _am_result="yes ($s style)" - break - fi -done -rm -f confinc.* confmf.* -AC_MSG_RESULT([${_am_result}]) -AC_SUBST([am__include])]) -AC_SUBST([am__quote])]) - -# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- - -# Copyright (C) 1997-2021 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. - -# 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 is modern enough. -# If it is, set am_missing_run to use it, otherwise, to nothing. -AC_DEFUN([AM_MISSING_HAS_RUN], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([missing])dnl -if test x"${MISSING+set}" != xset; then - MISSING="\${SHELL} '$am_aux_dir/missing'" -fi -# Use eval to expand $SHELL -if eval "$MISSING --is-lightweight"; then - am_missing_run="$MISSING " -else - am_missing_run= - AC_MSG_WARN(['missing' script is too old or missing]) -fi -]) - -# Helper functions for option handling. -*- Autoconf -*- - -# Copyright (C) 2001-2021 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. - -# _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], -[m4_foreach_w([_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])]) - -# Copyright (C) 1999-2021 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. - -# _AM_PROG_CC_C_O -# --------------- -# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC -# to automatically call this. -AC_DEFUN([_AM_PROG_CC_C_O], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([compile])dnl -AC_LANG_PUSH([C])dnl -AC_CACHE_CHECK( - [whether $CC understands -c and -o together], - [am_cv_prog_cc_c_o], - [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) - # Make sure it works both with $CC and with simple cc. - # Following AC_PROG_CC_C_O, we do the test twice because some - # compilers refuse to overwrite an existing .o file with -o, - # though they will create one. - am_cv_prog_cc_c_o=yes - for am_i in 1 2; do - if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ - && test -f conftest2.$ac_objext; then - : OK - else - am_cv_prog_cc_c_o=no - break - fi - done - rm -f core conftest* - unset am_i]) -if test "$am_cv_prog_cc_c_o" != yes; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -fi -AC_LANG_POP([C])]) - -# For backward compatibility. -AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) - -# Copyright (C) 2001-2021 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. - -# AM_RUN_LOG(COMMAND) -# ------------------- -# Run COMMAND, save the exit status in ac_status, and log it. -# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) -AC_DEFUN([AM_RUN_LOG], -[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD - ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - (exit $ac_status); }]) - -# Check to make sure that the build environment is sane. -*- Autoconf -*- - -# Copyright (C) 1996-2021 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. - -# AM_SANITY_CHECK -# --------------- -AC_DEFUN([AM_SANITY_CHECK], -[AC_MSG_CHECKING([whether build environment is sane]) -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[[\\\"\#\$\&\'\`$am_lf]]*) - AC_MSG_ERROR([unsafe absolute working directory name]);; -esac -case $srcdir in - *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) - AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; -esac - -# 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 ( - am_has_slept=no - for am_try in 1 2; do - echo "timestamp, slept: $am_has_slept" > conftest.file - 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 - 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 - if test "$[2]" = conftest.file || test $am_try -eq 2; then - break - fi - # Just in case. - sleep 1 - am_has_slept=yes - done - 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]) -# If we didn't sleep, we still need to ensure time stamps of config.status and -# generated files are strictly newer. -am_sleep_pid= -if grep 'slept: no' conftest.file >/dev/null 2>&1; then - ( sleep 1 ) & - am_sleep_pid=$! -fi -AC_CONFIG_COMMANDS_PRE( - [AC_MSG_CHECKING([that generated files are newer than configure]) - if test -n "$am_sleep_pid"; then - # Hide warnings about reused PIDs. - wait $am_sleep_pid 2>/dev/null - fi - AC_MSG_RESULT([done])]) -rm -f conftest.file -]) - -# Copyright (C) 2009-2021 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. - -# AM_SILENT_RULES([DEFAULT]) -# -------------------------- -# Enable less verbose build rules; with the default set to DEFAULT -# ("yes" being less verbose, "no" or empty being verbose). -AC_DEFUN([AM_SILENT_RULES], -[AC_ARG_ENABLE([silent-rules], [dnl -AS_HELP_STRING( - [--enable-silent-rules], - [less verbose build output (undo: "make V=1")]) -AS_HELP_STRING( - [--disable-silent-rules], - [verbose build output (undo: "make V=0")])dnl -]) -case $enable_silent_rules in @%:@ ((( - yes) AM_DEFAULT_VERBOSITY=0;; - no) AM_DEFAULT_VERBOSITY=1;; - *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; -esac -dnl -dnl A few 'make' implementations (e.g., NonStop OS and NextStep) -dnl do not support nested variable expansions. -dnl See automake bug#9928 and bug#10237. -am_make=${MAKE-make} -AC_CACHE_CHECK([whether $am_make supports nested variables], - [am_cv_make_support_nested_variables], - [if AS_ECHO([['TRUE=$(BAR$(V)) -BAR0=false -BAR1=true -V=1 -am__doit: - @$(TRUE) -.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then - am_cv_make_support_nested_variables=yes -else - am_cv_make_support_nested_variables=no -fi]) -if test $am_cv_make_support_nested_variables = yes; then - dnl Using '$V' instead of '$(V)' breaks IRIX make. - AM_V='$(V)' - AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' -else - AM_V=$AM_DEFAULT_VERBOSITY - AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY -fi -AC_SUBST([AM_V])dnl -AM_SUBST_NOTMAKE([AM_V])dnl -AC_SUBST([AM_DEFAULT_V])dnl -AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl -AC_SUBST([AM_DEFAULT_VERBOSITY])dnl -AM_BACKSLASH='\' -AC_SUBST([AM_BACKSLASH])dnl -_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl -]) - -# Copyright (C) 2001-2021 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. - -# AM_PROG_INSTALL_STRIP -# --------------------- -# 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="\$(install_sh) -c -s" -AC_SUBST([INSTALL_STRIP_PROGRAM])]) - -# Copyright (C) 2006-2021 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. - -# _AM_SUBST_NOTMAKE(VARIABLE) -# --------------------------- -# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. -# This macro is traced by Automake. -AC_DEFUN([_AM_SUBST_NOTMAKE]) - -# AM_SUBST_NOTMAKE(VARIABLE) -# -------------------------- -# Public sister of _AM_SUBST_NOTMAKE. -AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) - -# Check how to create a tarball. -*- Autoconf -*- - -# Copyright (C) 2004-2021 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. - -# _AM_PROG_TAR(FORMAT) -# -------------------- -# Check how to create a tarball in format FORMAT. -# FORMAT should be one of 'v7', 'ustar', or 'pax'. -# -# Substitute a variable $(am__tar) that is a command -# writing to stdout a FORMAT-tarball containing the directory -# $tardir. -# tardir=directory && $(am__tar) > result.tar -# -# Substitute a variable $(am__untar) that extract such -# a tarball read from stdin. -# $(am__untar) < result.tar -# -AC_DEFUN([_AM_PROG_TAR], -[# Always define AMTAR for backward compatibility. Yes, it's still used -# in the wild :-( We should find a proper way to deprecate it ... -AC_SUBST([AMTAR], ['$${TAR-tar}']) - -# We'll loop over all known methods to create a tar archive until one works. -_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' - -m4_if([$1], [v7], - [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], - - [m4_case([$1], - [ustar], - [# The POSIX 1988 'ustar' format is defined with fixed-size fields. - # There is notably a 21 bits limit for the UID and the GID. In fact, - # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 - # and bug#13588). - am_max_uid=2097151 # 2^21 - 1 - am_max_gid=$am_max_uid - # The $UID and $GID variables are not portable, so we need to resort - # to the POSIX-mandated id(1) utility. Errors in the 'id' calls - # below are definitely unexpected, so allow the users to see them - # (that is, avoid stderr redirection). - am_uid=`id -u || echo unknown` - am_gid=`id -g || echo unknown` - AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) - if test $am_uid -le $am_max_uid; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - _am_tools=none - fi - AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) - if test $am_gid -le $am_max_gid; then - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - _am_tools=none - fi], - - [pax], - [], - - [m4_fatal([Unknown tar format])]) - - AC_MSG_CHECKING([how to create a $1 tar archive]) - - # Go ahead even if we have the value already cached. We do so because we - # need to set the values for the 'am__tar' and 'am__untar' variables. - _am_tools=${am_cv_prog_tar_$1-$_am_tools} - - for _am_tool in $_am_tools; do - case $_am_tool in - gnutar) - for _am_tar in tar gnutar gtar; do - AM_RUN_LOG([$_am_tar --version]) && break - done - am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' - am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' - am__untar="$_am_tar -xf -" - ;; - plaintar) - # Must skip GNU tar: if it does not support --format= it doesn't create - # ustar tarball either. - (tar --version) >/dev/null 2>&1 && continue - am__tar='tar chf - "$$tardir"' - am__tar_='tar chf - "$tardir"' - am__untar='tar xf -' - ;; - pax) - am__tar='pax -L -x $1 -w "$$tardir"' - am__tar_='pax -L -x $1 -w "$tardir"' - am__untar='pax -r' - ;; - cpio) - am__tar='find "$$tardir" -print | cpio -o -H $1 -L' - am__tar_='find "$tardir" -print | cpio -o -H $1 -L' - am__untar='cpio -i -H $1 -d' - ;; - none) - am__tar=false - am__tar_=false - am__untar=false - ;; - esac - - # If the value was cached, stop now. We just wanted to have am__tar - # and am__untar set. - test -n "${am_cv_prog_tar_$1}" && break - - # tar/untar a dummy directory, and stop if the command works. - rm -rf conftest.dir - mkdir conftest.dir - echo GrepMe > conftest.dir/file - AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) - rm -rf conftest.dir - if test -s conftest.tar; then - AM_RUN_LOG([$am__untar /dev/null 2>&1 && break - fi - done - rm -rf conftest.dir - - AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) - AC_MSG_RESULT([$am_cv_prog_tar_$1])]) - -AC_SUBST([am__tar]) -AC_SUBST([am__untar]) -]) # _AM_PROG_TAR - -m4_include([m4/curl-amissl.m4]) -m4_include([m4/curl-bearssl.m4]) -m4_include([m4/curl-compilers.m4]) -m4_include([m4/curl-confopts.m4]) -m4_include([m4/curl-functions.m4]) -m4_include([m4/curl-gnutls.m4]) -m4_include([m4/curl-mbedtls.m4]) -m4_include([m4/curl-nss.m4]) -m4_include([m4/curl-openssl.m4]) -m4_include([m4/curl-override.m4]) -m4_include([m4/curl-reentrant.m4]) -m4_include([m4/curl-rustls.m4]) -m4_include([m4/curl-schannel.m4]) -m4_include([m4/curl-sectransp.m4]) -m4_include([m4/curl-sysconfig.m4]) -m4_include([m4/curl-wolfssl.m4]) -m4_include([m4/libtool.m4]) -m4_include([m4/ltoptions.m4]) -m4_include([m4/ltsugar.m4]) -m4_include([m4/ltversion.m4]) -m4_include([m4/lt~obsolete.m4]) -m4_include([m4/xc-am-iface.m4]) -m4_include([m4/xc-cc-check.m4]) -m4_include([m4/xc-lt-iface.m4]) -m4_include([m4/xc-translit.m4]) -m4_include([m4/xc-val-flgs.m4]) -m4_include([m4/zz40-xc-ovr.m4]) -m4_include([m4/zz50-xc-ovr.m4]) -m4_include([m4/zz60-xc-ovr.m4]) -m4_include([acinclude.m4]) diff --git a/Engine/lib/curl/buildconf b/Engine/lib/curl/buildconf deleted file mode 100755 index 16fc8a75e..000000000 --- a/Engine/lib/curl/buildconf +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh -# -# Copyright (C) 2000 - 2022 Daniel Stenberg, , et al. -# -# SPDX-License-Identifier: curl - -echo "*** Do not use buildconf. Instead, just use: autoreconf -fi" >&2 -exec ${AUTORECONF:-autoreconf} -fi "${@}" diff --git a/Engine/lib/curl/buildconf.bat b/Engine/lib/curl/buildconf.bat deleted file mode 100644 index d779795dd..000000000 --- a/Engine/lib/curl/buildconf.bat +++ /dev/null @@ -1,319 +0,0 @@ -@echo off -rem *************************************************************************** -rem * _ _ ____ _ -rem * Project ___| | | | _ \| | -rem * / __| | | | |_) | | -rem * | (__| |_| | _ <| |___ -rem * \___|\___/|_| \_\_____| -rem * -rem * Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -rem * -rem * This software is licensed as described in the file COPYING, which -rem * you should have received as part of this distribution. The terms -rem * are also available at https://curl.se/docs/copyright.html. -rem * -rem * You may opt to use, copy, modify, merge, publish, distribute and/or sell -rem * copies of the Software, and permit persons to whom the Software is -rem * furnished to do so, under the terms of the COPYING file. -rem * -rem * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -rem * KIND, either express or implied. -rem * -rem * SPDX-License-Identifier: curl -rem * -rem *************************************************************************** - -rem NOTES -rem -rem This batch file must be used to set up a git tree to build on systems where -rem there is no autotools support (i.e. DOS and Windows). -rem - -:begin - rem Set our variables - if "%OS%" == "Windows_NT" setlocal - set MODE=GENERATE - - rem Switch to this batch file's directory - cd /d "%~0\.." 1>NUL 2>&1 - - rem Check we are running from a curl git repository - if not exist GIT-INFO goto norepo - - rem Detect programs. HAVE_ - rem When not found the variable is set undefined. The undefined pattern - rem allows for statements like "if not defined HAVE_PERL (command)" - groff --version NUL 2>&1 - if errorlevel 1 (set HAVE_GROFF=) else (set HAVE_GROFF=Y) - nroff --version NUL 2>&1 - if errorlevel 1 (set HAVE_NROFF=) else (set HAVE_NROFF=Y) - perl --version NUL 2>&1 - if errorlevel 1 (set HAVE_PERL=) else (set HAVE_PERL=Y) - gzip --version NUL 2>&1 - if errorlevel 1 (set HAVE_GZIP=) else (set HAVE_GZIP=Y) - -:parseArgs - if "%~1" == "" goto start - - if /i "%~1" == "-clean" ( - set MODE=CLEAN - ) else if /i "%~1" == "-?" ( - goto syntax - ) else if /i "%~1" == "-h" ( - goto syntax - ) else if /i "%~1" == "-help" ( - goto syntax - ) else ( - goto unknown - ) - - shift & goto parseArgs - -:start - if "%MODE%" == "GENERATE" ( - echo. - echo Generating prerequisite files - - call :generate - if errorlevel 3 goto nogenhugehelp - if errorlevel 2 goto nogenmakefile - if errorlevel 1 goto warning - - ) else ( - echo. - echo Removing prerequisite files - - call :clean - if errorlevel 2 goto nocleanhugehelp - if errorlevel 1 goto nocleanmakefile - ) - - goto success - -rem Main generate function. -rem -rem Returns: -rem -rem 0 - success -rem 1 - success with simplified tool_hugehelp.c -rem 2 - failed to generate Makefile -rem 3 - failed to generate tool_hugehelp.c -rem -:generate - if "%OS%" == "Windows_NT" setlocal - set BASIC_HUGEHELP=0 - - rem Create Makefile - echo * %CD%\Makefile - if exist Makefile.dist ( - copy /Y Makefile.dist Makefile 1>NUL 2>&1 - if errorlevel 1 ( - if "%OS%" == "Windows_NT" endlocal - exit /B 2 - ) - ) - - rem Create tool_hugehelp.c - echo * %CD%\src\tool_hugehelp.c - call :genHugeHelp - if errorlevel 2 ( - if "%OS%" == "Windows_NT" endlocal - exit /B 3 - ) - if errorlevel 1 ( - set BASIC_HUGEHELP=1 - ) - cmd /c exit 0 - - rem Setup c-ares git tree - if exist ares\buildconf.bat ( - echo. - echo Configuring c-ares build environment - cd ares - call buildconf.bat - cd .. - ) - - if "%BASIC_HUGEHELP%" == "1" ( - if "%OS%" == "Windows_NT" endlocal - exit /B 1 - ) - - if "%OS%" == "Windows_NT" endlocal - exit /B 0 - -rem Main clean function. -rem -rem Returns: -rem -rem 0 - success -rem 1 - failed to clean Makefile -rem 2 - failed to clean tool_hugehelp.c -rem -:clean - rem Remove Makefile - echo * %CD%\Makefile - if exist Makefile ( - del Makefile 2>NUL - if exist Makefile ( - exit /B 1 - ) - ) - - rem Remove tool_hugehelp.c - echo * %CD%\src\tool_hugehelp.c - if exist src\tool_hugehelp.c ( - del src\tool_hugehelp.c 2>NUL - if exist src\tool_hugehelp.c ( - exit /B 2 - ) - ) - - exit /B - -rem Function to generate src\tool_hugehelp.c -rem -rem Returns: -rem -rem 0 - full tool_hugehelp.c generated -rem 1 - simplified tool_hugehelp.c -rem 2 - failure -rem -:genHugeHelp - if "%OS%" == "Windows_NT" setlocal - set LC_ALL=C - set ROFFCMD= - set BASIC=1 - - if defined HAVE_PERL ( - if defined HAVE_GROFF ( - set ROFFCMD=groff -mtty-char -Tascii -P-c -man - ) else if defined HAVE_NROFF ( - set ROFFCMD=nroff -c -Tascii -man - ) - ) - - if defined ROFFCMD ( - echo #include "tool_setup.h"> src\tool_hugehelp.c - echo #include "tool_hugehelp.h">> src\tool_hugehelp.c - - if defined HAVE_GZIP ( - echo #ifndef HAVE_LIBZ>> src\tool_hugehelp.c - ) - - %ROFFCMD% docs\curl.1 2>NUL | perl src\mkhelp.pl docs\MANUAL >> src\tool_hugehelp.c - if defined HAVE_GZIP ( - echo #else>> src\tool_hugehelp.c - %ROFFCMD% docs\curl.1 2>NUL | perl src\mkhelp.pl -c docs\MANUAL >> src\tool_hugehelp.c - echo #endif /^* HAVE_LIBZ ^*/>> src\tool_hugehelp.c - ) - - set BASIC=0 - ) else ( - if exist src\tool_hugehelp.c.cvs ( - copy /Y src\tool_hugehelp.c.cvs src\tool_hugehelp.c 1>NUL 2>&1 - ) else ( - echo #include "tool_setup.h"> src\tool_hugehelp.c - echo #include "tool_hugehelp.h">> src\tool_hugehelp.c - echo.>> src\tool_hugehelp.c - echo void hugehelp(void^)>> src\tool_hugehelp.c - echo {>> src\tool_hugehelp.c - echo #ifdef USE_MANUAL>> src\tool_hugehelp.c - echo fputs("Built-in manual not included\n", stdout^);>> src\tool_hugehelp.c - echo #endif>> src\tool_hugehelp.c - echo }>> src\tool_hugehelp.c - ) - ) - - findstr "/C:void hugehelp(void)" src\tool_hugehelp.c 1>NUL 2>&1 - if errorlevel 1 ( - if "%OS%" == "Windows_NT" endlocal - exit /B 2 - ) - - if "%BASIC%" == "1" ( - if "%OS%" == "Windows_NT" endlocal - exit /B 1 - ) - - if "%OS%" == "Windows_NT" endlocal - exit /B 0 - -rem Function to clean-up local variables under DOS, Windows 3.x and -rem Windows 9x as setlocal isn't available until Windows NT -rem -:dosCleanup - set MODE= - set HAVE_GROFF= - set HAVE_NROFF= - set HAVE_PERL= - set HAVE_GZIP= - set BASIC_HUGEHELP= - set LC_ALL - set ROFFCMD= - set BASIC= - - exit /B - -:syntax - rem Display the help - echo. - echo Usage: buildconf [-clean] - echo. - echo -clean - Removes the files - goto error - -:unknown - echo. - echo Error: Unknown argument '%1' - goto error - -:norepo - echo. - echo Error: This batch file should only be used with a curl git repository - goto error - -:nogenmakefile - echo. - echo Error: Unable to generate Makefile - goto error - -:nogenhugehelp - echo. - echo Error: Unable to generate src\tool_hugehelp.c - goto error - -:nocleanmakefile - echo. - echo Error: Unable to clean Makefile - goto error - -:nocleanhugehelp - echo. - echo Error: Unable to clean src\tool_hugehelp.c - goto error - -:warning - echo. - echo Warning: The curl manual could not be integrated in the source. This means when - echo you build curl the manual will not be available (curl --man^). Integration of - echo the manual is not required and a summary of the options will still be available - echo (curl --help^). To integrate the manual your PATH is required to have - echo groff/nroff, perl and optionally gzip for compression. - goto success - -:error - if "%OS%" == "Windows_NT" ( - endlocal - ) else ( - call :dosCleanup - ) - exit /B 1 - -:success - if "%OS%" == "Windows_NT" ( - endlocal - ) else ( - call :dosCleanup - ) - exit /B 0 diff --git a/Engine/lib/curl/compile b/Engine/lib/curl/compile deleted file mode 100755 index df363c8fb..000000000 --- a/Engine/lib/curl/compile +++ /dev/null @@ -1,348 +0,0 @@ -#! /bin/sh -# Wrapper for compilers which do not understand '-c -o'. - -scriptversion=2018-03-07.03; # UTC - -# Copyright (C) 1999-2021 Free Software Foundation, Inc. -# Written by Tom Tromey . -# -# 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, see . - -# 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. - -# This file is maintained in Automake, please report -# bugs to or send patches to -# . - -nl=' -' - -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent tools from complaining about whitespace usage. -IFS=" "" $nl" - -file_conv= - -# func_file_conv build_file lazy -# Convert a $build file to $host form and store it in $file -# Currently only supports Windows hosts. If the determined conversion -# type is listed in (the comma separated) LAZY, no conversion will -# take place. -func_file_conv () -{ - file=$1 - case $file in - / | /[!/]*) # absolute file, and not a UNC file - if test -z "$file_conv"; then - # lazily determine how to convert abs files - case `uname -s` in - MINGW*) - file_conv=mingw - ;; - CYGWIN* | MSYS*) - file_conv=cygwin - ;; - *) - file_conv=wine - ;; - esac - fi - case $file_conv/,$2, in - *,$file_conv,*) - ;; - mingw/*) - file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` - ;; - cygwin/* | msys/*) - file=`cygpath -m "$file" || echo "$file"` - ;; - wine/*) - file=`winepath -w "$file" || echo "$file"` - ;; - esac - ;; - esac -} - -# func_cl_dashL linkdir -# Make cl look for libraries in LINKDIR -func_cl_dashL () -{ - func_file_conv "$1" - if test -z "$lib_path"; then - lib_path=$file - else - lib_path="$lib_path;$file" - fi - linker_opts="$linker_opts -LIBPATH:$file" -} - -# func_cl_dashl library -# Do a library search-path lookup for cl -func_cl_dashl () -{ - lib=$1 - found=no - save_IFS=$IFS - IFS=';' - for dir in $lib_path $LIB - do - IFS=$save_IFS - if $shared && test -f "$dir/$lib.dll.lib"; then - found=yes - lib=$dir/$lib.dll.lib - break - fi - if test -f "$dir/$lib.lib"; then - found=yes - lib=$dir/$lib.lib - break - fi - if test -f "$dir/lib$lib.a"; then - found=yes - lib=$dir/lib$lib.a - break - fi - done - IFS=$save_IFS - - if test "$found" != yes; then - lib=$lib.lib - fi -} - -# func_cl_wrapper cl arg... -# Adjust compile command to suit cl -func_cl_wrapper () -{ - # Assume a capable shell - lib_path= - shared=: - linker_opts= - for arg - do - if test -n "$eat"; then - eat= - else - case $1 in - -o) - # configure might choose to run compile as 'compile cc -o foo foo.c'. - eat=1 - case $2 in - *.o | *.[oO][bB][jJ]) - func_file_conv "$2" - set x "$@" -Fo"$file" - shift - ;; - *) - func_file_conv "$2" - set x "$@" -Fe"$file" - shift - ;; - esac - ;; - -I) - eat=1 - func_file_conv "$2" mingw - set x "$@" -I"$file" - shift - ;; - -I*) - func_file_conv "${1#-I}" mingw - set x "$@" -I"$file" - shift - ;; - -l) - eat=1 - func_cl_dashl "$2" - set x "$@" "$lib" - shift - ;; - -l*) - func_cl_dashl "${1#-l}" - set x "$@" "$lib" - shift - ;; - -L) - eat=1 - func_cl_dashL "$2" - ;; - -L*) - func_cl_dashL "${1#-L}" - ;; - -static) - shared=false - ;; - -Wl,*) - arg=${1#-Wl,} - save_ifs="$IFS"; IFS=',' - for flag in $arg; do - IFS="$save_ifs" - linker_opts="$linker_opts $flag" - done - IFS="$save_ifs" - ;; - -Xlinker) - eat=1 - linker_opts="$linker_opts $2" - ;; - -*) - set x "$@" "$1" - shift - ;; - *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) - func_file_conv "$1" - set x "$@" -Tp"$file" - shift - ;; - *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) - func_file_conv "$1" mingw - set x "$@" "$file" - shift - ;; - *) - set x "$@" "$1" - shift - ;; - esac - fi - shift - done - if test -n "$linker_opts"; then - linker_opts="-link$linker_opts" - fi - exec "$@" $linker_opts - exit 1 -} - -eat= - -case $1 in - '') - echo "$0: No command. Try '$0 --help' for more information." 1>&2 - exit 1; - ;; - -h | --h*) - cat <<\EOF -Usage: compile [--help] [--version] PROGRAM [ARGS] - -Wrapper for compilers which do not understand '-c -o'. -Remove '-o dest.o' from ARGS, run PROGRAM with the remaining -arguments, and rename the output as expected. - -If you are trying to build a whole package this is not the -right script to run: please start by reading the file 'INSTALL'. - -Report bugs to . -EOF - exit $? - ;; - -v | --v*) - echo "compile $scriptversion" - exit $? - ;; - cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ - icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) - func_cl_wrapper "$@" # Doesn't return... - ;; -esac - -ofile= -cfile= - -for arg -do - if test -n "$eat"; then - eat= - else - case $1 in - -o) - # configure might choose to run compile as 'compile cc -o foo foo.c'. - # So we strip '-o arg' only if arg is an object. - eat=1 - case $2 in - *.o | *.obj) - ofile=$2 - ;; - *) - set x "$@" -o "$2" - shift - ;; - esac - ;; - *.c) - cfile=$1 - set x "$@" "$1" - shift - ;; - *) - set x "$@" "$1" - shift - ;; - esac - fi - shift -done - -if test -z "$ofile" || test -z "$cfile"; then - # If no '-o' option was seen then we might have been invoked from a - # pattern rule where we don't need one. That is ok -- this is a - # normal compilation that the losing compiler can handle. If no - # '.c' file was seen then we are probably linking. That is also - # ok. - exec "$@" -fi - -# Name of file we expect compiler to create. -cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` - -# Create the lock directory. -# Note: use '[/\\:.-]' here to ensure that we don't use the same name -# that we are using for the .o file. Also, base the name on the expected -# object file name, since that is what matters with a parallel build. -lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d -while true; do - if mkdir "$lockdir" >/dev/null 2>&1; then - break - fi - sleep 1 -done -# FIXME: race condition here if user kills between mkdir and trap. -trap "rmdir '$lockdir'; exit 1" 1 2 15 - -# Run the compile. -"$@" -ret=$? - -if test -f "$cofile"; then - test "$cofile" = "$ofile" || mv "$cofile" "$ofile" -elif test -f "${cofile}bj"; then - test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" -fi - -rmdir "$lockdir" -exit $ret - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'before-save-hook 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC0" -# time-stamp-end: "; # UTC" -# End: diff --git a/Engine/lib/curl/config.guess b/Engine/lib/curl/config.guess deleted file mode 100755 index 7f76b6228..000000000 --- a/Engine/lib/curl/config.guess +++ /dev/null @@ -1,1754 +0,0 @@ -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright 1992-2022 Free Software Foundation, Inc. - -# shellcheck disable=SC2006,SC2268 # see below for rationale - -timestamp='2022-01-09' - -# 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 3 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, see . -# -# 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. This Exception is an additional permission under section 7 -# of the GNU General Public License, version 3 ("GPLv3"). -# -# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. -# -# You can get the latest version of this script from: -# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess -# -# Please send patches to . - - -# The "shellcheck disable" line above the timestamp inhibits complaints -# about features and limitations of the classic Bourne shell that were -# superseded or lifted in POSIX. However, this script identifies a wide -# variety of pre-POSIX systems that do not have POSIX shells at all, and -# even some reasonably current systems (Solaris 10 as case-in-point) still -# have a pre-POSIX /bin/sh. - - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] - -Output the configuration name of the system \`$me' is run on. - -Options: - -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 1992-2022 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 ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # 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 - -# Just in case it came from the environment. -GUESS= - -# CC_FOR_BUILD -- compiler used by this script. Note that the use of a -# compiler to aid in system detection is discouraged as it requires -# temporary files to be created and, as you can see below, it is a -# headache to deal with in a portable fashion. - -# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still -# use `HOST_CC' if defined, but it is deprecated. - -# Portable tmp directory creation inspired by the Autoconf team. - -tmp= -# shellcheck disable=SC2172 -trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 - -set_cc_for_build() { - # prevent multiple calls if $tmp is already set - test "$tmp" && return 0 - : "${TMPDIR=/tmp}" - # shellcheck disable=SC2039,SC3028 - { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || - { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || - { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || - { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } - dummy=$tmp/dummy - case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in - ,,) echo "int x;" > "$dummy.c" - for driver in cc gcc c89 c99 ; do - if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then - CC_FOR_BUILD=$driver - break - fi - done - 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 ; 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 - -case $UNAME_SYSTEM in -Linux|GNU|GNU/*) - LIBC=unknown - - set_cc_for_build - cat <<-EOF > "$dummy.c" - #include - #if defined(__UCLIBC__) - LIBC=uclibc - #elif defined(__dietlibc__) - LIBC=dietlibc - #elif defined(__GLIBC__) - LIBC=gnu - #else - #include - /* First heuristic to detect musl libc. */ - #ifdef __DEFINED_va_list - LIBC=musl - #endif - #endif - EOF - cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` - eval "$cc_set_libc" - - # Second heuristic to detect musl libc. - if [ "$LIBC" = unknown ] && - command -v ldd >/dev/null && - ldd --version 2>&1 | grep -q ^musl; then - LIBC=musl - fi - - # If the system lacks a compiler, then just pick glibc. - # We could probably try harder. - if [ "$LIBC" = unknown ]; then - LIBC=gnu - fi - ;; -esac - -# 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 tuples: *-*-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". - UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ - /sbin/sysctl -n hw.machine_arch 2>/dev/null || \ - /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \ - echo unknown)` - case $UNAME_MACHINE_ARCH in - aarch64eb) machine=aarch64_be-unknown ;; - armeb) machine=armeb-unknown ;; - arm*) machine=arm-unknown ;; - sh3el) machine=shl-unknown ;; - sh3eb) machine=sh-unknown ;; - sh5el) machine=sh5le-unknown ;; - earmv*) - arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` - endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` - machine=${arch}${endian}-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) and ABI. - case $UNAME_MACHINE_ARCH in - earm*) - os=netbsdelf - ;; - arm*|i386|m68k|ns32k|sh3*|sparc|vax) - set_cc_for_build - if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ELF__ - 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 - # Determine ABI tags. - case $UNAME_MACHINE_ARCH in - earm*) - expr='s/^earmv[0-9]/-eabi/;s/eb$//' - abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` - ;; - esac - # The OS release - # Debian GNU/NetBSD machines have a different userland, and - # thus, need a distinct triplet. However, they do not need - # kernel version information, so it can be replaced with a - # suitable tag, in the style of linux-gnu. - case $UNAME_VERSION in - Debian*) - release='-gnu' - ;; - *) - release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` - ;; - esac - # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: - # contains redundant information, the shorter form: - # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - GUESS=$machine-${os}${release}${abi-} - ;; - *:Bitrig:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` - GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE - ;; - *:OpenBSD:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE - ;; - *:SecBSD:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'` - GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE - ;; - *:LibertyBSD:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` - GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE - ;; - *:MidnightBSD:*:*) - GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE - ;; - *:ekkoBSD:*:*) - GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE - ;; - *:SolidBSD:*:*) - GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE - ;; - *:OS108:*:*) - GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE - ;; - macppc:MirBSD:*:*) - GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE - ;; - *:MirBSD:*:*) - GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE - ;; - *:Sortix:*:*) - GUESS=$UNAME_MACHINE-unknown-sortix - ;; - *:Twizzler:*:*) - GUESS=$UNAME_MACHINE-unknown-twizzler - ;; - *:Redox:*:*) - GUESS=$UNAME_MACHINE-unknown-redox - ;; - mips:OSF1:*.*) - GUESS=mips-dec-osf1 - ;; - alpha:OSF1:*:*) - # Reset EXIT trap before exiting to avoid spurious non-zero exit code. - trap '' 0 - case $UNAME_RELEASE in - *4.0) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - ;; - *5.*) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` - ;; - esac - # According to Compaq, /usr/sbin/psrinfo has been available on - # OSF/1 and Tru64 systems produced since 1995. I hope that - # covers most systems running today. This code pipes the CPU - # types through head -n 1, so we only detect the type of CPU 0. - ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` - case $ALPHA_CPU_TYPE in - "EV4 (21064)") - UNAME_MACHINE=alpha ;; - "EV4.5 (21064)") - UNAME_MACHINE=alpha ;; - "LCA4 (21066/21068)") - UNAME_MACHINE=alpha ;; - "EV5 (21164)") - UNAME_MACHINE=alphaev5 ;; - "EV5.6 (21164A)") - UNAME_MACHINE=alphaev56 ;; - "EV5.6 (21164PC)") - UNAME_MACHINE=alphapca56 ;; - "EV5.7 (21164PC)") - UNAME_MACHINE=alphapca57 ;; - "EV6 (21264)") - UNAME_MACHINE=alphaev6 ;; - "EV6.7 (21264A)") - UNAME_MACHINE=alphaev67 ;; - "EV6.8CB (21264C)") - UNAME_MACHINE=alphaev68 ;; - "EV6.8AL (21264B)") - UNAME_MACHINE=alphaev68 ;; - "EV6.8CX (21264D)") - UNAME_MACHINE=alphaev68 ;; - "EV6.9A (21264/EV69A)") - UNAME_MACHINE=alphaev69 ;; - "EV7 (21364)") - UNAME_MACHINE=alphaev7 ;; - "EV7.9 (21364A)") - UNAME_MACHINE=alphaev79 ;; - esac - # A Pn.n version is a patched version. - # 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. - OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` - GUESS=$UNAME_MACHINE-dec-osf$OSF_REL - ;; - Amiga*:UNIX_System_V:4.0:*) - GUESS=m68k-unknown-sysv4 - ;; - *:[Aa]miga[Oo][Ss]:*:*) - GUESS=$UNAME_MACHINE-unknown-amigaos - ;; - *:[Mm]orph[Oo][Ss]:*:*) - GUESS=$UNAME_MACHINE-unknown-morphos - ;; - *:OS/390:*:*) - GUESS=i370-ibm-openedition - ;; - *:z/VM:*:*) - GUESS=s390-ibm-zvmoe - ;; - *:OS400:*:*) - GUESS=powerpc-ibm-os400 - ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - GUESS=arm-acorn-riscix$UNAME_RELEASE - ;; - arm*:riscos:*:*|arm*:RISCOS:*:*) - GUESS=arm-unknown-riscos - ;; - SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - GUESS=hppa1.1-hitachi-hiuxmpp - ;; - Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) - # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - case `(/bin/universe) 2>/dev/null` in - att) GUESS=pyramid-pyramid-sysv3 ;; - *) GUESS=pyramid-pyramid-bsd ;; - esac - ;; - NILE*:*:*:dcosx) - GUESS=pyramid-pyramid-svr4 - ;; - DRS?6000:unix:4.0:6*) - GUESS=sparc-icl-nx6 - ;; - DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) - case `/usr/bin/uname -p` in - sparc) GUESS=sparc-icl-nx7 ;; - esac - ;; - s390x:SunOS:*:*) - SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` - GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL - ;; - sun4H:SunOS:5.*:*) - SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` - GUESS=sparc-hal-solaris2$SUN_REL - ;; - sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` - GUESS=sparc-sun-solaris2$SUN_REL - ;; - i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) - GUESS=i386-pc-auroraux$UNAME_RELEASE - ;; - i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - set_cc_for_build - SUN_ARCH=i386 - # If there is a compiler, see if it is configured for 64-bit objects. - # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. - # This test works for both compilers. - if test "$CC_FOR_BUILD" != no_compiler_found; then - if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - SUN_ARCH=x86_64 - fi - fi - SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` - GUESS=$SUN_ARCH-pc-solaris2$SUN_REL - ;; - 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. - SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` - GUESS=sparc-sun-solaris3$SUN_REL - ;; - 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'. - SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` - GUESS=sparc-sun-sunos$SUN_REL - ;; - sun3*:SunOS:*:*) - GUESS=m68k-sun-sunos$UNAME_RELEASE - ;; - 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) - GUESS=m68k-sun-sunos$UNAME_RELEASE - ;; - sun4) - GUESS=sparc-sun-sunos$UNAME_RELEASE - ;; - esac - ;; - aushp:SunOS:*:*) - GUESS=sparc-auspex-sunos$UNAME_RELEASE - ;; - # 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:*:*) - GUESS=m68k-atari-mint$UNAME_RELEASE - ;; - atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - GUESS=m68k-atari-mint$UNAME_RELEASE - ;; - *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - GUESS=m68k-atari-mint$UNAME_RELEASE - ;; - milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - GUESS=m68k-milan-mint$UNAME_RELEASE - ;; - hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - GUESS=m68k-hades-mint$UNAME_RELEASE - ;; - *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - GUESS=m68k-unknown-mint$UNAME_RELEASE - ;; - m68k:machten:*:*) - GUESS=m68k-apple-machten$UNAME_RELEASE - ;; - powerpc:machten:*:*) - GUESS=powerpc-apple-machten$UNAME_RELEASE - ;; - RISC*:Mach:*:*) - GUESS=mips-dec-mach_bsd4.3 - ;; - RISC*:ULTRIX:*:*) - GUESS=mips-dec-ultrix$UNAME_RELEASE - ;; - VAX*:ULTRIX*:*:*) - GUESS=vax-dec-ultrix$UNAME_RELEASE - ;; - 2020:CLIX:*:* | 2430:CLIX:*:*) - GUESS=clipper-intergraph-clix$UNAME_RELEASE - ;; - mips:*:*:UMIPS | mips:*:*:RISCos) - 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 -o "$dummy" "$dummy.c" && - dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && - SYSTEM_NAME=`"$dummy" "$dummyarg"` && - { echo "$SYSTEM_NAME"; exit; } - GUESS=mips-mips-riscos$UNAME_RELEASE - ;; - Motorola:PowerMAX_OS:*:*) - GUESS=powerpc-motorola-powermax - ;; - Motorola:*:4.3:PL8-*) - GUESS=powerpc-harris-powermax - ;; - Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - GUESS=powerpc-harris-powermax - ;; - Night_Hawk:Power_UNIX:*:*) - GUESS=powerpc-harris-powerunix - ;; - m88k:CX/UX:7*:*) - GUESS=m88k-harris-cxux7 - ;; - m88k:*:4*:R4*) - GUESS=m88k-motorola-sysv4 - ;; - m88k:*:3*:R3*) - GUESS=m88k-motorola-sysv3 - ;; - AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` - if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 - then - if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ - test "$TARGET_BINARY_INTERFACE"x = x - then - GUESS=m88k-dg-dgux$UNAME_RELEASE - else - GUESS=m88k-dg-dguxbcs$UNAME_RELEASE - fi - else - GUESS=i586-dg-dgux$UNAME_RELEASE - fi - ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - GUESS=m88k-dolphin-sysv3 - ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - GUESS=m88k-motorola-sysv3 - ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - GUESS=m88k-tektronix-sysv3 - ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - GUESS=m68k-tektronix-bsd - ;; - *:IRIX*:*:*) - IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'` - GUESS=mips-sgi-irix$IRIX_REL - ;; - ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id - ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i*86:AIX:*:*) - GUESS=i386-ibm-aix - ;; - ia64:AIX:*:*) - if test -x /usr/bin/oslevel ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=$UNAME_VERSION.$UNAME_RELEASE - fi - GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV - ;; - *:AIX:2:3) - if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - 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 - if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` - then - GUESS=$SYSTEM_NAME - else - GUESS=rs6000-ibm-aix3.2.5 - fi - elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - GUESS=rs6000-ibm-aix3.2.4 - else - GUESS=rs6000-ibm-aix3.2 - fi - ;; - *:AIX:*:[4567]) - 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 test -x /usr/bin/lslpp ; then - IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \ - awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` - else - IBM_REV=$UNAME_VERSION.$UNAME_RELEASE - fi - GUESS=$IBM_ARCH-ibm-aix$IBM_REV - ;; - *:AIX:*:*) - GUESS=rs6000-ibm-aix - ;; - ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) - GUESS=romp-ibm-bsd4.4 - ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to - ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - GUESS=rs6000-bull-bosx - ;; - DPX/2?00:B.O.S.:*:*) - GUESS=m68k-bull-sysv3 - ;; - 9000/[34]??:4.3bsd:1.*:*) - GUESS=m68k-hp-bsd - ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - GUESS=m68k-hp-bsd4.4 - ;; - 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 test -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 test "$HP_ARCH" = ""; then - 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 -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` - test -z "$HP_ARCH" && HP_ARCH=hppa - fi ;; - esac - if test "$HP_ARCH" = hppa2.0w - then - set_cc_for_build - - # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating - # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler - # generating 64-bit code. GNU and HP use different nomenclature: - # - # $ CC_FOR_BUILD=cc ./config.guess - # => hppa2.0w-hp-hpux11.23 - # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess - # => hppa64-hp-hpux11.23 - - if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | - grep -q __LP64__ - then - HP_ARCH=hppa2.0w - else - HP_ARCH=hppa64 - fi - fi - GUESS=$HP_ARCH-hp-hpux$HPUX_REV - ;; - ia64:HP-UX:*:*) - HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` - GUESS=ia64-hp-hpux$HPUX_REV - ;; - 3050*:HI-UX:*:*) - 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 -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && - { echo "$SYSTEM_NAME"; exit; } - GUESS=unknown-hitachi-hiuxwe2 - ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) - GUESS=hppa1.1-hp-bsd - ;; - 9000/8??:4.3bsd:*:*) - GUESS=hppa1.0-hp-bsd - ;; - *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - GUESS=hppa1.0-hp-mpeix - ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) - GUESS=hppa1.1-hp-osf - ;; - hp8??:OSF1:*:*) - GUESS=hppa1.0-hp-osf - ;; - i*86:OSF1:*:*) - if test -x /usr/sbin/sysversion ; then - GUESS=$UNAME_MACHINE-unknown-osf1mk - else - GUESS=$UNAME_MACHINE-unknown-osf1 - fi - ;; - parisc*:Lites*:*:*) - GUESS=hppa1.1-hp-lites - ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - GUESS=c1-convex-bsd - ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - GUESS=c34-convex-bsd - ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - GUESS=c38-convex-bsd - ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - GUESS=c4-convex-bsd - ;; - CRAY*Y-MP:*:*:*) - CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` - GUESS=ymp-cray-unicos$CRAY_REL - ;; - 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 ;; - CRAY*TS:*:*:*) - CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` - GUESS=t90-cray-unicos$CRAY_REL - ;; - CRAY*T3E:*:*:*) - CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` - GUESS=alphaev5-cray-unicosmk$CRAY_REL - ;; - CRAY*SV1:*:*:*) - CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` - GUESS=sv1-cray-unicos$CRAY_REL - ;; - *:UNICOS/mp:*:*) - CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` - GUESS=craynv-cray-unicosmp$CRAY_REL - ;; - 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/ /_/'` - GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} - ;; - 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` - FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` - GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} - ;; - i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE - ;; - sparc*:BSD/OS:*:*) - GUESS=sparc-unknown-bsdi$UNAME_RELEASE - ;; - *:BSD/OS:*:*) - GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE - ;; - arm:FreeBSD:*:*) - UNAME_PROCESSOR=`uname -p` - set_cc_for_build - if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_PCS_VFP - then - FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` - GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi - else - FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` - GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf - fi - ;; - *:FreeBSD:*:*) - UNAME_PROCESSOR=`/usr/bin/uname -p` - case $UNAME_PROCESSOR in - amd64) - UNAME_PROCESSOR=x86_64 ;; - i386) - UNAME_PROCESSOR=i586 ;; - esac - FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` - GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL - ;; - i*:CYGWIN*:*) - GUESS=$UNAME_MACHINE-pc-cygwin - ;; - *:MINGW64*:*) - GUESS=$UNAME_MACHINE-pc-mingw64 - ;; - *:MINGW*:*) - GUESS=$UNAME_MACHINE-pc-mingw32 - ;; - *:MSYS*:*) - GUESS=$UNAME_MACHINE-pc-msys - ;; - i*:PW*:*) - GUESS=$UNAME_MACHINE-pc-pw32 - ;; - *:SerenityOS:*:*) - GUESS=$UNAME_MACHINE-pc-serenity - ;; - *:Interix*:*) - case $UNAME_MACHINE in - x86) - GUESS=i586-pc-interix$UNAME_RELEASE - ;; - authenticamd | genuineintel | EM64T) - GUESS=x86_64-unknown-interix$UNAME_RELEASE - ;; - IA64) - GUESS=ia64-unknown-interix$UNAME_RELEASE - ;; - esac ;; - i*:UWIN*:*) - GUESS=$UNAME_MACHINE-pc-uwin - ;; - amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - GUESS=x86_64-pc-cygwin - ;; - prep*:SunOS:5.*:*) - SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` - GUESS=powerpcle-unknown-solaris2$SUN_REL - ;; - *:GNU:*:*) - # the GNU system - GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'` - GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'` - GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL - ;; - *:GNU/*:*:*) - # other systems with GNU libc and userland - GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` - GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` - GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC - ;; - *:Minix:*:*) - GUESS=$UNAME_MACHINE-unknown-minix - ;; - aarch64:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; - aarch64_be:Linux:*:*) - UNAME_MACHINE=aarch64_be - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; - alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` 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 -q ld.so.1 - if test "$?" = 0 ; then LIBC=gnulibc1 ; fi - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; - arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; - arm*:Linux:*:*) - set_cc_for_build - if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_EABI__ - then - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - else - if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_PCS_VFP - then - GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi - else - GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf - fi - fi - ;; - avr32*:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; - cris:Linux:*:*) - GUESS=$UNAME_MACHINE-axis-linux-$LIBC - ;; - crisv32:Linux:*:*) - GUESS=$UNAME_MACHINE-axis-linux-$LIBC - ;; - e2k:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; - frv:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; - hexagon:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; - i*86:Linux:*:*) - GUESS=$UNAME_MACHINE-pc-linux-$LIBC - ;; - ia64:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; - k1om:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; - loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; - m32r*:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; - m68*:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; - mips:Linux:*:* | mips64:Linux:*:*) - set_cc_for_build - IS_GLIBC=0 - test x"${LIBC}" = xgnu && IS_GLIBC=1 - sed 's/^ //' << EOF > "$dummy.c" - #undef CPU - #undef mips - #undef mipsel - #undef mips64 - #undef mips64el - #if ${IS_GLIBC} && defined(_ABI64) - LIBCABI=gnuabi64 - #else - #if ${IS_GLIBC} && defined(_ABIN32) - LIBCABI=gnuabin32 - #else - LIBCABI=${LIBC} - #endif - #endif - - #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 - CPU=mipsisa64r6 - #else - #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 - CPU=mipsisa32r6 - #else - #if defined(__mips64) - CPU=mips64 - #else - CPU=mips - #endif - #endif - #endif - - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - MIPS_ENDIAN=el - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - MIPS_ENDIAN= - #else - MIPS_ENDIAN= - #endif - #endif -EOF - cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'` - eval "$cc_set_vars" - test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } - ;; - mips64el:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; - openrisc*:Linux:*:*) - GUESS=or1k-unknown-linux-$LIBC - ;; - or32:Linux:*:* | or1k*:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; - padre:Linux:*:*) - GUESS=sparc-unknown-linux-$LIBC - ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - GUESS=hppa64-unknown-linux-$LIBC - ;; - parisc:Linux:*:* | hppa:Linux:*:*) - # Look for CPU level - case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;; - PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; - *) GUESS=hppa-unknown-linux-$LIBC ;; - esac - ;; - ppc64:Linux:*:*) - GUESS=powerpc64-unknown-linux-$LIBC - ;; - ppc:Linux:*:*) - GUESS=powerpc-unknown-linux-$LIBC - ;; - ppc64le:Linux:*:*) - GUESS=powerpc64le-unknown-linux-$LIBC - ;; - ppcle:Linux:*:*) - GUESS=powerpcle-unknown-linux-$LIBC - ;; - riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; - s390:Linux:*:* | s390x:Linux:*:*) - GUESS=$UNAME_MACHINE-ibm-linux-$LIBC - ;; - sh64*:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; - sh*:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; - sparc:Linux:*:* | sparc64:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; - tile*:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; - vax:Linux:*:*) - GUESS=$UNAME_MACHINE-dec-linux-$LIBC - ;; - x86_64:Linux:*:*) - set_cc_for_build - LIBCABI=$LIBC - if test "$CC_FOR_BUILD" != no_compiler_found; then - if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_X32 >/dev/null - then - LIBCABI=${LIBC}x32 - fi - fi - GUESS=$UNAME_MACHINE-pc-linux-$LIBCABI - ;; - xtensa*:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC - ;; - 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. - GUESS=i386-sequent-sysv4 - ;; - 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. - GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION - ;; - i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility - # is probably installed. - GUESS=$UNAME_MACHINE-pc-os2-emx - ;; - i*86:XTS-300:*:STOP) - GUESS=$UNAME_MACHINE-unknown-stop - ;; - i*86:atheos:*:*) - GUESS=$UNAME_MACHINE-unknown-atheos - ;; - i*86:syllable:*:*) - GUESS=$UNAME_MACHINE-pc-syllable - ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - GUESS=i386-unknown-lynxos$UNAME_RELEASE - ;; - i*86:*DOS:*:*) - GUESS=$UNAME_MACHINE-pc-msdosdjgpp - ;; - i*86:*:4.*:*) - UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` - if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL - else - GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL - fi - ;; - i*86:*:5:[678]*) - # UnixWare 7.x, OpenUNIX and OpenServer 6. - case `/bin/uname -X | grep "^Machine"` in - *486*) UNAME_MACHINE=i486 ;; - *Pentium) UNAME_MACHINE=i586 ;; - *Pent*|*Celeron) UNAME_MACHINE=i686 ;; - esac - GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} - ;; - 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|grep Release|sed -e 's/.*= //')` - (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ - && UNAME_MACHINE=i586 - (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ - && UNAME_MACHINE=i686 - (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ - && UNAME_MACHINE=i686 - GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL - else - GUESS=$UNAME_MACHINE-pc-sysv32 - fi - ;; - 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 i586. - # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configure will decide that - # this is a cross-build. - GUESS=i586-pc-msdosdjgpp - ;; - Intel:Mach:3*:*) - GUESS=i386-pc-mach3 - ;; - paragon:*:*:*) - GUESS=i860-intel-osf1 - ;; - i860:*:4.*:*) # i860-SVR4 - if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 - else # Add other i860-SVR4 vendors below as they are discovered. - GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 - fi - ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - GUESS=m68010-convergent-sysv - ;; - mc68k:UNIX:SYSTEM5:3.51m) - GUESS=m68k-convergent-sysv - ;; - M680?0:D-NIX:5.3:*) - GUESS=m68k-diab-dnix - ;; - M68*:*:R3V[5678]*:*) - test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; - 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*: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; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4; exit; } ;; - NCR*:*:4.2:* | MPRAS*:*:4.2:*) - OS_REL='.3' - 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; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } - /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ - && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; - m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - GUESS=m68k-unknown-lynxos$UNAME_RELEASE - ;; - mc68030:UNIX_System_V:4.*:*) - GUESS=m68k-atari-sysv4 - ;; - TSUNAMI:LynxOS:2.*:*) - GUESS=sparc-unknown-lynxos$UNAME_RELEASE - ;; - rs6000:LynxOS:2.*:*) - GUESS=rs6000-unknown-lynxos$UNAME_RELEASE - ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - GUESS=powerpc-unknown-lynxos$UNAME_RELEASE - ;; - SM[BE]S:UNIX_SV:*:*) - GUESS=mips-dde-sysv$UNAME_RELEASE - ;; - RM*:ReliantUNIX-*:*:*) - GUESS=mips-sni-sysv4 - ;; - RM*:SINIX-*:*:*) - GUESS=mips-sni-sysv4 - ;; - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` - GUESS=$UNAME_MACHINE-sni-sysv4 - else - GUESS=ns32k-sni-sysv - fi - ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - GUESS=i586-unisys-sysv4 - ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes . - # How about differentiating between stratus architectures? -djm - GUESS=hppa1.1-stratus-sysv4 - ;; - *:*:*:FTX*) - # From seanf@swdc.stratus.com. - GUESS=i860-stratus-sysv4 - ;; - i*86:VOS:*:*) - # From Paul.Green@stratus.com. - GUESS=$UNAME_MACHINE-stratus-vos - ;; - *:VOS:*:*) - # From Paul.Green@stratus.com. - GUESS=hppa1.1-stratus-vos - ;; - mc68*:A/UX:*:*) - GUESS=m68k-apple-aux$UNAME_RELEASE - ;; - news*:NEWS-OS:6*:*) - GUESS=mips-sony-newsos6 - ;; - R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if test -d /usr/nec; then - GUESS=mips-nec-sysv$UNAME_RELEASE - else - GUESS=mips-unknown-sysv$UNAME_RELEASE - fi - ;; - BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - GUESS=powerpc-be-beos - ;; - BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - GUESS=powerpc-apple-beos - ;; - BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - GUESS=i586-pc-beos - ;; - BePC:Haiku:*:*) # Haiku running on Intel PC compatible. - GUESS=i586-pc-haiku - ;; - x86_64:Haiku:*:*) - GUESS=x86_64-unknown-haiku - ;; - SX-4:SUPER-UX:*:*) - GUESS=sx4-nec-superux$UNAME_RELEASE - ;; - SX-5:SUPER-UX:*:*) - GUESS=sx5-nec-superux$UNAME_RELEASE - ;; - SX-6:SUPER-UX:*:*) - GUESS=sx6-nec-superux$UNAME_RELEASE - ;; - SX-7:SUPER-UX:*:*) - GUESS=sx7-nec-superux$UNAME_RELEASE - ;; - SX-8:SUPER-UX:*:*) - GUESS=sx8-nec-superux$UNAME_RELEASE - ;; - SX-8R:SUPER-UX:*:*) - GUESS=sx8r-nec-superux$UNAME_RELEASE - ;; - SX-ACE:SUPER-UX:*:*) - GUESS=sxace-nec-superux$UNAME_RELEASE - ;; - Power*:Rhapsody:*:*) - GUESS=powerpc-apple-rhapsody$UNAME_RELEASE - ;; - *:Rhapsody:*:*) - GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE - ;; - arm64:Darwin:*:*) - GUESS=aarch64-apple-darwin$UNAME_RELEASE - ;; - *:Darwin:*:*) - UNAME_PROCESSOR=`uname -p` - case $UNAME_PROCESSOR in - unknown) UNAME_PROCESSOR=powerpc ;; - esac - if command -v xcode-select > /dev/null 2> /dev/null && \ - ! xcode-select --print-path > /dev/null 2> /dev/null ; then - # Avoid executing cc if there is no toolchain installed as - # cc will be a stub that puts up a graphical alert - # prompting the user to install developer tools. - CC_FOR_BUILD=no_compiler_found - else - set_cc_for_build - fi - if test "$CC_FOR_BUILD" != no_compiler_found; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - case $UNAME_PROCESSOR in - i386) UNAME_PROCESSOR=x86_64 ;; - powerpc) UNAME_PROCESSOR=powerpc64 ;; - esac - fi - # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc - if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_PPC >/dev/null - then - UNAME_PROCESSOR=powerpc - fi - elif test "$UNAME_PROCESSOR" = i386 ; then - # uname -m returns i386 or x86_64 - UNAME_PROCESSOR=$UNAME_MACHINE - fi - GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE - ;; - *:procnto*:*:* | *:QNX:[0123456789]*:*) - UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = x86; then - UNAME_PROCESSOR=i386 - UNAME_MACHINE=pc - fi - GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE - ;; - *:QNX:*:4*) - GUESS=i386-pc-qnx - ;; - NEO-*:NONSTOP_KERNEL:*:*) - GUESS=neo-tandem-nsk$UNAME_RELEASE - ;; - NSE-*:NONSTOP_KERNEL:*:*) - GUESS=nse-tandem-nsk$UNAME_RELEASE - ;; - NSR-*:NONSTOP_KERNEL:*:*) - GUESS=nsr-tandem-nsk$UNAME_RELEASE - ;; - NSV-*:NONSTOP_KERNEL:*:*) - GUESS=nsv-tandem-nsk$UNAME_RELEASE - ;; - NSX-*:NONSTOP_KERNEL:*:*) - GUESS=nsx-tandem-nsk$UNAME_RELEASE - ;; - *:NonStop-UX:*:*) - GUESS=mips-compaq-nonstopux - ;; - BS2000:POSIX*:*:*) - GUESS=bs2000-siemens-sysv - ;; - DS/*:UNIX_System_V:*:*) - GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE - ;; - *: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 - elif test "x${cputype-}" != x; then - UNAME_MACHINE=$cputype - fi - GUESS=$UNAME_MACHINE-unknown-plan9 - ;; - *:TOPS-10:*:*) - GUESS=pdp10-unknown-tops10 - ;; - *:TENEX:*:*) - GUESS=pdp10-unknown-tenex - ;; - KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - GUESS=pdp10-dec-tops20 - ;; - XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - GUESS=pdp10-xkl-tops20 - ;; - *:TOPS-20:*:*) - GUESS=pdp10-unknown-tops20 - ;; - *:ITS:*:*) - GUESS=pdp10-unknown-its - ;; - SEI:*:*:SEIUX) - GUESS=mips-sei-seiux$UNAME_RELEASE - ;; - *:DragonFly:*:*) - DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` - GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL - ;; - *:*VMS:*:*) - UNAME_MACHINE=`(uname -p) 2>/dev/null` - case $UNAME_MACHINE in - A*) GUESS=alpha-dec-vms ;; - I*) GUESS=ia64-dec-vms ;; - V*) GUESS=vax-dec-vms ;; - esac ;; - *:XENIX:*:SysV) - GUESS=i386-pc-xenix - ;; - i*86:skyos:*:*) - SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` - GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL - ;; - i*86:rdos:*:*) - GUESS=$UNAME_MACHINE-pc-rdos - ;; - i*86:Fiwix:*:*) - GUESS=$UNAME_MACHINE-pc-fiwix - ;; - *:AROS:*:*) - GUESS=$UNAME_MACHINE-unknown-aros - ;; - x86_64:VMkernel:*:*) - GUESS=$UNAME_MACHINE-unknown-esx - ;; - amd64:Isilon\ OneFS:*:*) - GUESS=x86_64-unknown-onefs - ;; - *:Unleashed:*:*) - GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE - ;; -esac - -# Do we have a guess based on uname results? -if test "x$GUESS" != x; then - echo "$GUESS" - exit -fi - -# No uname command or uname output not recognized. -set_cc_for_build -cat > "$dummy.c" < -#include -#endif -#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) -#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) -#include -#if defined(_SIZE_T_) || defined(SIGLOST) -#include -#endif -#endif -#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 (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 -#if defined(_SIZE_T_) || defined(SIGLOST) - struct utsname un; - uname (&un); - printf ("vax-dec-ultrix%s\n", un.release); exit (0); -#else - printf ("vax-dec-ultrix\n"); exit (0); -#endif -#endif -#endif -#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) -#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) -#if defined(_SIZE_T_) || defined(SIGLOST) - struct utsname *un; - uname (&un); - printf ("mips-dec-ultrix%s\n", un.release); exit (0); -#else - printf ("mips-dec-ultrix\n"); exit (0); -#endif -#endif -#endif - -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif - - exit (1); -} -EOF - -$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` && - { echo "$SYSTEM_NAME"; exit; } - -# Apollos put the system type in the environment. -test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } - -echo "$0: unable to guess system type" >&2 - -case $UNAME_MACHINE:$UNAME_SYSTEM in - mips:Linux | mips64:Linux) - # If we got here on MIPS GNU/Linux, output extra information. - cat >&2 <&2 <&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 -fi - -exit 1 - -# Local variables: -# eval: (add-hook 'before-save-hook 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/Engine/lib/curl/config.sub b/Engine/lib/curl/config.sub deleted file mode 100755 index dba16e84c..000000000 --- a/Engine/lib/curl/config.sub +++ /dev/null @@ -1,1890 +0,0 @@ -#! /bin/sh -# Configuration validation subroutine script. -# Copyright 1992-2022 Free Software Foundation, Inc. - -# shellcheck disable=SC2006,SC2268 # see below for rationale - -timestamp='2022-01-03' - -# 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 3 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, see . -# -# 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. This Exception is an additional permission under section 7 -# of the GNU General Public License, version 3 ("GPLv3"). - - -# Please send patches to . -# -# 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. - -# You can get the latest version of this script from: -# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub - -# 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. - -# The "shellcheck disable" line above the timestamp inhibits complaints -# about features and limitations of the classic Bourne shell that were -# superseded or lifted in POSIX. However, this script identifies a wide -# variety of pre-POSIX systems that do not have POSIX shells at all, and -# even some reasonably current systems (Solaris 10 as case-in-point) still -# have a pre-POSIX /bin/sh. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS - -Canonicalize a configuration name. - -Options: - -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 1992-2022 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 ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" >&2 - exit 1 ;; - - *local*) - # First pass through any local machine types. - echo "$1" - exit ;; - - * ) - 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 - -# Split fields of configuration type -# shellcheck disable=SC2162 -saved_IFS=$IFS -IFS="-" read field1 field2 field3 field4 <&2 - exit 1 - ;; - *-*-*-*) - basic_machine=$field1-$field2 - basic_os=$field3-$field4 - ;; - *-*-*) - # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two - # parts - maybe_os=$field2-$field3 - case $maybe_os in - nto-qnx* | linux-* | uclinux-uclibc* \ - | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ - | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ - | storm-chaos* | os2-emx* | rtmk-nova*) - basic_machine=$field1 - basic_os=$maybe_os - ;; - android-linux) - basic_machine=$field1-unknown - basic_os=linux-android - ;; - *) - basic_machine=$field1-$field2 - basic_os=$field3 - ;; - esac - ;; - *-*) - # A lone config we happen to match not fitting any pattern - case $field1-$field2 in - decstation-3100) - basic_machine=mips-dec - basic_os= - ;; - *-*) - # Second component is usually, but not always the OS - case $field2 in - # Prevent following clause from handling this valid os - sun*os*) - basic_machine=$field1 - basic_os=$field2 - ;; - zephyr*) - basic_machine=$field1-unknown - basic_os=$field2 - ;; - # Manufacturers - dec* | mips* | sequent* | encore* | pc533* | 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 | knuth | cray \ - | microblaze* | sim | cisco \ - | oki | wec | wrs | winbond) - basic_machine=$field1-$field2 - basic_os= - ;; - *) - basic_machine=$field1 - basic_os=$field2 - ;; - esac - ;; - esac - ;; - *) - # Convert single-component short-hands not valid as part of - # multi-component configurations. - case $field1 in - 386bsd) - basic_machine=i386-pc - basic_os=bsd - ;; - a29khif) - basic_machine=a29k-amd - basic_os=udi - ;; - adobe68k) - basic_machine=m68010-adobe - basic_os=scout - ;; - alliant) - basic_machine=fx80-alliant - basic_os= - ;; - altos | altos3068) - basic_machine=m68k-altos - basic_os= - ;; - am29k) - basic_machine=a29k-none - basic_os=bsd - ;; - amdahl) - basic_machine=580-amdahl - basic_os=sysv - ;; - amiga) - basic_machine=m68k-unknown - basic_os= - ;; - amigaos | amigados) - basic_machine=m68k-unknown - basic_os=amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown - basic_os=sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - basic_os=sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - basic_os=bsd - ;; - aros) - basic_machine=i386-pc - basic_os=aros - ;; - aux) - basic_machine=m68k-apple - basic_os=aux - ;; - balance) - basic_machine=ns32k-sequent - basic_os=dynix - ;; - blackfin) - basic_machine=bfin-unknown - basic_os=linux - ;; - cegcc) - basic_machine=arm-unknown - basic_os=cegcc - ;; - convex-c1) - basic_machine=c1-convex - basic_os=bsd - ;; - convex-c2) - basic_machine=c2-convex - basic_os=bsd - ;; - convex-c32) - basic_machine=c32-convex - basic_os=bsd - ;; - convex-c34) - basic_machine=c34-convex - basic_os=bsd - ;; - convex-c38) - basic_machine=c38-convex - basic_os=bsd - ;; - cray) - basic_machine=j90-cray - basic_os=unicos - ;; - crds | unos) - basic_machine=m68k-crds - basic_os= - ;; - da30) - basic_machine=m68k-da30 - basic_os= - ;; - decstation | pmax | pmin | dec3100 | decstatn) - basic_machine=mips-dec - basic_os= - ;; - delta88) - basic_machine=m88k-motorola - basic_os=sysv3 - ;; - dicos) - basic_machine=i686-pc - basic_os=dicos - ;; - djgpp) - basic_machine=i586-pc - basic_os=msdosdjgpp - ;; - ebmon29k) - basic_machine=a29k-amd - basic_os=ebmon - ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - basic_os=ose - ;; - gmicro) - basic_machine=tron-gmicro - basic_os=sysv - ;; - go32) - basic_machine=i386-pc - basic_os=go32 - ;; - h8300hms) - basic_machine=h8300-hitachi - basic_os=hms - ;; - h8300xray) - basic_machine=h8300-hitachi - basic_os=xray - ;; - h8500hms) - basic_machine=h8500-hitachi - basic_os=hms - ;; - harris) - basic_machine=m88k-harris - basic_os=sysv3 - ;; - hp300 | hp300hpux) - basic_machine=m68k-hp - basic_os=hpux - ;; - hp300bsd) - basic_machine=m68k-hp - basic_os=bsd - ;; - hppaosf) - basic_machine=hppa1.1-hp - basic_os=osf - ;; - hppro) - basic_machine=hppa1.1-hp - basic_os=proelf - ;; - i386mach) - basic_machine=i386-mach - basic_os=mach - ;; - isi68 | isi) - basic_machine=m68k-isi - basic_os=sysv - ;; - m68knommu) - basic_machine=m68k-unknown - basic_os=linux - ;; - magnum | m3230) - basic_machine=mips-mips - basic_os=sysv - ;; - merlin) - basic_machine=ns32k-utek - basic_os=sysv - ;; - mingw64) - basic_machine=x86_64-pc - basic_os=mingw64 - ;; - mingw32) - basic_machine=i686-pc - basic_os=mingw32 - ;; - mingw32ce) - basic_machine=arm-unknown - basic_os=mingw32ce - ;; - monitor) - basic_machine=m68k-rom68k - basic_os=coff - ;; - morphos) - basic_machine=powerpc-unknown - basic_os=morphos - ;; - moxiebox) - basic_machine=moxie-unknown - basic_os=moxiebox - ;; - msdos) - basic_machine=i386-pc - basic_os=msdos - ;; - msys) - basic_machine=i686-pc - basic_os=msys - ;; - mvs) - basic_machine=i370-ibm - basic_os=mvs - ;; - nacl) - basic_machine=le32-unknown - basic_os=nacl - ;; - ncr3000) - basic_machine=i486-ncr - basic_os=sysv4 - ;; - netbsd386) - basic_machine=i386-pc - basic_os=netbsd - ;; - netwinder) - basic_machine=armv4l-rebel - basic_os=linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - basic_os=newsos - ;; - news1000) - basic_machine=m68030-sony - basic_os=newsos - ;; - necv70) - basic_machine=v70-nec - basic_os=sysv - ;; - nh3000) - basic_machine=m68k-harris - basic_os=cxux - ;; - nh[45]000) - basic_machine=m88k-harris - basic_os=cxux - ;; - nindy960) - basic_machine=i960-intel - basic_os=nindy - ;; - mon960) - basic_machine=i960-intel - basic_os=mon960 - ;; - nonstopux) - basic_machine=mips-compaq - basic_os=nonstopux - ;; - os400) - basic_machine=powerpc-ibm - basic_os=os400 - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - basic_os=ose - ;; - os68k) - basic_machine=m68k-none - basic_os=os68k - ;; - paragon) - basic_machine=i860-intel - basic_os=osf - ;; - parisc) - basic_machine=hppa-unknown - basic_os=linux - ;; - psp) - basic_machine=mipsallegrexel-sony - basic_os=psp - ;; - pw32) - basic_machine=i586-unknown - basic_os=pw32 - ;; - rdos | rdos64) - basic_machine=x86_64-pc - basic_os=rdos - ;; - rdos32) - basic_machine=i386-pc - basic_os=rdos - ;; - rom68k) - basic_machine=m68k-rom68k - basic_os=coff - ;; - sa29200) - basic_machine=a29k-amd - basic_os=udi - ;; - sei) - basic_machine=mips-sei - basic_os=seiux - ;; - sequent) - basic_machine=i386-sequent - basic_os= - ;; - sps7) - basic_machine=m68k-bull - basic_os=sysv2 - ;; - st2000) - basic_machine=m68k-tandem - basic_os= - ;; - stratus) - basic_machine=i860-stratus - basic_os=sysv4 - ;; - sun2) - basic_machine=m68000-sun - basic_os= - ;; - sun2os3) - basic_machine=m68000-sun - basic_os=sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - basic_os=sunos4 - ;; - sun3) - basic_machine=m68k-sun - basic_os= - ;; - sun3os3) - basic_machine=m68k-sun - basic_os=sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - basic_os=sunos4 - ;; - sun4) - basic_machine=sparc-sun - basic_os= - ;; - sun4os3) - basic_machine=sparc-sun - basic_os=sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - basic_os=sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - basic_os=solaris2 - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - basic_os= - ;; - sv1) - basic_machine=sv1-cray - basic_os=unicos - ;; - symmetry) - basic_machine=i386-sequent - basic_os=dynix - ;; - t3e) - basic_machine=alphaev5-cray - basic_os=unicos - ;; - t90) - basic_machine=t90-cray - basic_os=unicos - ;; - toad1) - basic_machine=pdp10-xkl - basic_os=tops20 - ;; - tpf) - basic_machine=s390x-ibm - basic_os=tpf - ;; - udi29k) - basic_machine=a29k-amd - basic_os=udi - ;; - ultra3) - basic_machine=a29k-nyu - basic_os=sym1 - ;; - v810 | necv810) - basic_machine=v810-nec - basic_os=none - ;; - vaxv) - basic_machine=vax-dec - basic_os=sysv - ;; - vms) - basic_machine=vax-dec - basic_os=vms - ;; - vsta) - basic_machine=i386-pc - basic_os=vsta - ;; - vxworks960) - basic_machine=i960-wrs - basic_os=vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - basic_os=vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - basic_os=vxworks - ;; - xbox) - basic_machine=i686-pc - basic_os=mingw32 - ;; - ymp) - basic_machine=ymp-cray - basic_os=unicos - ;; - *) - basic_machine=$1 - basic_os= - ;; - esac - ;; -esac - -# Decode 1-component or ad-hoc basic machines -case $basic_machine in - # 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) - cpu=hppa1.1 - vendor=winbond - ;; - op50n) - cpu=hppa1.1 - vendor=oki - ;; - op60c) - cpu=hppa1.1 - vendor=oki - ;; - ibm*) - cpu=i370 - vendor=ibm - ;; - orion105) - cpu=clipper - vendor=highlevel - ;; - mac | mpw | mac-mpw) - cpu=m68k - vendor=apple - ;; - pmac | pmac-mpw) - cpu=powerpc - vendor=apple - ;; - - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. - 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - cpu=m68000 - vendor=att - ;; - 3b*) - cpu=we32k - vendor=att - ;; - bluegene*) - cpu=powerpc - vendor=ibm - basic_os=cnk - ;; - decsystem10* | dec10*) - cpu=pdp10 - vendor=dec - basic_os=tops10 - ;; - decsystem20* | dec20*) - cpu=pdp10 - vendor=dec - basic_os=tops20 - ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - cpu=m68k - vendor=motorola - ;; - dpx2*) - cpu=m68k - vendor=bull - basic_os=sysv3 - ;; - encore | umax | mmax) - cpu=ns32k - vendor=encore - ;; - elxsi) - cpu=elxsi - vendor=elxsi - basic_os=${basic_os:-bsd} - ;; - fx2800) - cpu=i860 - vendor=alliant - ;; - genix) - cpu=ns32k - vendor=ns - ;; - h3050r* | hiux*) - cpu=hppa1.1 - vendor=hitachi - basic_os=hiuxwe2 - ;; - hp3k9[0-9][0-9] | hp9[0-9][0-9]) - cpu=hppa1.0 - vendor=hp - ;; - hp9k2[0-9][0-9] | hp9k31[0-9]) - cpu=m68000 - vendor=hp - ;; - hp9k3[2-9][0-9]) - cpu=m68k - vendor=hp - ;; - hp9k6[0-9][0-9] | hp6[0-9][0-9]) - cpu=hppa1.0 - vendor=hp - ;; - hp9k7[0-79][0-9] | hp7[0-79][0-9]) - cpu=hppa1.1 - vendor=hp - ;; - hp9k78[0-9] | hp78[0-9]) - # FIXME: really hppa2.0-hp - cpu=hppa1.1 - vendor=hp - ;; - hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) - # FIXME: really hppa2.0-hp - cpu=hppa1.1 - vendor=hp - ;; - hp9k8[0-9][13679] | hp8[0-9][13679]) - cpu=hppa1.1 - vendor=hp - ;; - hp9k8[0-9][0-9] | hp8[0-9][0-9]) - cpu=hppa1.0 - vendor=hp - ;; - i*86v32) - cpu=`echo "$1" | sed -e 's/86.*/86/'` - vendor=pc - basic_os=sysv32 - ;; - i*86v4*) - cpu=`echo "$1" | sed -e 's/86.*/86/'` - vendor=pc - basic_os=sysv4 - ;; - i*86v) - cpu=`echo "$1" | sed -e 's/86.*/86/'` - vendor=pc - basic_os=sysv - ;; - i*86sol2) - cpu=`echo "$1" | sed -e 's/86.*/86/'` - vendor=pc - basic_os=solaris2 - ;; - j90 | j90-cray) - cpu=j90 - vendor=cray - basic_os=${basic_os:-unicos} - ;; - iris | iris4d) - cpu=mips - vendor=sgi - case $basic_os in - irix*) - ;; - *) - basic_os=irix4 - ;; - esac - ;; - miniframe) - cpu=m68000 - vendor=convergent - ;; - *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) - cpu=m68k - vendor=atari - basic_os=mint - ;; - news-3600 | risc-news) - cpu=mips - vendor=sony - basic_os=newsos - ;; - next | m*-next) - cpu=m68k - vendor=next - case $basic_os in - openstep*) - ;; - nextstep*) - ;; - ns2*) - basic_os=nextstep2 - ;; - *) - basic_os=nextstep3 - ;; - esac - ;; - np1) - cpu=np1 - vendor=gould - ;; - op50n-* | op60c-*) - cpu=hppa1.1 - vendor=oki - basic_os=proelf - ;; - pa-hitachi) - cpu=hppa1.1 - vendor=hitachi - basic_os=hiuxwe2 - ;; - pbd) - cpu=sparc - vendor=tti - ;; - pbb) - cpu=m68k - vendor=tti - ;; - pc532) - cpu=ns32k - vendor=pc532 - ;; - pn) - cpu=pn - vendor=gould - ;; - power) - cpu=power - vendor=ibm - ;; - ps2) - cpu=i386 - vendor=ibm - ;; - rm[46]00) - cpu=mips - vendor=siemens - ;; - rtpc | rtpc-*) - cpu=romp - vendor=ibm - ;; - sde) - cpu=mipsisa32 - vendor=sde - basic_os=${basic_os:-elf} - ;; - simso-wrs) - cpu=sparclite - vendor=wrs - basic_os=vxworks - ;; - tower | tower-32) - cpu=m68k - vendor=ncr - ;; - vpp*|vx|vx-*) - cpu=f301 - vendor=fujitsu - ;; - w65) - cpu=w65 - vendor=wdc - ;; - w89k-*) - cpu=hppa1.1 - vendor=winbond - basic_os=proelf - ;; - none) - cpu=none - vendor=none - ;; - leon|leon[3-9]) - cpu=sparc - vendor=$basic_machine - ;; - leon-*|leon[3-9]-*) - cpu=sparc - vendor=`echo "$basic_machine" | sed 's/-.*//'` - ;; - - *-*) - # shellcheck disable=SC2162 - saved_IFS=$IFS - IFS="-" read cpu vendor <&2 - exit 1 - ;; - esac - ;; -esac - -# Here we canonicalize certain aliases for manufacturers. -case $vendor in - digital*) - vendor=dec - ;; - commodore*) - vendor=cbm - ;; - *) - ;; -esac - -# Decode manufacturer-specific aliases for certain operating systems. - -if test x$basic_os != x -then - -# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just -# set os. -case $basic_os in - gnu/linux*) - kernel=linux - os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` - ;; - os2-emx) - kernel=os2 - os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` - ;; - nto-qnx*) - kernel=nto - os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` - ;; - *-*) - # shellcheck disable=SC2162 - saved_IFS=$IFS - IFS="-" read kernel os <&2 - exit 1 - ;; -esac - -# As a final step for OS-related things, validate the OS-kernel combination -# (given a valid OS), if there is a kernel. -case $kernel-$os in - linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ - | linux-musl* | linux-relibc* | linux-uclibc* ) - ;; - uclinux-uclibc* ) - ;; - -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) - # These are just libc implementations, not actual OSes, and thus - # require a kernel. - echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 - exit 1 - ;; - kfreebsd*-gnu* | kopensolaris*-gnu*) - ;; - vxworks-simlinux | vxworks-simwindows | vxworks-spe) - ;; - nto-qnx*) - ;; - os2-emx) - ;; - *-eabi* | *-gnueabi*) - ;; - -*) - # Blank kernel with real OS is always fine. - ;; - *-*) - echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 - exit 1 - ;; -esac - -# Here we handle the case where we know the os, and the CPU type, but not the -# manufacturer. We pick the logical manufacturer. -case $vendor in - unknown) - case $cpu-$os in - *-riscix*) - vendor=acorn - ;; - *-sunos*) - vendor=sun - ;; - *-cnk* | *-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 - ;; - *-clix*) - vendor=intergraph - ;; - *-mvs* | *-opened*) - vendor=ibm - ;; - *-os400*) - vendor=ibm - ;; - s390-* | s390x-*) - vendor=ibm - ;; - *-ptx*) - vendor=sequent - ;; - *-tpf*) - vendor=ibm - ;; - *-vxsim* | *-vxworks* | *-windiss*) - 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 - ;; -esac - -echo "$cpu-$vendor-${kernel:+$kernel-}$os" -exit - -# Local variables: -# eval: (add-hook 'before-save-hook 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/Engine/lib/curl/configure b/Engine/lib/curl/configure deleted file mode 100755 index 20f594093..000000000 --- a/Engine/lib/curl/configure +++ /dev/null @@ -1,48117 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for curl -. -# -# Report bugs to . -# -# -# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, -# Inc. -# -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -# -# Copyright (c) 1998 - 2022 Daniel Stenberg, -# This configure script may be copied, distributed and modified under the -# terms of the curl license; see COPYING for more details - -## -------------------------------- ## -## XC_CONFIGURE_PREAMBLE ver: 1.0 ## -## -------------------------------- ## - -xc_configure_preamble_ver_major='1' -xc_configure_preamble_ver_minor='0' - -# -# Set IFS to space, tab and newline. -# - -xc_space=' ' -xc_tab=' ' -xc_newline=' -' -IFS="$xc_space$xc_tab$xc_newline" - -# -# Set internationalization behavior variables. -# - -LANG='C' -LC_ALL='C' -LANGUAGE='C' -export LANG -export LC_ALL -export LANGUAGE - -# -# Some useful variables. -# - -xc_msg_warn='configure: WARNING:' -xc_msg_abrt='Can not continue.' -xc_msg_err='configure: error:' - -# -# Verify that 'echo' command is available, otherwise abort. -# - -xc_tst_str='unknown' -(`echo "$xc_tst_str" >/dev/null 2>&1`) && xc_tst_str='success' -case "x$xc_tst_str" in # (( - xsuccess) - : - ;; - *) - # Try built-in echo, and fail. - echo "$xc_msg_err 'echo' command not found. $xc_msg_abrt" >&2 - exit 1 - ;; -esac - -# -# Verify that 'test' command is available, otherwise abort. -# - -xc_tst_str='unknown' -(`test -n "$xc_tst_str" >/dev/null 2>&1`) && xc_tst_str='success' -case "x$xc_tst_str" in # (( - xsuccess) - : - ;; - *) - echo "$xc_msg_err 'test' command not found. $xc_msg_abrt" >&2 - exit 1 - ;; -esac - -# -# Verify that 'PATH' variable is set, otherwise abort. -# - -xc_tst_str='unknown' -(`test -n "$PATH" >/dev/null 2>&1`) && xc_tst_str='success' -case "x$xc_tst_str" in # (( - xsuccess) - : - ;; - *) - echo "$xc_msg_err 'PATH' variable not set. $xc_msg_abrt" >&2 - exit 1 - ;; -esac - -# -# Verify that 'expr' command is available, otherwise abort. -# - -xc_tst_str='unknown' -xc_tst_str=`expr "$xc_tst_str" : '.*' 2>/dev/null` -case "x$xc_tst_str" in # (( - x7) - : - ;; - *) - echo "$xc_msg_err 'expr' command not found. $xc_msg_abrt" >&2 - exit 1 - ;; -esac - -# -# Verify that 'sed' utility is found within 'PATH', otherwise abort. -# - -xc_tst_str='unknown' -xc_tst_str=`echo "$xc_tst_str" 2>/dev/null \ - | sed -e 's:unknown:success:' 2>/dev/null` -case "x$xc_tst_str" in # (( - xsuccess) - : - ;; - *) - echo "$xc_msg_err 'sed' utility not found in 'PATH'. $xc_msg_abrt" >&2 - exit 1 - ;; -esac - -# -# Verify that 'grep' utility is found within 'PATH', otherwise abort. -# - -xc_tst_str='unknown' -(`echo "$xc_tst_str" 2>/dev/null \ - | grep 'unknown' >/dev/null 2>&1`) && xc_tst_str='success' -case "x$xc_tst_str" in # (( - xsuccess) - : - ;; - *) - echo "$xc_msg_err 'grep' utility not found in 'PATH'. $xc_msg_abrt" >&2 - exit 1 - ;; -esac - -# -# Verify that 'tr' utility is found within 'PATH', otherwise abort. -# - -xc_tst_str="${xc_tab}98s7u6c5c4e3s2s10" -xc_tst_str=`echo "$xc_tst_str" 2>/dev/null \ - | tr -d "0123456789$xc_tab" 2>/dev/null` -case "x$xc_tst_str" in # (( - xsuccess) - : - ;; - *) - echo "$xc_msg_err 'tr' utility not found in 'PATH'. $xc_msg_abrt" >&2 - exit 1 - ;; -esac - -# -# Verify that 'wc' utility is found within 'PATH', otherwise abort. -# - -xc_tst_str='unknown unknown unknown unknown' -xc_tst_str=`echo "$xc_tst_str" 2>/dev/null \ - | wc -w 2>/dev/null | tr -d "$xc_space$xc_tab" 2>/dev/null` -case "x$xc_tst_str" in # (( - x4) - : - ;; - *) - echo "$xc_msg_err 'wc' utility not found in 'PATH'. $xc_msg_abrt" >&2 - exit 1 - ;; -esac - -# -# Verify that 'cat' utility is found within 'PATH', otherwise abort. -# - -xc_tst_str='unknown' -xc_tst_str=`cat <<_EOT 2>/dev/null \ - | wc -l 2>/dev/null | tr -d "$xc_space$xc_tab" 2>/dev/null -unknown -unknown -unknown -_EOT` -case "x$xc_tst_str" in # (( - x3) - : - ;; - *) - echo "$xc_msg_err 'cat' utility not found in 'PATH'. $xc_msg_abrt" >&2 - exit 1 - ;; -esac - -# -# Auto-detect and set 'PATH_SEPARATOR', unless it is already non-empty set. -# - -# Directory count in 'PATH' when using a colon separator. -xc_tst_dirs_col='x' -xc_tst_prev_IFS=$IFS; IFS=':' -for xc_tst_dir in $PATH; do - IFS=$xc_tst_prev_IFS - xc_tst_dirs_col="x$xc_tst_dirs_col" -done -IFS=$xc_tst_prev_IFS -xc_tst_dirs_col=`expr "$xc_tst_dirs_col" : '.*'` - -# Directory count in 'PATH' when using a semicolon separator. -xc_tst_dirs_sem='x' -xc_tst_prev_IFS=$IFS; IFS=';' -for xc_tst_dir in $PATH; do - IFS=$xc_tst_prev_IFS - xc_tst_dirs_sem="x$xc_tst_dirs_sem" -done -IFS=$xc_tst_prev_IFS -xc_tst_dirs_sem=`expr "$xc_tst_dirs_sem" : '.*'` - -if test $xc_tst_dirs_sem -eq $xc_tst_dirs_col; then - # When both counting methods give the same result we do not want to - # chose one over the other, and consider auto-detection not possible. - if test -z "$PATH_SEPARATOR"; then - # User should provide the correct 'PATH_SEPARATOR' definition. - # Until then, guess that it is colon! - echo "$xc_msg_warn path separator not determined, guessing colon" >&2 - PATH_SEPARATOR=':' - fi -else - # Separator with the greater directory count is the auto-detected one. - if test $xc_tst_dirs_sem -gt $xc_tst_dirs_col; then - xc_tst_auto_separator=';' - else - xc_tst_auto_separator=':' - fi - if test -z "$PATH_SEPARATOR"; then - # Simply use the auto-detected one when not already set. - PATH_SEPARATOR=$xc_tst_auto_separator - elif test "x$PATH_SEPARATOR" != "x$xc_tst_auto_separator"; then - echo "$xc_msg_warn 'PATH_SEPARATOR' does not match auto-detected one." >&2 - fi -fi -xc_PATH_SEPARATOR=$PATH_SEPARATOR - -xc_configure_preamble_result='yes' - - -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -as_nop=: -if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 -then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else $as_nop - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - - -# Reset variables that may have inherited troublesome values from -# the environment. - -# IFS needs to be set, to space, tab, and newline, in precisely that order. -# (If _AS_PATH_WALK were called with IFS unset, it would have the -# side effect of setting IFS to empty, thus disabling word splitting.) -# Quoting is to prevent editors from complaining about space-tab. -as_nl=' -' -export as_nl -IFS=" "" $as_nl" - -PS1='$ ' -PS2='> ' -PS4='+ ' - -# Ensure predictable behavior from utilities with locale-dependent output. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# We cannot yet rely on "unset" to work, but we need these variables -# to be unset--not just set to an empty or harmless value--now, to -# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct -# also avoids known problems related to "unset" and subshell syntax -# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). -for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH -do eval test \${$as_var+y} \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done - -# Ensure that fds 0, 1, and 2 are open. -if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi -if (exec 3>&2) ; then :; else exec 2>/dev/null; fi - - - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - test -r "$as_dir$0" && as_myself=$as_dir$0 && break - done -IFS=$as_save_IFS - - ;; -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 - printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - - -# Use a proper internal environment variable to ensure we don't fall - # into an infinite loop, continuously re-executing ourselves. - if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then - _as_can_reexec=no; export _as_can_reexec; - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 -exit 255 - fi - # We don't want this to propagate to other subprocesses. - { _as_can_reexec=; unset _as_can_reexec;} -if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="as_nop=: -if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 -then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else \$as_nop - case \`(set -o) 2>/dev/null\` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi -" - as_required="as_fn_return () { (exit \$1); } -as_fn_success () { as_fn_return 0; } -as_fn_failure () { as_fn_return 1; } -as_fn_ret_success () { return 0; } -as_fn_ret_failure () { return 1; } - -exitcode=0 -as_fn_success || { exitcode=1; echo as_fn_success failed.; } -as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } -as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } -as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ) -then : - -else \$as_nop - exitcode=1; echo positional parameters were not saved. -fi -test x\$exitcode = x0 || exit 1 -blah=\$(echo \$(echo blah)) -test x\"\$blah\" = xblah || exit 1 -test -x / || exit 1" - as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO - as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO - eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1 - - test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ - || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" - if (eval "$as_required") 2>/dev/null -then : - as_have_required=yes -else $as_nop - as_have_required=no -fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null -then : - -else $as_nop - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - as_found=: - case $as_dir in #( - /*) - for as_base in sh bash ksh sh5; do - # Try only shells that exist, to save several forks. - as_shell=$as_dir$as_base - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null -then : - CONFIG_SHELL=$as_shell as_have_required=yes - if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null -then : - break 2 -fi -fi - done;; - esac - as_found=false -done -IFS=$as_save_IFS -if $as_found -then : - -else $as_nop - if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null -then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi -fi - - - if test "x$CONFIG_SHELL" != x -then : - export CONFIG_SHELL - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 -exit 255 -fi - - if test x$as_have_required = xno -then : - printf "%s\n" "$0: This script requires a shell more modern than all" - printf "%s\n" "$0: the shells that I found on your system." - if test ${ZSH_VERSION+y} ; then - printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" - printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." - else - printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and a suitable curl -$0: mailing list: https://curl.se/mail/ about your system, -$0: including any error possibly output before this -$0: message. Then install a modern shell, or manually run -$0: the script under such a shell if you do have one." - fi - exit 1 -fi -fi -fi -SHELL=${CONFIG_SHELL-/bin/sh} -export SHELL -# Unset more variables known to interfere with behavior of common tools. -CLICOLOR_FORCE= GREP_OPTIONS= -unset CLICOLOR_FORCE GREP_OPTIONS - -## --------------------- ## -## M4sh Shell Functions. ## -## --------------------- ## -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit -# as_fn_nop -# --------- -# Do nothing but, unlike ":", preserve the value of $?. -as_fn_nop () -{ - return $? -} -as_nop=as_fn_nop - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null -then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else $as_nop - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null -then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else $as_nop - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - -# as_fn_nop -# --------- -# Do nothing but, unlike ":", preserve the value of $?. -as_fn_nop () -{ - return $? -} -as_nop=as_fn_nop - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - printf "%s\n" "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# 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 - - - as_lineno_1=$LINENO as_lineno_1a=$LINENO - as_lineno_2=$LINENO as_lineno_2a=$LINENO - eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && - test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { - # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - - # If we had to re-execute with $CONFIG_SHELL, we're ensured to have - # already done that, so ensure we don't try to do so again and fall - # in an infinite loop. This has already happened in practice. - _as_can_reexec=no; export _as_can_reexec - # 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 sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - - -# Determine whether it's possible to make 'echo' print without a newline. -# These variables are no longer used directly by Autoconf, but are AC_SUBSTed -# for compatibility with existing Makefiles. -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -# For backward compatibility with old third-party macros, we provide -# the shell variables $as_echo and $as_echo_n. New code should use -# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. -as_echo='printf %s\n' -as_echo_n='printf %s' - - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval 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="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - -SHELL=${CONFIG_SHELL-/bin/sh} - - -test -n "$DJDIR" || exec 7<&0 &1 - -# Name of the host. -# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIBOBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= - -# Identity of this package. -PACKAGE_NAME='curl' -PACKAGE_TARNAME='curl' -PACKAGE_VERSION='-' -PACKAGE_STRING='curl -' -PACKAGE_BUGREPORT='a suitable curl mailing list: https://curl.se/mail/' -PACKAGE_URL='' - -ac_unique_file="lib/urldata.h" -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#ifdef HAVE_STDIO_H -# include -#endif -#ifdef HAVE_STDLIB_H -# include -#endif -#ifdef HAVE_STRING_H -# include -#endif -#ifdef HAVE_INTTYPES_H -# include -#endif -#ifdef HAVE_STDINT_H -# include -#endif -#ifdef HAVE_STRINGS_H -# include -#endif -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif" - -ac_header_c_list= -ac_subst_vars='am__EXEEXT_FALSE -am__EXEEXT_TRUE -LTLIBOBJS -LIBOBJS -SSL_BACKENDS -SUPPORT_PROTOCOLS -SUPPORT_FEATURES -LIBCURL_NO_SHARED -ENABLE_STATIC -ENABLE_SHARED -CROSSCOMPILING_FALSE -CROSSCOMPILING_TRUE -BLANK_AT_MAKETIME -CURL_NETWORK_AND_TIME_LIBS -CURL_NETWORK_LIBS -LIBCURL_LIBS -CFLAG_CURL_SYMBOL_HIDING -DOING_CURL_SYMBOL_HIDING_FALSE -DOING_CURL_SYMBOL_HIDING_TRUE -USE_UNIX_SOCKETS -BUILD_LIBHOSTNAME_FALSE -BUILD_LIBHOSTNAME_TRUE -USE_ARES -USE_MANUAL_FALSE -USE_MANUAL_TRUE -MANOPT -NROFF -PERL -FISH_FUNCTIONS_DIR -ZSH_FUNCTIONS_DIR -USE_MSH3 -USE_QUICHE -USE_NGHTTP3 -USE_NGTCP2_CRYPTO_WOLFSSL -USE_NGTCP2_CRYPTO_GNUTLS -USE_NGTCP2_CRYPTO_OPENSSL -USE_NGTCP2 -USE_NGHTTP2 -IDN_ENABLED -CURL_PLIST_VERSION -CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_FALSE -CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_TRUE -CURL_LT_SHLIB_VERSIONED_FLAVOUR -USE_LIBRTMP -USE_WOLFSSH -USE_LIBSSH -USE_LIBSSH2 -USE_GSASL_FALSE -USE_GSASL_TRUE -USE_LIBPSL_FALSE -USE_LIBPSL_TRUE -CURL_CA_BUNDLE -CURL_WITH_MULTI_SSL -SSL_ENABLED -NSS_LIBS -USE_NSS -USE_RUSTLS -USE_BEARSSL -USE_WOLFSSL -USE_MBEDTLS -HAVE_GNUTLS_SRP -USE_GNUTLS -HAVE_OPENSSL_SRP -RANDOM_FILE -SSL_LIBS -USE_SECTRANSP -USE_WINDOWS_SSPI -USE_SCHANNEL -DEFAULT_SSL_BACKEND -BUILD_STUB_GSS_FALSE -BUILD_STUB_GSS_TRUE -IPV6_ENABLED -USE_OPENLDAP -HAVE_ZSTD -HAVE_BROTLI -ZLIB_LIBS -HAVE_LIBZ_FALSE -HAVE_LIBZ_TRUE -HAVE_LIBZ -HAVE_PROTO_BSDSOCKET_H -CURL_DISABLE_MQTT -CURL_DISABLE_GOPHER -CURL_DISABLE_SMTP -CURL_DISABLE_SMB -CURL_DISABLE_IMAP -CURL_DISABLE_POP3 -CURL_DISABLE_TFTP -CURL_DISABLE_TELNET -CURL_DISABLE_DICT -CURL_DISABLE_PROXY -USE_HYPER -PKGCONFIG -HAVE_LDAP_SSL -CURL_DISABLE_LDAPS -CURL_DISABLE_LDAP -CURL_DISABLE_FILE -CURL_DISABLE_FTP -CURL_DISABLE_RTSP -CURL_DISABLE_HTTP -USE_WIN32_CRYPTO -USE_WIN32_SMALL_FILES -USE_WIN32_LARGE_FILES -DOING_NATIVE_WINDOWS_FALSE -DOING_NATIVE_WINDOWS_TRUE -BUILD_UNITTESTS_FALSE -BUILD_UNITTESTS_TRUE -CURLDEBUG_FALSE -CURLDEBUG_TRUE -CURL_CFLAG_EXTRAS -USE_EXPLICIT_LIB_DEPS_FALSE -USE_EXPLICIT_LIB_DEPS_TRUE -REQUIRE_LIB_DEPS -CPPFLAG_CURL_STATICLIB -USE_CPPFLAG_CURL_STATICLIB_FALSE -USE_CPPFLAG_CURL_STATICLIB_TRUE -CURL_LT_SHLIB_USE_MIMPURE_TEXT_FALSE -CURL_LT_SHLIB_USE_MIMPURE_TEXT_TRUE -CURL_LT_SHLIB_USE_NO_UNDEFINED_FALSE -CURL_LT_SHLIB_USE_NO_UNDEFINED_TRUE -CURL_LT_SHLIB_USE_VERSION_INFO_FALSE -CURL_LT_SHLIB_USE_VERSION_INFO_TRUE -LT_SYS_LIBRARY_PATH -OTOOL64 -OTOOL -LIPO -NMEDIT -DSYMUTIL -MANIFEST_TOOL -RANLIB -ac_ct_AR -FILECMD -LN_S -NM -ac_ct_DUMPBIN -DUMPBIN -LD -FGREP -LIBTOOL -OBJDUMP -DLLTOOL -AS -AR_FLAGS -host_os -host_vendor -host_cpu -host -build_os -build_vendor -build_cpu -build -PKGADD_VENDOR -PKGADD_NAME -PKGADD_PKG -VERSIONNUM -CURLVERSION -CSCOPE -ETAGS -CTAGS -am__fastdepCC_FALSE -am__fastdepCC_TRUE -CCDEPMODE -am__nodep -AMDEPBACKSLASH -AMDEP_FALSE -AMDEP_TRUE -am__include -DEPDIR -am__untar -am__tar -AMTAR -am__leading_dot -SET_MAKE -AWK -mkdir_p -MKDIR_P -INSTALL_STRIP_PROGRAM -STRIP -install_sh -MAKEINFO -AUTOHEADER -AUTOMAKE -AUTOCONF -ACLOCAL -VERSION -PACKAGE -CYGPATH_W -am__isrc -LCOV -GCOV -CPP -OBJEXT -EXEEXT -ac_ct_CC -CPPFLAGS -LDFLAGS -CFLAGS -CC -INSTALL_DATA -INSTALL_SCRIPT -INSTALL_PROGRAM -libext -AR -EGREP -GREP -SED -CONFIGURE_OPTIONS -AM_BACKSLASH -AM_DEFAULT_VERBOSITY -AM_DEFAULT_V -AM_V -MAINT -MAINTAINER_MODE_FALSE -MAINTAINER_MODE_TRUE -target_alias -host_alias -build_alias -LIBS -ECHO_T -ECHO_N -ECHO_C -DEFS -mandir -localedir -libdir -psdir -pdfdir -dvidir -htmldir -infodir -docdir -oldincludedir -includedir -runstatedir -localstatedir -sharedstatedir -sysconfdir -datadir -datarootdir -libexecdir -sbindir -bindir -program_transform_name -prefix -exec_prefix -PACKAGE_URL -PACKAGE_BUGREPORT -PACKAGE_STRING -PACKAGE_VERSION -PACKAGE_TARNAME -PACKAGE_NAME -SHELL -PATH_SEPARATOR -am__quote' -ac_subst_files='' -ac_user_opts=' -enable_option_checking -enable_maintainer_mode -enable_silent_rules -enable_debug -enable_optimize -enable_warnings -enable_werror -enable_curldebug -enable_symbol_hiding -enable_ares -enable_rt -enable_ech -enable_code_coverage -enable_dependency_tracking -with_schannel -with_secure_transport -with_amissl -with_ssl -with_openssl -with_gnutls -with_mbedtls -with_wolfssl -with_bearssl -with_rustls -with_nss_deprecated -with_nss -with_darwinssl -enable_largefile -enable_shared -enable_static -with_pic -enable_fast_install -with_aix_soname -with_gnu_ld -with_sysroot -enable_libtool_lock -enable_http -enable_ftp -enable_file -enable_ldap -enable_ldaps -with_hyper -enable_rtsp -enable_proxy -enable_dict -enable_telnet -enable_tftp -enable_pop3 -enable_imap -enable_smb -enable_smtp -enable_gopher -enable_mqtt -enable_manual -enable_libcurl_option -enable_libgcc -with_zlib -with_brotli -with_zstd -with_ldap_lib -with_lber_lib -enable_ipv6 -with_gssapi_includes -with_gssapi_libs -with_gssapi -with_default_ssl_backend -with_egd_socket -with_random -enable_openssl_auto_load_config -with_ca_bundle -with_ca_path -with_ca_fallback -with_libpsl -with_libgsasl -with_libmetalink -with_libssh2 -with_libssh -with_wolfssh -with_librtmp -enable_versioned_symbols -with_winidn -with_libidn2 -with_nghttp2 -with_ngtcp2 -with_nghttp3 -with_quiche -with_msh3 -with_zsh_functions_dir -with_fish_functions_dir -enable_threaded_resolver -enable_pthreads -enable_verbose -enable_sspi -enable_crypto_auth -enable_ntlm -enable_ntlm_wb -enable_tls_srp -enable_unix_sockets -enable_cookies -enable_socketpair -enable_http_auth -enable_doh -enable_mime -enable_dateparse -enable_netrc -enable_progress_meter -enable_dnsshuffle -enable_get_easy_options -enable_alt_svc -enable_headers_api -enable_hsts -' - ac_precious_vars='build_alias -host_alias -target_alias -CC -CFLAGS -LDFLAGS -LIBS -CPPFLAGS -CPP -LT_SYS_LIBRARY_PATH' - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -ac_unrecognized_opts= -ac_unrecognized_sep= -# 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. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -runstatedir='${localstatedir}/run' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -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 - - case $ac_option in - *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *=) ac_optarg= ;; - *) ac_optarg=yes ;; - esac - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -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) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: \`$ac_useropt'" - ac_useropt_orig=$ac_useropt - ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: \`$ac_useropt'" - ac_useropt_orig=$ac_useropt - ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=\$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 ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$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 ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - 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 ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -runstatedir | --runstatedir | --runstatedi | --runstated \ - | --runstate | --runstat | --runsta | --runst | --runs \ - | --run | --ru | --r) - ac_prev=runstatedir ;; - -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ - | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ - | --run=* | --ru=* | --r=*) - runstatedir=$ac_optarg ;; - - -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_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: \`$ac_useropt'" - ac_useropt_orig=$ac_useropt - ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=\$ac_optarg ;; - - -without-* | --without-*) - ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: \`$ac_useropt'" - ac_useropt_orig=$ac_useropt - ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=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 ;; - - -*) as_fn_error $? "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information" - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - case $ac_envvar in #( - '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; - esac - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - printf "%s\n" "$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'` - as_fn_error $? "missing argument to $ac_option" -fi - -if test -n "$ac_unrecognized_opts"; then - case $enable_option_checking in - no) ;; - fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; - esac -fi - -# Check all directory arguments for consistency. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir runstatedir -do - eval ac_val=\$$ac_var - # Remove trailing slashes. - case $ac_val in - */ ) - ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` - eval $ac_var=\$ac_val;; - esac - # Be sure to have absolute directory names. - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" -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 - 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 - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - as_fn_error $? "working directory cannot be determined" -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - as_fn_error $? "pwd does not report name of working directory" - - -# 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 the parent directory. - ac_confdir=`$as_dirname -- "$as_myself" || -$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_myself" : 'X\(//\)[^/]' \| \ - X"$as_myself" : 'X\(//\)$' \| \ - X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X"$as_myself" | - 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 - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# 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 curl - 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 \`..'] - -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] - --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] - --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/curl] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_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 curl -:";; - esac - cat <<\_ACEOF - -Optional Features: - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-maintainer-mode - enable make rules and dependencies not useful (and - sometimes confusing) to the casual installer - --enable-silent-rules less verbose build output (undo: "make V=1") - --disable-silent-rules verbose build output (undo: "make V=0") - --enable-debug Enable debug build options - --disable-debug Disable debug build options - --enable-optimize Enable compiler optimizations - --disable-optimize Disable compiler optimizations - --enable-warnings Enable strict compiler warnings - --disable-warnings Disable strict compiler warnings - --enable-werror Enable compiler warnings as errors - --disable-werror Disable compiler warnings as errors - --enable-curldebug Enable curl debug memory tracking - --disable-curldebug Disable curl debug memory tracking - --enable-symbol-hiding Enable hiding of library internal symbols - --disable-symbol-hiding Disable hiding of library internal symbols - --enable-ares[=PATH] Enable c-ares for DNS lookups - --disable-ares Disable c-ares for DNS lookups - --disable-rt disable dependency on -lrt - --enable-ech Enable ECH support - --disable-ech Disable ECH support - --enable-code-coverage Provide code coverage - --enable-dependency-tracking - do not reject slow dependency extractors - --disable-dependency-tracking - speeds up one-time build - --disable-largefile omit support for large files - --enable-shared[=PKGS] build shared libraries [default=yes] - --enable-static[=PKGS] build static libraries [default=yes] - --enable-fast-install[=PKGS] - optimize for fast installation [default=yes] - --disable-libtool-lock avoid locking (might break parallel builds) - --enable-http Enable HTTP support - --disable-http Disable HTTP support - --enable-ftp Enable FTP support - --disable-ftp Disable FTP support - --enable-file Enable FILE support - --disable-file Disable FILE support - --enable-ldap Enable LDAP support - --disable-ldap Disable LDAP support - --enable-ldaps Enable LDAPS support - --disable-ldaps Disable LDAPS support - --enable-rtsp Enable RTSP support - --disable-rtsp Disable RTSP support - --enable-proxy Enable proxy support - --disable-proxy Disable proxy support - --enable-dict Enable DICT support - --disable-dict Disable DICT support - --enable-telnet Enable TELNET support - --disable-telnet Disable TELNET support - --enable-tftp Enable TFTP support - --disable-tftp Disable TFTP support - --enable-pop3 Enable POP3 support - --disable-pop3 Disable POP3 support - --enable-imap Enable IMAP support - --disable-imap Disable IMAP support - --enable-smb Enable SMB/CIFS support - --disable-smb Disable SMB/CIFS support - --enable-smtp Enable SMTP support - --disable-smtp Disable SMTP support - --enable-gopher Enable Gopher support - --disable-gopher Disable Gopher support - --enable-mqtt Enable MQTT support - --disable-mqtt Disable MQTT support - --enable-manual Enable built-in manual - --disable-manual Disable built-in manual - --enable-libcurl-option Enable --libcurl C code generation support - --disable-libcurl-option - Disable --libcurl C code generation support - --enable-libgcc use libgcc when linking - --enable-ipv6 Enable IPv6 (with IPv4) support - --disable-ipv6 Disable IPv6 support - --enable-openssl-auto-load-config - Enable automatic loading of OpenSSL configuration - --disable-openssl-auto-load-config - Disable automatic loading of OpenSSL configuration - --enable-versioned-symbols - Enable versioned symbols in shared library - --disable-versioned-symbols - Disable versioned symbols in shared library - --enable-threaded-resolver - Enable threaded resolver - --disable-threaded-resolver - Disable threaded resolver - --enable-pthreads Enable POSIX threads (default for threaded resolver) - --disable-pthreads Disable POSIX threads - --enable-verbose Enable verbose strings - --disable-verbose Disable verbose strings - --enable-sspi Enable SSPI - --disable-sspi Disable SSPI - --enable-crypto-auth Enable cryptographic authentication - --disable-crypto-auth Disable cryptographic authentication - --enable-ntlm Enable NTLM support - --disable-ntlm Disable NTLM support - --enable-ntlm-wb[=FILE] Enable NTLM delegation to winbind's ntlm_auth - helper, where FILE is ntlm_auth's absolute filename - (default: /usr/bin/ntlm_auth) - --disable-ntlm-wb Disable NTLM delegation to winbind's ntlm_auth - helper - --enable-tls-srp Enable TLS-SRP authentication - --disable-tls-srp Disable TLS-SRP authentication - --enable-unix-sockets Enable Unix domain sockets - --disable-unix-sockets Disable Unix domain sockets - --enable-cookies Enable cookies support - --disable-cookies Disable cookies support - --enable-socketpair Enable socketpair support - --disable-socketpair Disable socketpair support - --enable-http-auth Enable HTTP authentication support - --disable-http-auth Disable HTTP authentication support - --enable-doh Enable DoH support - --disable-doh Disable DoH support - --enable-mime Enable mime API support - --disable-mime Disable mime API support - --enable-dateparse Enable date parsing - --disable-dateparse Disable date parsing - --enable-netrc Enable netrc parsing - --disable-netrc Disable netrc parsing - --enable-progress-meter Enable progress-meter - --disable-progress-meter - Disable progress-meter - --enable-dnsshuffle Enable DNS shuffling - --disable-dnsshuffle Disable DNS shuffling - --enable-get-easy-options - Enable curl_easy_options - --disable-get-easy-options - Disable curl_easy_options - --enable-alt-svc Enable alt-svc support - --disable-alt-svc Disable alt-svc support - --enable-headers-api Enable headers-api support - --disable-headers-api Disable headers-api support - --enable-hsts Enable HSTS support - --disable-hsts Disable HSTS support - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-schannel enable Windows native SSL/TLS - --with-secure-transport enable Apple OS native SSL/TLS - --with-amissl enable Amiga native SSL/TLS (AmiSSL) - --with-ssl=PATH old version of --with-openssl - --without-ssl build without any TLS library - --with-openssl=PATH Where to look for OpenSSL, PATH points to the SSL - installation (default: /usr/local/ssl); when - possible, set the PKG_CONFIG_PATH environment - variable instead of using this option - --with-gnutls=PATH where to look for GnuTLS, PATH points to the - installation root - --with-mbedtls=PATH where to look for mbedTLS, PATH points to the - installation root - --with-wolfssl=PATH where to look for WolfSSL, PATH points to the - installation root (default: system lib default) - --with-bearssl=PATH where to look for BearSSL, PATH points to the - installation root - --with-rustls=PATH where to look for rustls, PATH points to the - installation root - --with-nss-deprecated confirm you realize NSS is going away - --with-nss=PATH where to look for NSS, PATH points to the - installation root - - --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use - both] - --with-aix-soname=aix|svr4|both - shared library versioning (aka "SONAME") variant to - provide on AIX, [default=aix]. - --with-gnu-ld assume the C compiler uses GNU ld [default=no] - --with-sysroot[=DIR] Search for dependent libraries within DIR (or the - compiler's sysroot if not specified). - --with-hyper=PATH Enable hyper usage - --without-hyper Disable hyper usage - --with-zlib=PATH search for zlib in PATH - --without-zlib disable use of zlib - --with-brotli=PATH Where to look for brotli, PATH points to the BROTLI - installation; when possible, set the PKG_CONFIG_PATH - environment variable instead of using this option - --without-brotli disable BROTLI - --with-zstd=PATH Where to look for libzstd, PATH points to the - libzstd installation; when possible, set the - PKG_CONFIG_PATH environment variable instead of - using this option - --without-zstd disable libzstd - --with-ldap-lib=libname Specify name of ldap lib file - --with-lber-lib=libname Specify name of lber lib file - --with-gssapi-includes=DIR - Specify location of GSS-API headers - --with-gssapi-libs=DIR Specify location of GSS-API libs - --with-gssapi=DIR Where to look for GSS-API - --with-default-ssl-backend=NAME - Use NAME as default SSL backend - --without-default-ssl-backend - Use implicit default SSL backend - --with-egd-socket=FILE Entropy Gathering Daemon socket pathname - --with-random=FILE read randomness from FILE (default=/dev/urandom) - --with-ca-bundle=FILE Path to a file containing CA certificates (example: - /etc/ca-bundle.crt) - --without-ca-bundle Don't use a default CA bundle - --with-ca-path=DIRECTORY - Path to a directory containing CA certificates - stored individually, with their filenames in a hash - format. This option can be used with the OpenSSL, - GnuTLS and mbedTLS backends. Refer to OpenSSL - c_rehash for details. (example: /etc/certificates) - --without-ca-path Don't use a default CA path - --with-ca-fallback Use the built in CA store of the SSL library - --without-ca-fallback Don't use the built in CA store of the SSL library - --without-libpsl disable support for libpsl cookie checking - --without-libgsasl disable libgsasl support for SCRAM - --with-libssh2=PATH Where to look for libssh2, PATH points to the - libssh2 installation; when possible, set the - PKG_CONFIG_PATH environment variable instead of - using this option - --with-libssh2 enable libssh2 - --with-libssh=PATH Where to look for libssh, PATH points to the libssh - installation; when possible, set the PKG_CONFIG_PATH - environment variable instead of using this option - --with-libssh enable libssh - --with-wolfssh=PATH Where to look for wolfssh, PATH points to the - wolfSSH installation; when possible, set the - PKG_CONFIG_PATH environment variable instead of - using this option - --with-wolfssh enable wolfssh - --with-librtmp=PATH Where to look for librtmp, PATH points to the - LIBRTMP installation; when possible, set the - PKG_CONFIG_PATH environment variable instead of - using this option - --without-librtmp disable LIBRTMP - --with-winidn=PATH enable Windows native IDN - --without-winidn disable Windows native IDN - --with-libidn2=PATH Enable libidn2 usage - --without-libidn2 Disable libidn2 usage - --with-nghttp2=PATH Enable nghttp2 usage - --without-nghttp2 Disable nghttp2 usage - --with-ngtcp2=PATH Enable ngtcp2 usage - --without-ngtcp2 Disable ngtcp2 usage - --with-nghttp3=PATH Enable nghttp3 usage - --without-nghttp3 Disable nghttp3 usage - --with-quiche=PATH Enable quiche usage - --without-quiche Disable quiche usage - --with-msh3=PATH Enable msh3 usage - --without-msh3 Disable msh3 usage - --with-zsh-functions-dir=PATH - Install zsh completions to PATH - --without-zsh-functions-dir - Do not install zsh completions - --with-fish-functions-dir=PATH - Install fish completions to PATH - --without-fish-functions-dir - Do not install fish completions - -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 - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if - you have headers in a nonstandard directory - CPP C preprocessor - LT_SYS_LIBRARY_PATH - User-defined run-time library search path. - -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 -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || - { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || - continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for configure.gnu first; this name is used for a wrapper for - # Metaconfig's "Configure" on case-insensitive file systems. - 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 - else - printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -curl configure - -generated by GNU Autoconf 2.71 - -Copyright (C) 2021 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. - -Copyright (c) 1998 - 2022 Daniel Stenberg, -This configure script may be copied, distributed and modified under the -terms of the curl license; see COPYING for more details -_ACEOF - exit -fi - -## ------------------------ ## -## Autoconf initialization. ## -## ------------------------ ## - -# ac_fn_c_try_compile LINENO -# -------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest.beam - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext -then : - ac_retval=0 -else $as_nop - printf "%s\n" "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_compile - -# ac_fn_c_try_cpp LINENO -# ---------------------- -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - } -then : - ac_retval=0 -else $as_nop - printf "%s\n" "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_cpp - -# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists and can be compiled using the include files in -# INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -printf %s "checking for $2... " >&6; } -if eval test \${$3+y} -then : - printf %s "(cached) " >&6 -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - eval "$3=yes" -else $as_nop - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -fi -eval ac_res=\$$3 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_compile - -# ac_fn_c_try_link LINENO -# ----------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - test -x conftest$ac_exeext - } -then : - ac_retval=0 -else $as_nop - printf "%s\n" "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_link - -# ac_fn_c_check_func LINENO FUNC VAR -# ---------------------------------- -# Tests whether FUNC exists, setting the cache variable VAR accordingly -ac_fn_c_check_func () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -printf %s "checking for $2... " >&6; } -if eval test \${$3+y} -then : - printf %s "(cached) " >&6 -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#define $2 innocuous_$2 -#ifdef __STDC__ -# include -#else -# include -#endif -#undef $2 -#ifdef __cplusplus -extern "C" -#endif -char $2 (); -#if defined __stub_$2 || defined __stub___$2 -choke me -#endif - -int main (void) -{ -return $2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - eval "$3=yes" -else $as_nop - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -fi -eval ac_res=\$$3 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_func - -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that -# executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; } -then : - ac_retval=0 -else $as_nop - printf "%s\n" "$as_me: program exited with status $ac_status" >&5 - printf "%s\n" "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_run - -# ac_fn_c_check_type LINENO SIZEOF_LONG_LONG VAR INCLUDES -# ------------------------------------------------------- -# Tests whether TYPE exists after having included INCLUDES, setting cache -# variable VAR accordingly. -ac_fn_c_check_type () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -printf %s "checking for $2... " >&6; } -if eval test \${$3+y} -then : - printf %s "(cached) " >&6 -else $as_nop - eval "$3=no" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int main (void) -{ -if (sizeof ($2)) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int main (void) -{ -if (sizeof (($2))) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - -else $as_nop - eval "$3=yes" -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -fi -eval ac_res=\$$3 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_type - -# ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR -# ------------------------------------------------------------------ -# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR -# accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR. -ac_fn_check_decl () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - as_decl_name=`echo $2|sed 's/ *(.*//'` - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 -printf %s "checking whether $as_decl_name is declared... " >&6; } -if eval test \${$3+y} -then : - printf %s "(cached) " >&6 -else $as_nop - as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` - eval ac_save_FLAGS=\$$6 - as_fn_append $6 " $5" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int main (void) -{ -#ifndef $as_decl_name -#ifdef __cplusplus - (void) $as_decl_use; -#else - (void) $as_decl_name; -#endif -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - eval "$3=yes" -else $as_nop - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - eval $6=\$ac_save_FLAGS - -fi -eval ac_res=\$$3 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_check_decl - -# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES -# ---------------------------------------------------- -# Tries to find if the field MEMBER exists in type AGGR, after including -# INCLUDES, setting cache variable VAR accordingly. -ac_fn_c_check_member () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 -printf %s "checking for $2.$3... " >&6; } -if eval test \${$4+y} -then : - printf %s "(cached) " >&6 -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$5 -int main (void) -{ -static $2 ac_aggr; -if (ac_aggr.$3) -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - eval "$4=yes" -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$5 -int main (void) -{ -static $2 ac_aggr; -if (sizeof ac_aggr.$3) -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - eval "$4=yes" -else $as_nop - eval "$4=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -fi -eval ac_res=\$$4 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_member -ac_configure_args_raw= -for ac_arg -do - case $ac_arg in - *\'*) - ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append ac_configure_args_raw " '$ac_arg'" -done - -case $ac_configure_args_raw in - *$as_nl*) - ac_safe_unquote= ;; - *) - ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. - ac_unsafe_a="$ac_unsafe_z#~" - ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" - ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; -esac - -cat >config.log <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by curl $as_me -, which was -generated by GNU Autoconf 2.71. Invocation command line was - - $ $0$ac_configure_args_raw - -_ACEOF -exec 5>>config.log -{ -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` -/usr/bin/hostinfo = `(/usr/bin/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 - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - printf "%s\n" "PATH: $as_dir" - done -IFS=$as_save_IFS - -} >&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. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *\'*) - ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; - 2) - as_fn_append ac_configure_args1 " '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - as_fn_append ac_configure_args " '$ac_arg'" - ;; - esac - done -done -{ ac_configure_args0=; unset ac_configure_args0;} -{ ac_configure_args1=; unset ac_configure_args1;} - -# 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: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Sanitize IFS. - IFS=" "" $as_nl" - # Save into config.log some information that might help in debugging. - { - echo - - printf "%s\n" "## ---------------- ## -## Cache variables. ## -## ---------------- ##" - echo - # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - printf "%s\n" "## ----------------- ## -## Output variables. ## -## ----------------- ##" - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - printf "%s\n" "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - printf "%s\n" "## ------------------- ## -## File substitutions. ## -## ------------------- ##" - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - printf "%s\n" "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - printf "%s\n" "## ----------- ## -## confdefs.h. ## -## ----------- ##" - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - printf "%s\n" "$as_me: caught signal $ac_signal" - printf "%s\n" "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h - -printf "%s\n" "/* confdefs.h */" > confdefs.h - -# Predefined preprocessor variables. - -printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h - -printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h - -printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h - -printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h - -printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h - -printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h - - -# Let the site file select an alternate cache file if it wants to. -# Prefer an explicitly selected file to automatically selected ones. -if test -n "$CONFIG_SITE"; then - ac_site_files="$CONFIG_SITE" -elif test "x$prefix" != xNONE; then - ac_site_files="$prefix/share/config.site $prefix/etc/config.site" -else - ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" -fi - -for ac_site_file in $ac_site_files -do - case $ac_site_file in #( - */*) : - ;; #( - *) : - ac_site_file=./$ac_site_file ;; -esac - if test -f "$ac_site_file" && test -r "$ac_site_file"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" \ - || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "failed to load site script $ac_site_file -See \`config.log' for more details" "$LINENO" 5; } - 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. DJGPP emulates it as a regular file. - if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -printf "%s\n" "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -printf "%s\n" "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Test code for whether the C compiler supports C89 (global declarations) -ac_c_conftest_c89_globals=' -/* Does the compiler advertise C89 conformance? - Do not test the value of __STDC__, because some compilers set it to 0 - while being otherwise adequately conformant. */ -#if !defined __STDC__ -# error "Compiler does not advertise C89 conformance" -#endif - -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ -struct buf { int x; }; -struct buf * (*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; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not \xHH hex character constants. - These do not provoke an error unfortunately, instead are silently treated - as an "x". The following induces an error, until -std is added to get - proper ANSI mode. Curiously \x00 != x always comes out true, for an - array size at least. It is necessary to write \x00 == 0 to get something - that is true only with -std. */ -int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) '\''x'\'' -int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), - int, int);' - -# Test code for whether the C compiler supports C89 (body of main). -ac_c_conftest_c89_main=' -ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); -' - -# Test code for whether the C compiler supports C99 (global declarations) -ac_c_conftest_c99_globals=' -// Does the compiler advertise C99 conformance? -#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L -# error "Compiler does not advertise C99 conformance" -#endif - -#include -extern int puts (const char *); -extern int printf (const char *, ...); -extern int dprintf (int, const char *, ...); -extern void *malloc (size_t); - -// Check varargs macros. These examples are taken from C99 6.10.3.5. -// dprintf is used instead of fprintf to avoid needing to declare -// FILE and stderr. -#define debug(...) dprintf (2, __VA_ARGS__) -#define showlist(...) puts (#__VA_ARGS__) -#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) -static void -test_varargs_macros (void) -{ - int x = 1234; - int y = 5678; - debug ("Flag"); - debug ("X = %d\n", x); - showlist (The first, second, and third items.); - report (x>y, "x is %d but y is %d", x, y); -} - -// Check long long types. -#define BIG64 18446744073709551615ull -#define BIG32 4294967295ul -#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) -#if !BIG_OK - #error "your preprocessor is broken" -#endif -#if BIG_OK -#else - #error "your preprocessor is broken" -#endif -static long long int bignum = -9223372036854775807LL; -static unsigned long long int ubignum = BIG64; - -struct incomplete_array -{ - int datasize; - double data[]; -}; - -struct named_init { - int number; - const wchar_t *name; - double average; -}; - -typedef const char *ccp; - -static inline int -test_restrict (ccp restrict text) -{ - // See if C++-style comments work. - // Iterate through items via the restricted pointer. - // Also check for declarations in for loops. - for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) - continue; - return 0; -} - -// Check varargs and va_copy. -static bool -test_varargs (const char *format, ...) -{ - va_list args; - va_start (args, format); - va_list args_copy; - va_copy (args_copy, args); - - const char *str = ""; - int number = 0; - float fnumber = 0; - - while (*format) - { - switch (*format++) - { - case '\''s'\'': // string - str = va_arg (args_copy, const char *); - break; - case '\''d'\'': // int - number = va_arg (args_copy, int); - break; - case '\''f'\'': // float - fnumber = va_arg (args_copy, double); - break; - default: - break; - } - } - va_end (args_copy); - va_end (args); - - return *str && number && fnumber; -} -' - -# Test code for whether the C compiler supports C99 (body of main). -ac_c_conftest_c99_main=' - // Check bool. - _Bool success = false; - success |= (argc != 0); - - // Check restrict. - if (test_restrict ("String literal") == 0) - success = true; - char *restrict newvar = "Another string"; - - // Check varargs. - success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); - test_varargs_macros (); - - // Check flexible array members. - struct incomplete_array *ia = - malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); - ia->datasize = 10; - for (int i = 0; i < ia->datasize; ++i) - ia->data[i] = i * 1.234; - - // Check named initializers. - struct named_init ni = { - .number = 34, - .name = L"Test wide string", - .average = 543.34343, - }; - - ni.number = 58; - - int dynamic_array[ni.number]; - dynamic_array[0] = argv[0][0]; - dynamic_array[ni.number - 1] = 543; - - // work around unused variable warnings - ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' - || dynamic_array[ni.number - 1] != 543); -' - -# Test code for whether the C compiler supports C11 (global declarations) -ac_c_conftest_c11_globals=' -// Does the compiler advertise C11 conformance? -#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L -# error "Compiler does not advertise C11 conformance" -#endif - -// Check _Alignas. -char _Alignas (double) aligned_as_double; -char _Alignas (0) no_special_alignment; -extern char aligned_as_int; -char _Alignas (0) _Alignas (int) aligned_as_int; - -// Check _Alignof. -enum -{ - int_alignment = _Alignof (int), - int_array_alignment = _Alignof (int[100]), - char_alignment = _Alignof (char) -}; -_Static_assert (0 < -_Alignof (int), "_Alignof is signed"); - -// Check _Noreturn. -int _Noreturn does_not_return (void) { for (;;) continue; } - -// Check _Static_assert. -struct test_static_assert -{ - int x; - _Static_assert (sizeof (int) <= sizeof (long int), - "_Static_assert does not work in struct"); - long int y; -}; - -// Check UTF-8 literals. -#define u8 syntax error! -char const utf8_literal[] = u8"happens to be ASCII" "another string"; - -// Check duplicate typedefs. -typedef long *long_ptr; -typedef long int *long_ptr; -typedef long_ptr long_ptr; - -// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. -struct anonymous -{ - union { - struct { int i; int j; }; - struct { int k; long int l; } w; - }; - int m; -} v1; -' - -# Test code for whether the C compiler supports C11 (body of main). -ac_c_conftest_c11_main=' - _Static_assert ((offsetof (struct anonymous, i) - == offsetof (struct anonymous, w.k)), - "Anonymous union alignment botch"); - v1.i = 2; - v1.w.k = 5; - ok |= v1.i != 5; -' - -# Test code for whether the C compiler supports C11 (complete). -ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} -${ac_c_conftest_c99_globals} -${ac_c_conftest_c11_globals} - -int -main (int argc, char **argv) -{ - int ok = 0; - ${ac_c_conftest_c89_main} - ${ac_c_conftest_c99_main} - ${ac_c_conftest_c11_main} - return ok; -} -" - -# Test code for whether the C compiler supports C99 (complete). -ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} -${ac_c_conftest_c99_globals} - -int -main (int argc, char **argv) -{ - int ok = 0; - ${ac_c_conftest_c89_main} - ${ac_c_conftest_c99_main} - return ok; -} -" - -# Test code for whether the C compiler supports C89 (complete). -ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} - -int -main (int argc, char **argv) -{ - int ok = 0; - ${ac_c_conftest_c89_main} - return ok; -} -" - -as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" -as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" -as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" -as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" -as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" -as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" -as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" -as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" -as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" - -# Auxiliary files required by this configure script. -ac_aux_files="ltmain.sh config.guess config.sub missing compile install-sh" - -# Locations in which to look for auxiliary files. -ac_aux_dir_candidates="${srcdir}${PATH_SEPARATOR}${srcdir}/..${PATH_SEPARATOR}${srcdir}/../.." - -# Search for a directory containing all of the required auxiliary files, -# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. -# If we don't find one directory that contains all the files we need, -# we report the set of missing files from the *first* directory in -# $ac_aux_dir_candidates and give up. -ac_missing_aux_files="" -ac_first_candidate=: -printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in $ac_aux_dir_candidates -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - as_found=: - - printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 - ac_aux_dir_found=yes - ac_install_sh= - for ac_aux in $ac_aux_files - do - # As a special case, if "install-sh" is required, that requirement - # can be satisfied by any of "install-sh", "install.sh", or "shtool", - # and $ac_install_sh is set appropriately for whichever one is found. - if test x"$ac_aux" = x"install-sh" - then - if test -f "${as_dir}install-sh"; then - printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 - ac_install_sh="${as_dir}install-sh -c" - elif test -f "${as_dir}install.sh"; then - printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 - ac_install_sh="${as_dir}install.sh -c" - elif test -f "${as_dir}shtool"; then - printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 - ac_install_sh="${as_dir}shtool install -c" - else - ac_aux_dir_found=no - if $ac_first_candidate; then - ac_missing_aux_files="${ac_missing_aux_files} install-sh" - else - break - fi - fi - else - if test -f "${as_dir}${ac_aux}"; then - printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 - else - ac_aux_dir_found=no - if $ac_first_candidate; then - ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" - else - break - fi - fi - fi - done - if test "$ac_aux_dir_found" = yes; then - ac_aux_dir="$as_dir" - break - fi - ac_first_candidate=false - - as_found=false -done -IFS=$as_save_IFS -if $as_found -then : - -else $as_nop - as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 -fi - - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -if test -f "${ac_aux_dir}config.guess"; then - ac_config_guess="$SHELL ${ac_aux_dir}config.guess" -fi -if test -f "${ac_aux_dir}config.sub"; then - ac_config_sub="$SHELL ${ac_aux_dir}config.sub" -fi -if test -f "$ac_aux_dir/configure"; then - ac_configure="$SHELL ${ac_aux_dir}configure" -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; 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,) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -printf "%s\n" "$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 - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`printf "%s\n" "$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. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' - and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## - -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 - - - - - - - -# using curl-override.m4 - - - - - -ac_config_headers="$ac_config_headers lib/curl_config.h" - - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 -printf %s "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } - # Check whether --enable-maintainer-mode was given. -if test ${enable_maintainer_mode+y} -then : - enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval -else $as_nop - USE_MAINTAINER_MODE=no -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 -printf "%s\n" "$USE_MAINTAINER_MODE" >&6; } - if test $USE_MAINTAINER_MODE = yes; then - MAINTAINER_MODE_TRUE= - MAINTAINER_MODE_FALSE='#' -else - MAINTAINER_MODE_TRUE='#' - MAINTAINER_MODE_FALSE= -fi - - MAINT=$MAINTAINER_MODE_TRUE - - -# Check whether --enable-silent-rules was given. -if test ${enable_silent_rules+y} -then : - enableval=$enable_silent_rules; -fi - -case $enable_silent_rules in # ((( - yes) AM_DEFAULT_VERBOSITY=0;; - no) AM_DEFAULT_VERBOSITY=1;; - *) AM_DEFAULT_VERBOSITY=0;; -esac -am_make=${MAKE-make} -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 -printf %s "checking whether $am_make supports nested variables... " >&6; } -if test ${am_cv_make_support_nested_variables+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if printf "%s\n" 'TRUE=$(BAR$(V)) -BAR0=false -BAR1=true -V=1 -am__doit: - @$(TRUE) -.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then - am_cv_make_support_nested_variables=yes -else - am_cv_make_support_nested_variables=no -fi -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 -printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } -if test $am_cv_make_support_nested_variables = yes; then - AM_V='$(V)' - AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' -else - AM_V=$AM_DEFAULT_VERBOSITY - AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY -fi -AM_BACKSLASH='\' - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable debug build options" >&5 -printf %s "checking whether to enable debug build options... " >&6; } - OPT_DEBUG_BUILD="default" - # Check whether --enable-debug was given. -if test ${enable_debug+y} -then : - enableval=$enable_debug; OPT_DEBUG_BUILD=$enableval -fi - - case "$OPT_DEBUG_BUILD" in - no) - want_debug="no" - ;; - default) - want_debug="no" - ;; - *) - want_debug="yes" - -printf "%s\n" "#define DEBUGBUILD 1" >>confdefs.h - - ;; - esac - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $want_debug" >&5 -printf "%s\n" "$want_debug" >&6; } - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable compiler optimizer" >&5 -printf %s "checking whether to enable compiler optimizer... " >&6; } - OPT_COMPILER_OPTIMIZE="default" - # Check whether --enable-optimize was given. -if test ${enable_optimize+y} -then : - enableval=$enable_optimize; OPT_COMPILER_OPTIMIZE=$enableval -fi - - case "$OPT_COMPILER_OPTIMIZE" in - no) - want_optimize="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; - default) - if test "$want_debug" = "yes"; then - want_optimize="assume_no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: (assumed) no" >&5 -printf "%s\n" "(assumed) no" >&6; } - else - want_optimize="assume_yes" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: (assumed) yes" >&5 -printf "%s\n" "(assumed) yes" >&6; } - fi - ;; - *) - want_optimize="yes" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - esac - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable strict compiler warnings" >&5 -printf %s "checking whether to enable strict compiler warnings... " >&6; } - OPT_COMPILER_WARNINGS="default" - # Check whether --enable-warnings was given. -if test ${enable_warnings+y} -then : - enableval=$enable_warnings; OPT_COMPILER_WARNINGS=$enableval -fi - - case "$OPT_COMPILER_WARNINGS" in - no) - want_warnings="no" - ;; - default) - want_warnings="$want_debug" - ;; - *) - want_warnings="yes" - ;; - esac - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $want_warnings" >&5 -printf "%s\n" "$want_warnings" >&6; } - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable compiler warnings as errors" >&5 -printf %s "checking whether to enable compiler warnings as errors... " >&6; } - OPT_COMPILER_WERROR="default" - # Check whether --enable-werror was given. -if test ${enable_werror+y} -then : - enableval=$enable_werror; OPT_COMPILER_WERROR=$enableval -fi - - case "$OPT_COMPILER_WERROR" in - no) - want_werror="no" - ;; - default) - want_werror="no" - ;; - *) - want_werror="yes" - ;; - esac - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $want_werror" >&5 -printf "%s\n" "$want_werror" >&6; } - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable curl debug memory tracking" >&5 -printf %s "checking whether to enable curl debug memory tracking... " >&6; } - OPT_CURLDEBUG_BUILD="default" - # Check whether --enable-curldebug was given. -if test ${enable_curldebug+y} -then : - enableval=$enable_curldebug; OPT_CURLDEBUG_BUILD=$enableval -fi - - case "$OPT_CURLDEBUG_BUILD" in - no) - want_curldebug="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; - default) - if test "$want_debug" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: (assumed) yes" >&5 -printf "%s\n" "(assumed) yes" >&6; } - -printf "%s\n" "#define CURLDEBUG 1" >>confdefs.h - - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - fi - want_curldebug_assumed="yes" - want_curldebug="$want_debug" - ;; - *) - want_curldebug="yes" - -printf "%s\n" "#define CURLDEBUG 1" >>confdefs.h - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - esac - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable hiding of library internal symbols" >&5 -printf %s "checking whether to enable hiding of library internal symbols... " >&6; } - OPT_SYMBOL_HIDING="default" - # Check whether --enable-symbol-hiding was given. -if test ${enable_symbol_hiding+y} -then : - enableval=$enable_symbol_hiding; OPT_SYMBOL_HIDING=$enableval -fi - - case "$OPT_SYMBOL_HIDING" in - no) - want_symbol_hiding="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; - default) - want_symbol_hiding="yes" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - *) - want_symbol_hiding="yes" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - esac - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable c-ares for DNS lookups" >&5 -printf %s "checking whether to enable c-ares for DNS lookups... " >&6; } - OPT_ARES="default" - # Check whether --enable-ares was given. -if test ${enable_ares+y} -then : - enableval=$enable_ares; OPT_ARES=$enableval -fi - - case "$OPT_ARES" in - no) - want_ares="no" - ;; - default) - want_ares="no" - ;; - *) - want_ares="yes" - if test -n "$enableval" && test "$enableval" != "yes"; then - want_ares_path="$enableval" - fi - ;; - esac - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $want_ares" >&5 -printf "%s\n" "$want_ares" >&6; } - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to disable dependency on -lrt" >&5 -printf %s "checking whether to disable dependency on -lrt... " >&6; } - OPT_RT="default" - # Check whether --enable-rt was given. -if test ${enable_rt+y} -then : - enableval=$enable_rt; OPT_RT=$enableval -fi - - case "$OPT_RT" in - no) - dontwant_rt="yes" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - default) - dontwant_rt="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: (assumed no)" >&5 -printf "%s\n" "(assumed no)" >&6; } - ;; - *) - dontwant_rt="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; - esac - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable ECH support" >&5 -printf %s "checking whether to enable ECH support... " >&6; } - OPT_ECH="default" - # Check whether --enable-ech was given. -if test ${enable_ech+y} -then : - enableval=$enable_ech; OPT_ECH=$enableval -fi - - case "$OPT_ECH" in - no) - want_ech="no" - curl_ech_msg="no (--enable-ech)" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; - default) - want_ech="no" - curl_ech_msg="no (--enable-ech)" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; - *) - want_ech="yes" - curl_ech_msg="enabled (--disable-ech)" - experimental="ech" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - esac - - -# -# Check that 'XC_CONFIGURE_PREAMBLE' has already run. -# - -if test -z "$xc_configure_preamble_result"; then - as_fn_error $? "xc_configure_preamble_result not set (internal problem)" "$LINENO" 5 -fi - -# -# Check that 'PATH_SEPARATOR' has already been set. -# - -if test -z "$xc_PATH_SEPARATOR"; then - as_fn_error $? "xc_PATH_SEPARATOR not set (internal problem)" "$LINENO" 5 -fi -if test -z "$PATH_SEPARATOR"; then - as_fn_error $? "PATH_SEPARATOR not set (internal or config.site problem)" "$LINENO" 5 -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for path separator" >&5 -printf %s "checking for path separator... " >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PATH_SEPARATOR" >&5 -printf "%s\n" "$PATH_SEPARATOR" >&6; } -if test "x$PATH_SEPARATOR" != "x$xc_PATH_SEPARATOR"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for initial path separator" >&5 -printf %s "checking for initial path separator... " >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xc_PATH_SEPARATOR" >&5 -printf "%s\n" "$xc_PATH_SEPARATOR" >&6; } - as_fn_error $? "path separator mismatch (internal or config.site problem)" "$LINENO" 5 -fi - - -# -# save the configure arguments -# -CONFIGURE_OPTIONS="\"$ac_configure_args\"" - - -if test -z "$SED"; then - # Extract the first word of "sed", so it can be a program name with args. -set dummy sed; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_SED+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $SED in - [\\/]* | ?:[\\/]*) - ac_cv_path_SED="$SED" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_SED="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_SED" && ac_cv_path_SED="not_found" - ;; -esac -fi -SED=$ac_cv_path_SED -if test -n "$SED"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SED" >&5 -printf "%s\n" "$SED" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - if test -z "$SED" || test "$SED" = "not_found"; then - as_fn_error $? "sed not found in PATH. Cannot continue without sed." "$LINENO" 5 - fi -fi - - -if test -z "$GREP"; then - # Extract the first word of "grep", so it can be a program name with args. -set dummy grep; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_GREP+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $GREP in - [\\/]* | ?:[\\/]*) - ac_cv_path_GREP="$GREP" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_GREP="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_GREP" && ac_cv_path_GREP="not_found" - ;; -esac -fi -GREP=$ac_cv_path_GREP -if test -n "$GREP"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GREP" >&5 -printf "%s\n" "$GREP" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - if test -z "$GREP" || test "$GREP" = "not_found"; then - as_fn_error $? "grep not found in PATH. Cannot continue without grep." "$LINENO" 5 - fi -fi - - -if test -z "$EGREP"; then - if echo a | ($GREP -E '(a|b)') >/dev/null 2>&1; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -printf %s "checking for egrep... " >&6; } - EGREP="$GREP -E" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $EGREP" >&5 -printf "%s\n" "$EGREP" >&6; } - else - # Extract the first word of "egrep", so it can be a program name with args. -set dummy egrep; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_EGREP+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $EGREP in - [\\/]* | ?:[\\/]*) - ac_cv_path_EGREP="$EGREP" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_EGREP="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_EGREP" && ac_cv_path_EGREP="not_found" - ;; -esac -fi -EGREP=$ac_cv_path_EGREP -if test -n "$EGREP"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $EGREP" >&5 -printf "%s\n" "$EGREP" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - fi -fi -if test -z "$EGREP" || test "$EGREP" = "not_found"; then - as_fn_error $? "egrep not found in PATH. Cannot continue without egrep." "$LINENO" 5 -fi - - -if test -z "$AR"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. -set dummy ${ac_tool_prefix}ar; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_AR+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $AR in - [\\/]* | ?:[\\/]*) - ac_cv_path_AR="$AR" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_AR="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -AR=$ac_cv_path_AR -if test -n "$AR"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -printf "%s\n" "$AR" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_AR"; then - ac_pt_AR=$AR - # Extract the first word of "ar", so it can be a program name with args. -set dummy ar; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_AR+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $ac_pt_AR in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_AR="$ac_pt_AR" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_AR="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_AR=$ac_cv_path_ac_pt_AR -if test -n "$ac_pt_AR"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_AR" >&5 -printf "%s\n" "$ac_pt_AR" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_AR" = x; then - AR="not_found" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AR=$ac_pt_AR - fi -else - AR="$ac_cv_path_AR" -fi - - if test -z "$AR" || test "$AR" = "not_found"; then - as_fn_error $? "ar not found in PATH. Cannot continue without ar." "$LINENO" 5 - fi -fi - - - - -CURLVERSION=`$SED -ne 's/^#define LIBCURL_VERSION "\(.*\)".*/\1/p' ${srcdir}/include/curl/curlver.h` - - xc_prog_cc_prev_IFS=$IFS - xc_prog_cc_prev_LIBS=$LIBS - xc_prog_cc_prev_CFLAGS=$CFLAGS - xc_prog_cc_prev_LDFLAGS=$LDFLAGS - xc_prog_cc_prev_CPPFLAGS=$CPPFLAGS - - - - xc_bad_var_libs=no - for xc_word in $LIBS; do - case "$xc_word" in - -l* | --library=*) - : - ;; - *) - xc_bad_var_libs=yes - ;; - esac - done - if test $xc_bad_var_libs = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: using LIBS: $LIBS" >&5 -printf "%s\n" "$as_me: using LIBS: $LIBS" >&6;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: LIBS note: LIBS should only be used to specify libraries (-lname)." >&5 -printf "%s\n" "$as_me: LIBS note: LIBS should only be used to specify libraries (-lname)." >&6;} - fi - - - xc_bad_var_ldflags=no - for xc_word in $LDFLAGS; do - case "$xc_word" in - -D*) - xc_bad_var_ldflags=yes - ;; - -U*) - xc_bad_var_ldflags=yes - ;; - -I*) - xc_bad_var_ldflags=yes - ;; - -l* | --library=*) - xc_bad_var_ldflags=yes - ;; - esac - done - if test $xc_bad_var_ldflags = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: using LDFLAGS: $LDFLAGS" >&5 -printf "%s\n" "$as_me: using LDFLAGS: $LDFLAGS" >&6;} - xc_bad_var_msg="LDFLAGS note: LDFLAGS should only be used to specify linker flags, not" - for xc_word in $LDFLAGS; do - case "$xc_word" in - -D*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg macro definitions. Use CPPFLAGS for: $xc_word" >&5 -printf "%s\n" "$as_me: $xc_bad_var_msg macro definitions. Use CPPFLAGS for: $xc_word" >&6;} - ;; - -U*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg macro suppressions. Use CPPFLAGS for: $xc_word" >&5 -printf "%s\n" "$as_me: $xc_bad_var_msg macro suppressions. Use CPPFLAGS for: $xc_word" >&6;} - ;; - -I*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg include directories. Use CPPFLAGS for: $xc_word" >&5 -printf "%s\n" "$as_me: $xc_bad_var_msg include directories. Use CPPFLAGS for: $xc_word" >&6;} - ;; - -l* | --library=*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg libraries. Use LIBS for: $xc_word" >&5 -printf "%s\n" "$as_me: $xc_bad_var_msg libraries. Use LIBS for: $xc_word" >&6;} - ;; - esac - done - fi - - - xc_bad_var_cppflags=no - for xc_word in $CPPFLAGS; do - case "$xc_word" in - -rpath*) - xc_bad_var_cppflags=yes - ;; - -L* | --library-path=*) - xc_bad_var_cppflags=yes - ;; - -l* | --library=*) - xc_bad_var_cppflags=yes - ;; - esac - done - if test $xc_bad_var_cppflags = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: using CPPFLAGS: $CPPFLAGS" >&5 -printf "%s\n" "$as_me: using CPPFLAGS: $CPPFLAGS" >&6;} - xc_bad_var_msg="CPPFLAGS note: CPPFLAGS should only be used to specify C preprocessor flags, not" - for xc_word in $CPPFLAGS; do - case "$xc_word" in - -rpath*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg library runtime directories. Use LDFLAGS for: $xc_word" >&5 -printf "%s\n" "$as_me: $xc_bad_var_msg library runtime directories. Use LDFLAGS for: $xc_word" >&6;} - ;; - -L* | --library-path=*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg library directories. Use LDFLAGS for: $xc_word" >&5 -printf "%s\n" "$as_me: $xc_bad_var_msg library directories. Use LDFLAGS for: $xc_word" >&6;} - ;; - -l* | --library=*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg libraries. Use LIBS for: $xc_word" >&5 -printf "%s\n" "$as_me: $xc_bad_var_msg libraries. Use LIBS for: $xc_word" >&6;} - ;; - esac - done - fi - - - xc_bad_var_cflags=no - for xc_word in $CFLAGS; do - case "$xc_word" in - -D*) - xc_bad_var_cflags=yes - ;; - -U*) - xc_bad_var_cflags=yes - ;; - -I*) - xc_bad_var_cflags=yes - ;; - -rpath*) - xc_bad_var_cflags=yes - ;; - -L* | --library-path=*) - xc_bad_var_cflags=yes - ;; - -l* | --library=*) - xc_bad_var_cflags=yes - ;; - esac - done - if test $xc_bad_var_cflags = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: using CFLAGS: $CFLAGS" >&5 -printf "%s\n" "$as_me: using CFLAGS: $CFLAGS" >&6;} - xc_bad_var_msg="CFLAGS note: CFLAGS should only be used to specify C compiler flags, not" - for xc_word in $CFLAGS; do - case "$xc_word" in - -D*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg macro definitions. Use CPPFLAGS for: $xc_word" >&5 -printf "%s\n" "$as_me: $xc_bad_var_msg macro definitions. Use CPPFLAGS for: $xc_word" >&6;} - ;; - -U*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg macro suppressions. Use CPPFLAGS for: $xc_word" >&5 -printf "%s\n" "$as_me: $xc_bad_var_msg macro suppressions. Use CPPFLAGS for: $xc_word" >&6;} - ;; - -I*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg include directories. Use CPPFLAGS for: $xc_word" >&5 -printf "%s\n" "$as_me: $xc_bad_var_msg include directories. Use CPPFLAGS for: $xc_word" >&6;} - ;; - -rpath*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg library runtime directories. Use LDFLAGS for: $xc_word" >&5 -printf "%s\n" "$as_me: $xc_bad_var_msg library runtime directories. Use LDFLAGS for: $xc_word" >&6;} - ;; - -L* | --library-path=*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg library directories. Use LDFLAGS for: $xc_word" >&5 -printf "%s\n" "$as_me: $xc_bad_var_msg library directories. Use LDFLAGS for: $xc_word" >&6;} - ;; - -l* | --library=*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg libraries. Use LIBS for: $xc_word" >&5 -printf "%s\n" "$as_me: $xc_bad_var_msg libraries. Use LIBS for: $xc_word" >&6;} - ;; - esac - done - fi - - if test $xc_bad_var_libs = yes || - test $xc_bad_var_cflags = yes || - test $xc_bad_var_ldflags = yes || - test $xc_bad_var_cppflags = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Continuing even with errors mentioned immediately above this line." >&5 -printf "%s\n" "$as_me: WARNING: Continuing even with errors mentioned immediately above this line." >&2;} - fi - - - - # 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" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -# Reject install programs that cannot install multiple files. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -printf %s "checking for a BSD-compatible install... " >&6; } -if test -z "$INSTALL"; then -if test ${ac_cv_path_install+y} -then : - printf %s "(cached) " >&6 -else $as_nop - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - # Account for fact that we put trailing slashes in our PATH walk. -case $as_dir in #(( - ./ | /[cC]/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ - /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_fn_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 - rm -rf conftest.one conftest.two conftest.dir - echo one > conftest.one - echo two > conftest.two - mkdir conftest.dir - if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && - test -s conftest.one && test -s conftest.two && - test -s conftest.dir/conftest.one && - test -s conftest.dir/conftest.two - then - ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - fi - done - done - ;; -esac - - done -IFS=$as_save_IFS - -rm -rf conftest.one conftest.two conftest.dir - -fi - if test ${ac_cv_path_install+y}; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -printf "%s\n" "$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' - - - - - - - - - - - -# Expand $ac_aux_dir to an absolute path. -am_aux_dir=`cd "$ac_aux_dir" && pwd` - -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 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else $as_nop - 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 - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "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 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_CC+y} -then : - printf %s "(cached) " >&6 -else $as_nop - 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 - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -printf "%s\n" "$ac_ct_CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -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 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else $as_nop - 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 - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - 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 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else $as_nop - 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 - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_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" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -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 - ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - 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 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else $as_nop - 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 - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_CC+y} -then : - printf %s "(cached) " >&6 -else $as_nop - 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 - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -printf "%s\n" "$ac_ct_CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. -set dummy ${ac_tool_prefix}clang; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else $as_nop - 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 - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}clang" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "clang", so it can be a program name with args. -set dummy clang; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_CC+y} -then : - printf %s "(cached) " >&6 -else $as_nop - 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 - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="clang" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -printf "%s\n" "$ac_ct_CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -fi - - -test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion -version; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int main (void) -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" -# 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. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -printf %s "checking whether the C compiler works... " >&6; } -ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` - -# The possible output files: -ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" - -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { { ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -then : - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else $as_nop - ac_file='' -fi -if test -z "$ac_file" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -printf "%s\n" "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "C compiler cannot create executables -See \`config.log' for more details" "$LINENO" 5; } -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -printf %s "checking for C compiler default output file name... " >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -printf "%s\n" "$ac_file" >&6; } -ac_exeext=$ac_cv_exeext - -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -printf %s "checking for suffix of executables... " >&6; } -if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -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 conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else $as_nop - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest conftest$ac_cv_exeext -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -printf "%s\n" "$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int main (void) -{ -FILE *f = fopen ("conftest.out", "w"); - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -ac_clean_files="$ac_clean_files conftest.out" -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -printf %s "checking whether we are cross compiling... " >&6; } -if test "$cross_compiling" != yes; then - { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if { ac_try='./conftest$ac_cv_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details" "$LINENO" 5; } - fi - fi -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -printf "%s\n" "$cross_compiling" >&6; } - -rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out -ac_clean_files=$ac_clean_files_save -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -printf %s "checking for suffix of object files... " >&6; } -if test ${ac_cv_objext+y} -then : - printf %s "(cached) " >&6 -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int main (void) -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -then : - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else $as_nop - printf "%s\n" "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of object files: cannot compile -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -printf "%s\n" "$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 -printf %s "checking whether the compiler supports GNU C... " >&6; } -if test ${ac_cv_c_compiler_gnu+y} -then : - printf %s "(cached) " >&6 -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int main (void) -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_compiler_gnu=yes -else $as_nop - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+y} -ac_save_CFLAGS=$CFLAGS -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -printf %s "checking whether $CC accepts -g... " >&6; } -if test ${ac_cv_prog_cc_g+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_prog_cc_g=yes -else $as_nop - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - -else $as_nop - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -printf "%s\n" "$ac_cv_prog_cc_g" >&6; } -if test $ac_test_CFLAGS; 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 -ac_prog_cc_stdc=no -if test x$ac_prog_cc_stdc = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 -printf %s "checking for $CC option to enable C11 features... " >&6; } -if test ${ac_cv_prog_cc_c11+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_cv_prog_cc_c11=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_c_conftest_c11_program -_ACEOF -for ac_arg in '' -std=gnu11 -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_prog_cc_c11=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cc_c11" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC -fi - -if test "x$ac_cv_prog_cc_c11" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } -else $as_nop - if test "x$ac_cv_prog_cc_c11" = x -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 -printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } - CC="$CC $ac_cv_prog_cc_c11" -fi - ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 - ac_prog_cc_stdc=c11 -fi -fi -if test x$ac_prog_cc_stdc = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 -printf %s "checking for $CC option to enable C99 features... " >&6; } -if test ${ac_cv_prog_cc_c99+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_cv_prog_cc_c99=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_c_conftest_c99_program -_ACEOF -for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_prog_cc_c99=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cc_c99" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC -fi - -if test "x$ac_cv_prog_cc_c99" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } -else $as_nop - if test "x$ac_cv_prog_cc_c99" = x -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 -printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } - CC="$CC $ac_cv_prog_cc_c99" -fi - ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 - ac_prog_cc_stdc=c99 -fi -fi -if test x$ac_prog_cc_stdc = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 -printf %s "checking for $CC option to enable C89 features... " >&6; } -if test ${ac_cv_prog_cc_c89+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_c_conftest_c89_program -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC -fi - -if test "x$ac_cv_prog_cc_c89" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } -else $as_nop - if test "x$ac_cv_prog_cc_c89" = x -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } - CC="$CC $ac_cv_prog_cc_c89" -fi - ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 - ac_prog_cc_stdc=c89 -fi -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_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 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 -printf %s "checking whether $CC understands -c and -o together... " >&6; } -if test ${am_cv_prog_cc_c_o+y} -then : - printf %s "(cached) " >&6 -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int main (void) -{ - - ; - return 0; -} -_ACEOF - # Make sure it works both with $CC and with simple cc. - # Following AC_PROG_CC_C_O, we do the test twice because some - # compilers refuse to overwrite an existing .o file with -o, - # though they will create one. - am_cv_prog_cc_c_o=yes - for am_i in 1 2; do - if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 - ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } \ - && test -f conftest2.$ac_objext; then - : OK - else - am_cv_prog_cc_c_o=no - break - fi - done - rm -f core conftest* - unset am_i -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 -printf "%s\n" "$am_cv_prog_cc_c_o" >&6; } -if test "$am_cv_prog_cc_c_o" != yes; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -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_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 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -printf %s "checking how to run the C preprocessor... " >&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+y} -then : - printf %s "(cached) " >&6 -else $as_nop - # Double quotes because $CC needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" 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 confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : - -else $as_nop - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : - # Broken: success on invalid input. -continue -else $as_nop - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i 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 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -printf "%s\n" "$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 confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : - -else $as_nop - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : - # Broken: success on invalid input. -continue -else $as_nop - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok -then : - -else $as_nop - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -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 - - - IFS=$xc_prog_cc_prev_IFS - LIBS=$xc_prog_cc_prev_LIBS - CFLAGS=$xc_prog_cc_prev_CFLAGS - LDFLAGS=$xc_prog_cc_prev_LDFLAGS - CPPFLAGS=$xc_prog_cc_prev_CPPFLAGS - - - - - - -ac_header= ac_cache= -for ac_item in $ac_header_c_list -do - if test $ac_cache; then - ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" - if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then - printf "%s\n" "#define $ac_item 1" >> confdefs.h - fi - ac_header= ac_cache= - elif test $ac_header; then - ac_cache=$ac_item - else - ac_header=$ac_item - fi -done - - - - - - - - -if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes -then : - -printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h - -fi - - for ac_header in stdatomic.h -do : - ac_fn_c_check_header_compile "$LINENO" "stdatomic.h" "ac_cv_header_stdatomic_h" "$ac_includes_default" -if test "x$ac_cv_header_stdatomic_h" = xyes -then : - printf "%s\n" "#define HAVE_STDATOMIC_H 1" >>confdefs.h - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if _Atomic is available" >&5 -printf %s "checking if _Atomic is available... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_unistd - -int main (void) -{ - - _Atomic int i = 0; - i = 4; // Force an atomic-write operation. - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_ATOMIC 1" >>confdefs.h - - tst_atomic="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_atomic="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - -fi - -done - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -printf %s "checking for a sed that does not truncate output... " >&6; } -if test ${ac_cv_path_SED+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for ac_i in 1 2 3 4 5 6 7; do - ac_script="$ac_script$as_nl$ac_script" - done - echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed - { ac_script=; unset ac_script;} - if test -z "$SED"; then - ac_path_SED_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_prog in sed gsed - do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_SED" || continue -# Check for GNU ac_path_SED and select it if it is found. - # Check for GNU $ac_path_SED -case `"$ac_path_SED" --version 2>&1` in -*GNU*) - ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; -*) - ac_count=0 - printf %s 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - printf "%s\n" '' >> "conftest.nl" - "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_SED_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_SED="$ac_path_SED" - ac_path_SED_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_SED_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_SED"; then - as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 - fi -else - ac_cv_path_SED=$SED -fi - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -printf "%s\n" "$ac_cv_path_SED" >&6; } - SED="$ac_cv_path_SED" - rm -f conftest.sed - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for code coverage support" >&5 -printf %s "checking for code coverage support... " >&6; } - coverage="no" - curl_coverage_msg="disabled" - - # Check whether --enable-code-coverage was given. -if test ${enable_code_coverage+y} -then : - enableval=$enable_code_coverage; coverage="$enableval" -fi - - - if test "$GCC" != "yes" -then : - coverage="no" -fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $coverage" >&5 -printf "%s\n" "$coverage" >&6; } - - if test "x$coverage" = "xyes"; then - curl_coverage_msg="enabled" - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcov", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcov; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_GCOV+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$GCOV"; then - ac_cv_prog_GCOV="$GCOV" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_GCOV="${ac_tool_prefix}gcov" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -GCOV=$ac_cv_prog_GCOV -if test -n "$GCOV"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GCOV" >&5 -printf "%s\n" "$GCOV" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_GCOV"; then - ac_ct_GCOV=$GCOV - # Extract the first word of "gcov", so it can be a program name with args. -set dummy gcov; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_GCOV+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_GCOV"; then - ac_cv_prog_ac_ct_GCOV="$ac_ct_GCOV" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_GCOV="gcov" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_GCOV=$ac_cv_prog_ac_ct_GCOV -if test -n "$ac_ct_GCOV"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_GCOV" >&5 -printf "%s\n" "$ac_ct_GCOV" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_ct_GCOV" = x; then - GCOV="gcov" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - GCOV=$ac_ct_GCOV - fi -else - GCOV="$ac_cv_prog_GCOV" -fi - - if test -z "$GCOV"; then - as_fn_error $? "needs gcov for code coverage" "$LINENO" 5 - fi - # Extract the first word of "lcov", so it can be a program name with args. -set dummy lcov; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_LCOV+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$LCOV"; then - ac_cv_prog_LCOV="$LCOV" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_LCOV="lcov" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -LCOV=$ac_cv_prog_LCOV -if test -n "$LCOV"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LCOV" >&5 -printf "%s\n" "$LCOV" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - if test -z "$LCOV"; then - as_fn_error $? "needs lcov for code coverage" "$LINENO" 5 - fi - - CPPFLAGS="$CPPFLAGS -DNDEBUG" - CFLAGS="$CFLAGS -O0 -g -fprofile-arcs -ftest-coverage" - LIBS="$LIBS -lgcov" - fi - - -am__api_version='1.16' - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 -printf %s "checking whether build environment is sane... " >&6; } -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[\\\"\#\$\&\'\`$am_lf]*) - as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; -esac -case $srcdir in - *[\\\"\#\$\&\'\`$am_lf\ \ ]*) - as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; -esac - -# 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 ( - am_has_slept=no - for am_try in 1 2; do - echo "timestamp, slept: $am_has_slept" > conftest.file - 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 - 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". - as_fn_error $? "ls -t appears to fail. Make sure there is not a broken - alias in your environment" "$LINENO" 5 - fi - if test "$2" = conftest.file || test $am_try -eq 2; then - break - fi - # Just in case. - sleep 1 - am_has_slept=yes - done - test "$2" = conftest.file - ) -then - # Ok. - : -else - as_fn_error $? "newly created file is older than distributed files! -Check your system clock" "$LINENO" 5 -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -# If we didn't sleep, we still need to ensure time stamps of config.status and -# generated files are strictly newer. -am_sleep_pid= -if grep 'slept: no' conftest.file >/dev/null 2>&1; then - ( sleep 1 ) & - am_sleep_pid=$! -fi - -rm -f conftest.file - -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 $. -# By default was `s,x,x', remove it if useless. -ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' -program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_script"` - - - if test x"${MISSING+set}" != xset; then - MISSING="\${SHELL} '$am_aux_dir/missing'" -fi -# Use eval to expand $SHELL -if eval "$MISSING --is-lightweight"; then - am_missing_run="$MISSING " -else - am_missing_run= - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 -printf "%s\n" "$as_me: WARNING: 'missing' script is too old or missing" >&2;} -fi - -if test x"${install_sh+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi - -# 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 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_STRIP+y} -then : - printf %s "(cached) " >&6 -else $as_nop - 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 - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -printf "%s\n" "$STRIP" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "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 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_STRIP+y} -then : - printf %s "(cached) " >&6 -else $as_nop - 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 - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="strip" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -printf "%s\n" "$ac_ct_STRIP" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 -printf %s "checking for a race-free mkdir -p... " >&6; } -if test -z "$MKDIR_P"; then - if test ${ac_cv_path_mkdir+y} -then : - printf %s "(cached) " >&6 -else $as_nop - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_prog in mkdir gmkdir; do - for ac_exec_ext in '' $ac_executable_extensions; do - as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue - case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( - 'mkdir ('*'coreutils) '* | \ - 'BusyBox '* | \ - 'mkdir (fileutils) '4.1*) - ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext - break 3;; - esac - done - done - done -IFS=$as_save_IFS - -fi - - test -d ./--version && rmdir ./--version - if test ${ac_cv_path_mkdir+y}; then - MKDIR_P="$ac_cv_path_mkdir -p" - else - # As a last resort, use the slow shell script. Don't cache a - # value for MKDIR_P within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - MKDIR_P="$ac_install_sh -d" - fi -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 -printf "%s\n" "$MKDIR_P" >&6; } - -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 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_AWK+y} -then : - printf %s "(cached) " >&6 -else $as_nop - 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 - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_AWK="$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -printf "%s\n" "$AWK" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - test -n "$AWK" && break -done - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } -set x ${MAKE-make} -ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if eval test \${ac_cv_prog_make_${ac_make}_set+y} -then : - printf %s "(cached) " >&6 -else $as_nop - cat >conftest.make <<\_ACEOF -SHELL = /bin/sh -all: - @echo '@@@%%%=$(MAKE)=@@@%%%' -_ACEOF -# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. -case `${MAKE-make} -f conftest.make 2>/dev/null` in - *@@@%%%=?*=@@@%%%*) - eval ac_cv_prog_make_${ac_make}_set=yes;; - *) - eval ac_cv_prog_make_${ac_make}_set=no;; -esac -rm -f conftest.make -fi -if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - SET_MAKE= -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - SET_MAKE="MAKE=${MAKE-make}" -fi - -rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null - -DEPDIR="${am__leading_dot}deps" - -ac_config_commands="$ac_config_commands depfiles" - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 -printf %s "checking whether ${MAKE-make} supports the include directive... " >&6; } -cat > confinc.mk << 'END' -am__doit: - @echo this is the am__doit target >confinc.out -.PHONY: am__doit -END -am__include="#" -am__quote= -# BSD make does it like this. -echo '.include "confinc.mk" # ignored' > confmf.BSD -# Other make implementations (GNU, Solaris 10, AIX) do it like this. -echo 'include confinc.mk # ignored' > confmf.GNU -_am_result=no -for s in GNU BSD; do - { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 - (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - case $?:`cat confinc.out 2>/dev/null` in #( - '0:this is the am__doit target') : - case $s in #( - BSD) : - am__include='.include' am__quote='"' ;; #( - *) : - am__include='include' am__quote='' ;; -esac ;; #( - *) : - ;; -esac - if test "$am__include" != "#"; then - _am_result="yes ($s style)" - break - fi -done -rm -f confinc.* confmf.* -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 -printf "%s\n" "${_am_result}" >&6; } - -# Check whether --enable-dependency-tracking was given. -if test ${enable_dependency_tracking+y} -then : - enableval=$enable_dependency_tracking; -fi - -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' - am__nodep='_no' -fi - if test "x$enable_dependency_tracking" != xno; then - AMDEP_TRUE= - AMDEP_FALSE='#' -else - AMDEP_TRUE='#' - AMDEP_FALSE= -fi - - -## --------------------------------------- ## -## Start of automake initialization code ## -## --------------------------------------- ## - -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - am__isrc=' -I$(srcdir)' - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi - - -# Define the identity of the package. - PACKAGE='curl' - VERSION='-' - - -printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h - - -printf "%s\n" "#define VERSION \"$VERSION\"" >>confdefs.h - -# 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"} - -# For better backward compatibility. To be removed once Automake 1.9.x -# dies out for good. For more background, see: -# -# -mkdir_p='$(MKDIR_P)' - -# We need awk for the "check" target (and possibly the TAP driver). The -# system "awk" is bad on some platforms. -# Always define AMTAR for backward compatibility. Yes, it's still used -# in the wild :-( We should find a proper way to deprecate it ... -AMTAR='$${TAR-tar}' - - -# We'll loop over all known methods to create a tar archive until one works. -_am_tools='gnutar pax cpio none' - -am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' - - - - - -depcc="$CC" am_compiler_list= - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -printf %s "checking dependency style of $depcc... " >&6; } -if test ${am_cv_CC_dependencies_compiler_type+y} -then : - printf %s "(cached) " >&6 -else $as_nop - 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". - rm -rf conftest.dir - 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 - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - 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 - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # 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. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with - # Solaris 10 /bin/sh. - echo '/* dummy */' > sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # 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. Also, some Intel - # versions had trouble with output in subdirs. - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - 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 - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok '-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CC_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CC_dependencies_compiler_type=none -fi - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -printf "%s\n" "$am_cv_CC_dependencies_compiler_type" >&6; } -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then - am__fastdepCC_TRUE= - am__fastdepCC_FALSE='#' -else - am__fastdepCC_TRUE='#' - am__fastdepCC_FALSE= -fi - - -# Variables for tags utilities; see am/tags.am -if test -z "$CTAGS"; then - CTAGS=ctags -fi - -if test -z "$ETAGS"; then - ETAGS=etags -fi - -if test -z "$CSCOPE"; then - CSCOPE=cscope -fi - - - -# POSIX will say in a future version that running "rm -f" with no argument -# is OK; and we want to be able to make that assumption in our Makefile -# recipes. So use an aggressive probe to check that the usage we want is -# actually supported "in the wild" to an acceptable degree. -# See automake bug#10828. -# To make any issue more visible, cause the running configure to be aborted -# by default if the 'rm' program in use doesn't match our expectations; the -# user can still override this though. -if rm -f && rm -fr && rm -rf; then : OK; else - cat >&2 <<'END' -Oops! - -Your 'rm' program seems unable to run without file operands specified -on the command line, even when the '-f' option is present. This is contrary -to the behaviour of most rm programs out there, and not conforming with -the upcoming POSIX standard: - -Please tell bug-automake@gnu.org about your system, including the value -of your $PATH and any error possibly output before this message. This -can help us improve future automake versions. - -END - if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then - echo 'Configuration will proceed anyway, since you have set the' >&2 - echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 - echo >&2 - else - cat >&2 <<'END' -Aborting the configuration process, to ensure you take notice of the issue. - -You can download and install GNU coreutils to get an 'rm' implementation -that behaves properly: . - -If you want to complete the configuration process using your problematic -'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM -to "yes", and re-run configure. - -END - as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 - fi -fi - -## ------------------------------------- ## -## End of automake initialization code ## -## ------------------------------------- ## - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking curl version" >&5 -printf %s "checking curl version... " >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CURLVERSION" >&5 -printf "%s\n" "$CURLVERSION" >&6; } - - - -VERSIONNUM=`$SED -ne 's/^#define LIBCURL_VERSION_NUM 0x\([0-9A-Fa-f]*\).*/\1/p' ${srcdir}/include/curl/curlver.h` - - -PKGADD_PKG="HAXXcurl" -PKGADD_NAME="curl - a client that groks URLs" -PKGADD_VENDOR="curl.se" - - - - - curl_ssl_msg="no (--with-{openssl,gnutls,nss,mbedtls,wolfssl,schannel,secure-transport,amissl,bearssl,rustls} )" - curl_ssh_msg="no (--with-{libssh,libssh2})" - curl_zlib_msg="no (--with-zlib)" - curl_brotli_msg="no (--with-brotli)" - curl_zstd_msg="no (--with-zstd)" - curl_gss_msg="no (--with-gssapi)" - curl_gsasl_msg="no (--with-gsasl)" -curl_tls_srp_msg="no (--enable-tls-srp)" - curl_res_msg="default (--enable-ares / --enable-threaded-resolver)" - curl_ipv6_msg="no (--enable-ipv6)" -curl_unix_sockets_msg="no (--enable-unix-sockets)" - curl_idn_msg="no (--with-{libidn2,winidn})" - curl_manual_msg="no (--enable-manual)" -curl_libcurl_msg="enabled (--disable-libcurl-option)" -curl_verbose_msg="enabled (--disable-verbose)" - curl_sspi_msg="no (--enable-sspi)" - curl_ldap_msg="no (--enable-ldap / --with-ldap-lib / --with-lber-lib)" - curl_ldaps_msg="no (--enable-ldaps)" - curl_rtsp_msg="no (--enable-rtsp)" - curl_rtmp_msg="no (--with-librtmp)" - curl_psl_msg="no (--with-libpsl)" - curl_altsvc_msg="enabled (--disable-alt-svc)" -curl_headers_msg="enabled (--disable-headers-api)" - curl_hsts_msg="enabled (--disable-hsts)" - ssl_backends= - curl_h1_msg="enabled (internal)" - curl_h2_msg="no (--with-nghttp2, --with-hyper)" - curl_h3_msg="no (--with-ngtcp2, --with-quiche --with-msh3)" - -enable_altsvc="yes" -hsts="yes" - -INITIAL_LDFLAGS=$LDFLAGS -INITIAL_LIBS=$LIBS - -OPT_SCHANNEL=no - -# Check whether --with-schannel was given. -if test ${with_schannel+y} -then : - withval=$with_schannel; OPT_SCHANNEL=$withval - TLSCHOICE="schannel" -fi - - -OPT_SECURETRANSPORT=no - -# Check whether --with-secure-transport was given. -if test ${with_secure_transport+y} -then : - withval=$with_secure_transport; - OPT_SECURETRANSPORT=$withval - TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }Secure-Transport" - -fi - - -OPT_AMISSL=no - -# Check whether --with-amissl was given. -if test ${with_amissl+y} -then : - withval=$with_amissl; - OPT_AMISSL=$withval - TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }AmiSSL" - -fi - - -OPT_OPENSSL=no -ca="no" - -# Check whether --with-ssl was given. -if test ${with_ssl+y} -then : - withval=$with_ssl; - OPT_SSL=$withval - OPT_OPENSSL=$withval - if test X"$withval" != Xno; then - TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }OpenSSL" - else - SSL_DISABLED="D" - fi - -fi - - - -# Check whether --with-openssl was given. -if test ${with_openssl+y} -then : - withval=$with_openssl; - OPT_OPENSSL=$withval - if test X"$withval" != Xno; then - TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }OpenSSL" - fi - -fi - - -OPT_GNUTLS=no - -# Check whether --with-gnutls was given. -if test ${with_gnutls+y} -then : - withval=$with_gnutls; - OPT_GNUTLS=$withval - if test X"$withval" != Xno; then - TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }GnuTLS" - fi - -fi - - -OPT_MBEDTLS=no - -# Check whether --with-mbedtls was given. -if test ${with_mbedtls+y} -then : - withval=$with_mbedtls; - OPT_MBEDTLS=$withval - if test X"$withval" != Xno; then - TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }mbedTLS" - fi - -fi - - -OPT_WOLFSSL=no - -# Check whether --with-wolfssl was given. -if test ${with_wolfssl+y} -then : - withval=$with_wolfssl; - OPT_WOLFSSL=$withval - if test X"$withval" != Xno; then - TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }wolfSSL" - fi - -fi - - -OPT_BEARSSL=no - -# Check whether --with-bearssl was given. -if test ${with_bearssl+y} -then : - withval=$with_bearssl; - OPT_BEARSSL=$withval - if test X"$withval" != Xno; then - TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }BearSSL" - fi - -fi - - -OPT_RUSTLS=no - -# Check whether --with-rustls was given. -if test ${with_rustls+y} -then : - withval=$with_rustls; - OPT_RUSTLS=$withval - if test X"$withval" != Xno; then - TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }rustls" - experimental="$experimental rustls" - fi - -fi - - -OPT_NSS_AWARE=no - -# Check whether --with-nss-deprecated was given. -if test ${with_nss_deprecated+y} -then : - withval=$with_nss_deprecated; if test X"$withval" != Xno; then - OPT_NSS_AWARE=$withval - fi - -fi - - -OPT_NSS=no - -# Check whether --with-nss was given. -if test ${with_nss+y} -then : - withval=$with_nss; OPT_NSS=$withval - if test X"$withval" != Xno; then - - if test X"$OPT_NSS_AWARE" = "Xno" ; then - as_fn_error $? "NSS use must be confirmed using --with-nss-deprecated. NSS support will be dropped from curl in August 2022. See docs/DEPRECATE.md" "$LINENO" 5 - fi - - TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }NSS" - fi - -fi - - -if test -z "$TLSCHOICE"; then - if test "x$OPT_SSL" != "xno"; then - as_fn_error $? "select TLS backend(s) or disable TLS with --without-ssl. - -Select from these: - - --with-amissl - --with-bearssl - --with-gnutls - --with-mbedtls - --with-nss - --with-openssl (also works for BoringSSL and libressl) - --with-rustls - --with-schannel - --with-secure-transport - --with-wolfssl -" "$LINENO" 5 - fi -fi - - -# Check whether --with-darwinssl was given. -if test ${with_darwinssl+y} -then : - withval=$with_darwinssl; as_fn_error $? "--with-darwin-ssl no longer works!" "$LINENO" 5 -fi - - - - - - # Make sure we can run config.sub. -$SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -printf %s "checking build system type... " >&6; } -if test ${ac_cv_build+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` -test "x$ac_build_alias" = x && - as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -printf "%s\n" "$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -printf %s "checking host system type... " >&6; } -if test ${ac_cv_host+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || - as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 -fi - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -printf "%s\n" "$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - - -printf "%s\n" "#define OS \"${host}\"" >>confdefs.h - - -# Silence warning: ar: 'u' modifier ignored since 'D' is the default -AR_FLAGS=cr - - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -printf %s "checking for grep that handles long lines and -e... " >&6; } -if test ${ac_cv_path_GREP+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_prog in grep ggrep - do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_GREP" || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - printf %s 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - printf "%s\n" 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -printf "%s\n" "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -printf %s "checking for egrep... " >&6; } -if test ${ac_cv_path_EGREP+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_prog in egrep - do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_EGREP" || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - printf %s 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - printf "%s\n" 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -printf "%s\n" "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if OS is AIX (to define _ALL_SOURCE)" >&5 -printf %s "checking if OS is AIX (to define _ALL_SOURCE)... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#ifdef _AIX - yes_this_is_aix -#endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "yes_this_is_aix" >/dev/null 2>&1 -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - printf "%s\n" "#define _ALL_SOURCE 1" >>confdefs.h - - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -fi -rm -rf conftest* - - - - - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if _THREAD_SAFE is already defined" >&5 -printf %s "checking if _THREAD_SAFE is already defined... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - -int main (void) -{ - -#ifdef _THREAD_SAFE - int dummy=1; -#else - force compilation error -#endif - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tmp_thread_safe_initially_defined="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tmp_thread_safe_initially_defined="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - # - if test "$tmp_thread_safe_initially_defined" = "no"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if _THREAD_SAFE is actually needed" >&5 -printf %s "checking if _THREAD_SAFE is actually needed... " >&6; } - - case $host_os in - aix[123].* | aix4.[012].*) - tmp_need_thread_safe="no" - ;; - aix*) - tmp_need_thread_safe="yes" - ;; - *) - tmp_need_thread_safe="no" - ;; - esac - - if test "$tmp_need_thread_safe" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if _THREAD_SAFE is onwards defined" >&5 -printf %s "checking if _THREAD_SAFE is onwards defined... " >&6; } - if test "$tmp_thread_safe_initially_defined" = "yes" || - test "$tmp_need_thread_safe" = "yes"; then - - -printf "%s\n" "#define NEED_THREAD_SAFE 1" >>confdefs.h - -cat >>confdefs.h <<_EOF -#ifndef _THREAD_SAFE -# define _THREAD_SAFE -#endif -_EOF - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - fi - # - - - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if _REENTRANT is already defined" >&5 -printf %s "checking if _REENTRANT is already defined... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - -int main (void) -{ - -#ifdef _REENTRANT - int dummy=1; -#else - force compilation error -#endif - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tmp_reentrant_initially_defined="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tmp_reentrant_initially_defined="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - # - if test "$tmp_reentrant_initially_defined" = "no"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if _REENTRANT is actually needed" >&5 -printf %s "checking if _REENTRANT is actually needed... " >&6; } - - case $host_os in - solaris*) - tmp_need_reentrant="yes" - ;; - *) - tmp_need_reentrant="no" - ;; - esac - - if test "$tmp_need_reentrant" = "no"; then - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#include - -int main (void) -{ - - if(0 != errno) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - tmp_errno="yes" - -else $as_nop - - tmp_errno="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - if test "$tmp_errno" = "yes"; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#include - -int main (void) -{ - -#ifdef errno - int dummy=1; -#else - force compilation error -#endif - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - tmp_errno="errno_macro_defined" - -else $as_nop - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#define _REENTRANT -#include - -int main (void) -{ - -#ifdef errno - int dummy=1; -#else - force compilation error -#endif - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - tmp_errno="errno_macro_needs_reentrant" - tmp_need_reentrant="yes" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - - fi - if test "$tmp_need_reentrant" = "no"; then - - if test "$tmp_need_reentrant" = "no"; then - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#define gmtime_r innocuous_gmtime_r -#ifdef __STDC__ -# include -#else -# include -#endif -#undef gmtime_r -#ifdef __cplusplus -extern "C" -#endif -char gmtime_r (); -#if defined __stub_gmtime_r || defined __stub___gmtime_r -choke me -#endif - -int main (void) -{ -return gmtime_r (); - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - tmp_gmtime_r="yes" - -else $as_nop - - tmp_gmtime_r="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - if test "$tmp_gmtime_r" = "yes"; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "gmtime_r" >/dev/null 2>&1 -then : - - tmp_gmtime_r="proto_declared" - -else $as_nop - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#define _REENTRANT -#include -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "gmtime_r" >/dev/null 2>&1 -then : - - tmp_gmtime_r="proto_needs_reentrant" - tmp_need_reentrant="yes" - -fi -rm -rf conftest* - - -fi -rm -rf conftest* - - fi - - fi - if test "$tmp_need_reentrant" = "no"; then - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#define localtime_r innocuous_localtime_r -#ifdef __STDC__ -# include -#else -# include -#endif -#undef localtime_r -#ifdef __cplusplus -extern "C" -#endif -char localtime_r (); -#if defined __stub_localtime_r || defined __stub___localtime_r -choke me -#endif - -int main (void) -{ -return localtime_r (); - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - tmp_localtime_r="yes" - -else $as_nop - - tmp_localtime_r="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - if test "$tmp_localtime_r" = "yes"; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "localtime_r" >/dev/null 2>&1 -then : - - tmp_localtime_r="proto_declared" - -else $as_nop - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#define _REENTRANT -#include -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "localtime_r" >/dev/null 2>&1 -then : - - tmp_localtime_r="proto_needs_reentrant" - tmp_need_reentrant="yes" - -fi -rm -rf conftest* - - -fi -rm -rf conftest* - - fi - - fi - if test "$tmp_need_reentrant" = "no"; then - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#define strerror_r innocuous_strerror_r -#ifdef __STDC__ -# include -#else -# include -#endif -#undef strerror_r -#ifdef __cplusplus -extern "C" -#endif -char strerror_r (); -#if defined __stub_strerror_r || defined __stub___strerror_r -choke me -#endif - -int main (void) -{ -return strerror_r (); - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - tmp_strerror_r="yes" - -else $as_nop - - tmp_strerror_r="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - if test "$tmp_strerror_r" = "yes"; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "strerror_r" >/dev/null 2>&1 -then : - - tmp_strerror_r="proto_declared" - -else $as_nop - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#define _REENTRANT -#include -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "strerror_r" >/dev/null 2>&1 -then : - - tmp_strerror_r="proto_needs_reentrant" - tmp_need_reentrant="yes" - -fi -rm -rf conftest* - - -fi -rm -rf conftest* - - fi - - fi - if test "$tmp_need_reentrant" = "no"; then - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#define strtok_r innocuous_strtok_r -#ifdef __STDC__ -# include -#else -# include -#endif -#undef strtok_r -#ifdef __cplusplus -extern "C" -#endif -char strtok_r (); -#if defined __stub_strtok_r || defined __stub___strtok_r -choke me -#endif - -int main (void) -{ -return strtok_r (); - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - tmp_strtok_r="yes" - -else $as_nop - - tmp_strtok_r="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - if test "$tmp_strtok_r" = "yes"; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "strtok_r" >/dev/null 2>&1 -then : - - tmp_strtok_r="proto_declared" - -else $as_nop - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#define _REENTRANT -#include -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "strtok_r" >/dev/null 2>&1 -then : - - tmp_strtok_r="proto_needs_reentrant" - tmp_need_reentrant="yes" - -fi -rm -rf conftest* - - -fi -rm -rf conftest* - - fi - - fi - if test "$tmp_need_reentrant" = "no"; then - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#define gethostbyname_r innocuous_gethostbyname_r -#ifdef __STDC__ -# include -#else -# include -#endif -#undef gethostbyname_r -#ifdef __cplusplus -extern "C" -#endif -char gethostbyname_r (); -#if defined __stub_gethostbyname_r || defined __stub___gethostbyname_r -choke me -#endif - -int main (void) -{ -return gethostbyname_r (); - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - tmp_gethostbyname_r="yes" - -else $as_nop - - tmp_gethostbyname_r="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - if test "$tmp_gethostbyname_r" = "yes"; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "gethostbyname_r" >/dev/null 2>&1 -then : - - tmp_gethostbyname_r="proto_declared" - -else $as_nop - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#define _REENTRANT -#include -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "gethostbyname_r" >/dev/null 2>&1 -then : - - tmp_gethostbyname_r="proto_needs_reentrant" - tmp_need_reentrant="yes" - -fi -rm -rf conftest* - - -fi -rm -rf conftest* - - fi - - fi - if test "$tmp_need_reentrant" = "no"; then - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#define getprotobyname_r innocuous_getprotobyname_r -#ifdef __STDC__ -# include -#else -# include -#endif -#undef getprotobyname_r -#ifdef __cplusplus -extern "C" -#endif -char getprotobyname_r (); -#if defined __stub_getprotobyname_r || defined __stub___getprotobyname_r -choke me -#endif - -int main (void) -{ -return getprotobyname_r (); - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - tmp_getprotobyname_r="yes" - -else $as_nop - - tmp_getprotobyname_r="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - if test "$tmp_getprotobyname_r" = "yes"; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "getprotobyname_r" >/dev/null 2>&1 -then : - - tmp_getprotobyname_r="proto_declared" - -else $as_nop - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#define _REENTRANT -#include -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "getprotobyname_r" >/dev/null 2>&1 -then : - - tmp_getprotobyname_r="proto_needs_reentrant" - tmp_need_reentrant="yes" - -fi -rm -rf conftest* - - -fi -rm -rf conftest* - - fi - - fi - - fi - if test "$tmp_need_reentrant" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if _REENTRANT is onwards defined" >&5 -printf %s "checking if _REENTRANT is onwards defined... " >&6; } - if test "$tmp_reentrant_initially_defined" = "yes" || - test "$tmp_need_reentrant" = "yes"; then - - -printf "%s\n" "#define NEED_REENTRANT 1" >>confdefs.h - -cat >>confdefs.h <<_EOF -#ifndef _REENTRANT -# define _REENTRANT -#endif -_EOF - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - fi - # - - -# Check whether --enable-largefile was given. -if test ${enable_largefile+y} -then : - enableval=$enable_largefile; -fi - -if test "$enable_largefile" != no; then - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 -printf %s "checking for special C compiler options needed for large files... " >&6; } -if test ${ac_cv_sys_largefile_CC+y} -then : - printf %s "(cached) " >&6 -else $as_nop - 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 confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end 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 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int main (void) -{ - - ; - return 0; -} -_ACEOF - if ac_fn_c_try_compile "$LINENO" -then : - break -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - CC="$CC -n32" - if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_sys_largefile_CC=' -n32'; break -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - break - done - CC=$ac_save_CC - rm -f conftest.$ac_ext - fi -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 -printf "%s\n" "$ac_cv_sys_largefile_CC" >&6; } - if test "$ac_cv_sys_largefile_CC" != no; then - CC=$CC$ac_cv_sys_largefile_CC - fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 -printf %s "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } -if test ${ac_cv_sys_file_offset_bits+y} -then : - printf %s "(cached) " >&6 -else $as_nop - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end 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 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_sys_file_offset_bits=no; break -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end 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 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_sys_file_offset_bits=64; break -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ac_cv_sys_file_offset_bits=unknown - break -done -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 -printf "%s\n" "$ac_cv_sys_file_offset_bits" >&6; } -case $ac_cv_sys_file_offset_bits in #( - no | unknown) ;; - *) -printf "%s\n" "#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits" >>confdefs.h -;; -esac -rm -rf conftest* - if test $ac_cv_sys_file_offset_bits = unknown; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 -printf %s "checking for _LARGE_FILES value needed for large files... " >&6; } -if test ${ac_cv_sys_large_files+y} -then : - printf %s "(cached) " >&6 -else $as_nop - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end 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 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_sys_large_files=no; break -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end 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 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_sys_large_files=1; break -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ac_cv_sys_large_files=unknown - break -done -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 -printf "%s\n" "$ac_cv_sys_large_files" >&6; } -case $ac_cv_sys_large_files in #( - no | unknown) ;; - *) -printf "%s\n" "#define _LARGE_FILES $ac_cv_sys_large_files" >>confdefs.h -;; -esac -rm -rf conftest* - fi -fi - - -case `pwd` in - *\ * | *\ *) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 -printf "%s\n" "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; -esac - - - -macro_version='2.4.7' -macro_revision='2.4.7' - - - - - - - - - - - - - - -ltmain=$ac_aux_dir/ltmain.sh - -# Backslashify metacharacters that are still active within -# double-quoted strings. -sed_quote_subst='s/\(["`$\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' - -ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 -printf %s "checking how to print strings... " >&6; } -# Test print first, because it will be a builtin if present. -if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "" -} - -case $ECHO in - printf*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: printf" >&5 -printf "%s\n" "printf" >&6; } ;; - print*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 -printf "%s\n" "print -r" >&6; } ;; - *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cat" >&5 -printf "%s\n" "cat" >&6; } ;; -esac - - - - - - - - - - - - - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -printf %s "checking for a sed that does not truncate output... " >&6; } -if test ${ac_cv_path_SED+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for ac_i in 1 2 3 4 5 6 7; do - ac_script="$ac_script$as_nl$ac_script" - done - echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed - { ac_script=; unset ac_script;} - if test -z "$SED"; then - ac_path_SED_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_prog in sed gsed - do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_SED" || continue -# Check for GNU ac_path_SED and select it if it is found. - # Check for GNU $ac_path_SED -case `"$ac_path_SED" --version 2>&1` in -*GNU*) - ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; -*) - ac_count=0 - printf %s 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - printf "%s\n" '' >> "conftest.nl" - "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_SED_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_SED="$ac_path_SED" - ac_path_SED_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_SED_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_SED"; then - as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 - fi -else - ac_cv_path_SED=$SED -fi - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -printf "%s\n" "$ac_cv_path_SED" >&6; } - SED="$ac_cv_path_SED" - rm -f conftest.sed - -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" - - - - - - - - - - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 -printf %s "checking for fgrep... " >&6; } -if test ${ac_cv_path_FGREP+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 - then ac_cv_path_FGREP="$GREP -F" - else - if test -z "$FGREP"; then - ac_path_FGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_prog in fgrep - do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_FGREP="$as_dir$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_FGREP" || continue -# Check for GNU ac_path_FGREP and select it if it is found. - # Check for GNU $ac_path_FGREP -case `"$ac_path_FGREP" --version 2>&1` in -*GNU*) - ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; -*) - ac_count=0 - printf %s 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - printf "%s\n" 'FGREP' >> "conftest.nl" - "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_FGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_FGREP="$ac_path_FGREP" - ac_path_FGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_FGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_FGREP"; then - as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_FGREP=$FGREP -fi - - fi -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 -printf "%s\n" "$ac_cv_path_FGREP" >&6; } - FGREP="$ac_cv_path_FGREP" - - -test -z "$GREP" && GREP=grep - - - - - - - - - - - - - - - - - - - -# Check whether --with-gnu-ld was given. -if test ${with_gnu_ld+y} -then : - withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes -else $as_nop - with_gnu_ld=no -fi - -ac_prog=ld -if test yes = "$GCC"; then - # Check if gcc -print-prog-name=ld gives a path. - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -printf %s "checking for ld used by $CC... " >&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. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname 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 yes = "$with_gnu_ld"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -printf %s "checking for GNU ld... " >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -printf %s "checking for non-GNU ld... " >&6; } -fi -if test ${lt_cv_path_LD+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -z "$LD"; then - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD=$ac_dir/$ac_prog - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &5 -printf "%s\n" "$LD" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -printf %s "checking if the linker ($LD) is GNU ld... " >&6; } -if test ${lt_cv_prog_gnu_ld+y} -then : - printf %s "(cached) " >&6 -else $as_nop - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 &5 -printf "%s\n" "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 -printf %s "checking for BSD- or MS-compatible name lister (nm)... " >&6; } -if test ${lt_cv_path_NM+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM=$NM -else - lt_nm_to_check=${ac_tool_prefix}nm - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - tmp_nm=$ac_dir/$lt_tmp_nm - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the 'sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty - case $build_os in - mingw*) lt_bad_file=conftest.nm/nofile ;; - *) lt_bad_file=/dev/null ;; - esac - case `"$tmp_nm" -B $lt_bad_file 2>&1 | $SED '1q'` in - *$lt_bad_file* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break 2 - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | $SED '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break 2 - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS=$lt_save_ifs - done - : ${lt_cv_path_NM=no} -fi -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 -printf "%s\n" "$lt_cv_path_NM" >&6; } -if test no != "$lt_cv_path_NM"; then - NM=$lt_cv_path_NM -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - if test -n "$ac_tool_prefix"; then - for ac_prog in dumpbin "link -dump" - 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 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_DUMPBIN+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$DUMPBIN"; then - ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DUMPBIN=$ac_cv_prog_DUMPBIN -if test -n "$DUMPBIN"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 -printf "%s\n" "$DUMPBIN" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - test -n "$DUMPBIN" && break - done -fi -if test -z "$DUMPBIN"; then - ac_ct_DUMPBIN=$DUMPBIN - for ac_prog in dumpbin "link -dump" -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_DUMPBIN+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_DUMPBIN"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN -if test -n "$ac_ct_DUMPBIN"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 -printf "%s\n" "$ac_ct_DUMPBIN" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - test -n "$ac_ct_DUMPBIN" && break -done - - if test "x$ac_ct_DUMPBIN" = x; then - DUMPBIN=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DUMPBIN=$ac_ct_DUMPBIN - fi -fi - - case `$DUMPBIN -symbols -headers /dev/null 2>&1 | $SED '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols -headers" - ;; - *) - DUMPBIN=: - ;; - esac - fi - - if test : != "$DUMPBIN"; then - NM=$DUMPBIN - fi -fi -test -z "$NM" && NM=nm - - - - - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 -printf %s "checking the name lister ($NM) interface... " >&6; } -if test ${lt_cv_nm_interface+y} -then : - printf %s "(cached) " >&6 -else $as_nop - lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: output\"" >&5) - cat conftest.out >&5 - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest* -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 -printf "%s\n" "$lt_cv_nm_interface" >&6; } - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -printf %s "checking whether ln -s works... " >&6; } -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -printf "%s\n" "no, using $LN_S" >&6; } -fi - -# find the maximum length of command line arguments -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 -printf %s "checking the maximum length of command line arguments... " >&6; } -if test ${lt_cv_sys_max_cmd_len+y} -then : - printf %s "(cached) " >&6 -else $as_nop - i=0 - teststring=ABCD - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - bitrig* | darwin* | dragonfly* | freebsd* | midnightbsd* | netbsd* | openbsd*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - os2*) - # The test takes a long time on OS/2. - lt_cv_sys_max_cmd_len=8192 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | $SED 's/.*[ ]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len" && \ - test undefined != "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test X`env echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test 17 != "$i" # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac - -fi - -if test -n "$lt_cv_sys_max_cmd_len"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 -printf "%s\n" "$lt_cv_sys_max_cmd_len" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5 -printf "%s\n" "none" >&6; } -fi -max_cmd_len=$lt_cv_sys_max_cmd_len - - - - - - -: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi - - - - - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac - - - - - - - - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 -printf %s "checking how to convert $build file names to $host format... " >&6; } -if test ${lt_cv_to_host_file_cmd+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 - ;; - esac - ;; - *-*-cygwin* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin - ;; - esac - ;; - * ) # unhandled hosts (and "normal" native builds) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; -esac - -fi - -to_host_file_cmd=$lt_cv_to_host_file_cmd -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 -printf "%s\n" "$lt_cv_to_host_file_cmd" >&6; } - - - - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 -printf %s "checking how to convert $build file names to toolchain format... " >&6; } -if test ${lt_cv_to_tool_file_cmd+y} -then : - printf %s "(cached) " >&6 -else $as_nop - #assume ordinary cross tools, or native build. -lt_cv_to_tool_file_cmd=func_convert_file_noop -case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 - ;; - esac - ;; -esac - -fi - -to_tool_file_cmd=$lt_cv_to_tool_file_cmd -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 -printf "%s\n" "$lt_cv_to_tool_file_cmd" >&6; } - - - - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 -printf %s "checking for $LD option to reload object files... " >&6; } -if test ${lt_cv_ld_reload_flag+y} -then : - printf %s "(cached) " >&6 -else $as_nop - lt_cv_ld_reload_flag='-r' -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 -printf "%s\n" "$lt_cv_ld_reload_flag" >&6; } -reload_flag=$lt_cv_ld_reload_flag -case $reload_flag in -"" | " "*) ;; -*) reload_flag=" $reload_flag" ;; -esac -reload_cmds='$LD$reload_flag -o $output$reload_objs' -case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - if test yes != "$GCC"; then - reload_cmds=false - fi - ;; - darwin*) - if test yes = "$GCC"; then - reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' - else - reload_cmds='$LD$reload_flag -o $output$reload_objs' - fi - ;; -esac - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}file", so it can be a program name with args. -set dummy ${ac_tool_prefix}file; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_FILECMD+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$FILECMD"; then - ac_cv_prog_FILECMD="$FILECMD" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_FILECMD="${ac_tool_prefix}file" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -FILECMD=$ac_cv_prog_FILECMD -if test -n "$FILECMD"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $FILECMD" >&5 -printf "%s\n" "$FILECMD" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_FILECMD"; then - ac_ct_FILECMD=$FILECMD - # Extract the first word of "file", so it can be a program name with args. -set dummy file; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_FILECMD+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_FILECMD"; then - ac_cv_prog_ac_ct_FILECMD="$ac_ct_FILECMD" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_FILECMD="file" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_FILECMD=$ac_cv_prog_ac_ct_FILECMD -if test -n "$ac_ct_FILECMD"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_FILECMD" >&5 -printf "%s\n" "$ac_ct_FILECMD" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_ct_FILECMD" = x; then - FILECMD=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - FILECMD=$ac_ct_FILECMD - fi -else - FILECMD="$ac_cv_prog_FILECMD" -fi - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. -set dummy ${ac_tool_prefix}objdump; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_OBJDUMP+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$OBJDUMP"; then - ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OBJDUMP=$ac_cv_prog_OBJDUMP -if test -n "$OBJDUMP"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -printf "%s\n" "$OBJDUMP" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OBJDUMP"; then - ac_ct_OBJDUMP=$OBJDUMP - # Extract the first word of "objdump", so it can be a program name with args. -set dummy objdump; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_OBJDUMP+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_OBJDUMP"; then - ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OBJDUMP="objdump" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP -if test -n "$ac_ct_OBJDUMP"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -printf "%s\n" "$ac_ct_OBJDUMP" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_ct_OBJDUMP" = x; then - OBJDUMP="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OBJDUMP=$ac_ct_OBJDUMP - fi -else - OBJDUMP="$ac_cv_prog_OBJDUMP" -fi - -test -z "$OBJDUMP" && OBJDUMP=objdump - - - - - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 -printf %s "checking how to recognize dependent libraries... " >&6; } -if test ${lt_cv_deplibs_check_method+y} -then : - printf %s "(cached) " >&6 -else $as_nop - lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# 'unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [[regex]]' -- check by looking for files in library path -# that responds to the $file_magic_cmd with a given extended regex. -# If you have 'file' or equivalent on your system and you're not sure -# whether 'pass_all' will *always* work, you probably want this one. - -case $host_os in -aix[4-9]*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi[45]*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='$FILECMD -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; - -cygwin*) - # func_win32_libid is a shell function defined in ltmain.sh - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - ;; - -mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump', - # unless we find 'file', for example because we are cross-compiling. - if ( file / ) >/dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly* | midnightbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=$FILECMD - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=$FILECMD - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[3-9]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=$FILECMD - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd* | bitrig*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -os2*) - lt_cv_deplibs_check_method=pass_all - ;; -esac - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 -printf "%s\n" "$lt_cv_deplibs_check_method" >&6; } - -file_magic_glob= -want_nocaseglob=no -if test "$build" = "$host"; then - case $host_os in - mingw* | pw32*) - if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then - want_nocaseglob=yes - else - file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` - fi - ;; - esac -fi - -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - - - - - - - - - - - - - - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. -set dummy ${ac_tool_prefix}dlltool; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_DLLTOOL+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$DLLTOOL"; then - ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DLLTOOL=$ac_cv_prog_DLLTOOL -if test -n "$DLLTOOL"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 -printf "%s\n" "$DLLTOOL" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DLLTOOL"; then - ac_ct_DLLTOOL=$DLLTOOL - # Extract the first word of "dlltool", so it can be a program name with args. -set dummy dlltool; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_DLLTOOL+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_DLLTOOL"; then - ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DLLTOOL="dlltool" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL -if test -n "$ac_ct_DLLTOOL"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 -printf "%s\n" "$ac_ct_DLLTOOL" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_ct_DLLTOOL" = x; then - DLLTOOL="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DLLTOOL=$ac_ct_DLLTOOL - fi -else - DLLTOOL="$ac_cv_prog_DLLTOOL" -fi - -test -z "$DLLTOOL" && DLLTOOL=dlltool - - - - - - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 -printf %s "checking how to associate runtime and link libraries... " >&6; } -if test ${lt_cv_sharedlib_from_linklib_cmd+y} -then : - printf %s "(cached) " >&6 -else $as_nop - lt_cv_sharedlib_from_linklib_cmd='unknown' - -case $host_os in -cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh; - # decide which one to use based on capabilities of $DLLTOOL - case `$DLLTOOL --help 2>&1` in - *--identify-strict*) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib - ;; - *) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback - ;; - esac - ;; -*) - # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd=$ECHO - ;; -esac - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 -printf "%s\n" "$lt_cv_sharedlib_from_linklib_cmd" >&6; } -sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO - - - - - - - -if test -n "$ac_tool_prefix"; then - for ac_prog in ar - 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 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_AR+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_AR="$ac_tool_prefix$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -printf "%s\n" "$AR" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - test -n "$AR" && break - done -fi -if test -z "$AR"; then - ac_ct_AR=$AR - for ac_prog in ar -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_AR+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_AR="$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -printf "%s\n" "$ac_ct_AR" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - test -n "$ac_ct_AR" && break -done - - if test "x$ac_ct_AR" = x; then - AR="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AR=$ac_ct_AR - fi -fi - -: ${AR=ar} - - - - - - -# Use ARFLAGS variable as AR's operation code to sync the variable naming with -# Automake. If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have -# higher priority because thats what people were doing historically (setting -# ARFLAGS for automake and AR_FLAGS for libtool). FIXME: Make the AR_FLAGS -# variable obsoleted/removed. - -test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr} -lt_ar_flags=$AR_FLAGS - - - - - - -# Make AR_FLAGS overridable by 'make ARFLAGS='. Don't try to run-time override -# by AR_FLAGS because that was never working and AR_FLAGS is about to die. - - - - - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 -printf %s "checking for archiver @FILE support... " >&6; } -if test ${lt_cv_ar_at_file+y} -then : - printf %s "(cached) " >&6 -else $as_nop - lt_cv_ar_at_file=no - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - echo conftest.$ac_objext > conftest.lst - lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test 0 -eq "$ac_status"; then - # Ensure the archiver fails upon bogus file names. - rm -f conftest.$ac_objext libconftest.a - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test 0 -ne "$ac_status"; then - lt_cv_ar_at_file=@ - fi - fi - rm -f conftest.* libconftest.a - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 -printf "%s\n" "$lt_cv_ar_at_file" >&6; } - -if test no = "$lt_cv_ar_at_file"; then - archiver_list_spec= -else - archiver_list_spec=$lt_cv_ar_at_file -fi - - - - - - - -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 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_STRIP+y} -then : - printf %s "(cached) " >&6 -else $as_nop - 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 - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -printf "%s\n" "$STRIP" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "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 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_STRIP+y} -then : - printf %s "(cached) " >&6 -else $as_nop - 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 - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="strip" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -printf "%s\n" "$ac_ct_STRIP" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -test -z "$STRIP" && STRIP=: - - - - - - -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 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_RANLIB+y} -then : - printf %s "(cached) " >&6 -else $as_nop - 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 - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -printf "%s\n" "$RANLIB" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "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 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_RANLIB+y} -then : - printf %s "(cached) " >&6 -else $as_nop - 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 - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -printf "%s\n" "$ac_ct_RANLIB" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - -test -z "$RANLIB" && RANLIB=: - - - - - - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - bitrig* | openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - -# Check for command to grab the raw symbol name followed by C symbol from nm. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 -printf %s "checking command to parse $NM output from $compiler object... " >&6; } -if test ${lt_cv_sys_global_symbol_pipe+y} -then : - printf %s "(cached) " >&6 -else $as_nop - -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[BCDEGRST]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([_A-Za-z][_A-Za-z0-9]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[BCDT]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[ABCDGISTW]' - ;; -hpux*) - if test ia64 = "$host_cpu"; then - symcode='[ABCDEGRST]' - fi - ;; -irix* | nonstopux*) - symcode='[BCDEGRST]' - ;; -osf*) - symcode='[BCDEGQRST]' - ;; -solaris*) - symcode='[BDRT]' - ;; -sco3.2v5*) - symcode='[DT]' - ;; -sysv4.2uw2*) - symcode='[DT]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[ABDT]' - ;; -sysv4) - symcode='[DFNSTU]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[ABCDGIRSTW]' ;; -esac - -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Gets list of data symbols to import. - lt_cv_sys_global_symbol_to_import="$SED -n -e 's/^I .* \(.*\)$/\1/p'" - # Adjust the below global symbol transforms to fixup imported variables. - lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" - lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" - lt_c_name_lib_hook="\ - -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ - -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" -else - # Disable hooks by default. - lt_cv_sys_global_symbol_to_import= - lt_cdecl_hook= - lt_c_name_hook= - lt_c_name_lib_hook= -fi - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="$SED -n"\ -$lt_cdecl_hook\ -" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="$SED -n"\ -$lt_c_name_hook\ -" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" - -# Transform an extracted symbol line into symbol name with lib prefix and -# symbol address. -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="$SED -n"\ -$lt_c_name_lib_hook\ -" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ -" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function, - # D for any global variable and I for any imported variable. - # Also find C++ and __fastcall symbols from MSVC++ or ICC, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK '"\ -" {last_section=section; section=\$ 3};"\ -" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ -" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ -" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ -" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ -" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx" - else - lt_cv_sys_global_symbol_pipe="$SED -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | $SED '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - # Now try to grab the symbols. - nlist=conftest.nm - $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&5 - if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&5 && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE -/* DATA imports from DLLs on WIN32 can't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT_DLSYM_CONST -#elif defined __osf__ -/* This system does not cope well with relocations in const data. */ -# define LT_DLSYM_CONST -#else -# define LT_DLSYM_CONST const -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS=conftstm.$ac_objext - CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest$ac_exeext; then - pipe_works=yes - fi - LIBS=$lt_globsym_save_LIBS - CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&5 - fi - else - echo "cannot find nm_test_var in $nlist" >&5 - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 - fi - else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test yes = "$pipe_works"; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done - -fi - -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5 -printf "%s\n" "failed" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -printf "%s\n" "ok" >&6; } -fi - -# Response file support. -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - nm_file_list_spec='@' -elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then - nm_file_list_spec='@' -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 -printf %s "checking for sysroot... " >&6; } - -# Check whether --with-sysroot was given. -if test ${with_sysroot+y} -then : - withval=$with_sysroot; -else $as_nop - with_sysroot=no -fi - - -lt_sysroot= -case $with_sysroot in #( - yes) - if test yes = "$GCC"; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` - fi - ;; #( - /*) - lt_sysroot=`echo "$with_sysroot" | $SED -e "$sed_quote_subst"` - ;; #( - no|'') - ;; #( - *) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 -printf "%s\n" "$with_sysroot" >&6; } - as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 - ;; -esac - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 -printf "%s\n" "${lt_sysroot:-no}" >&6; } - - - - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 -printf %s "checking for a working dd... " >&6; } -if test ${ac_cv_path_lt_DD+y} -then : - printf %s "(cached) " >&6 -else $as_nop - printf 0123456789abcdef0123456789abcdef >conftest.i -cat conftest.i conftest.i >conftest2.i -: ${lt_DD:=$DD} -if test -z "$lt_DD"; then - ac_path_lt_DD_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_prog in dd - do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_lt_DD="$as_dir$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_lt_DD" || continue -if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then - cmp -s conftest.i conftest.out \ - && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: -fi - $ac_path_lt_DD_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_lt_DD"; then - : - fi -else - ac_cv_path_lt_DD=$lt_DD -fi - -rm -f conftest.i conftest2.i conftest.out -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 -printf "%s\n" "$ac_cv_path_lt_DD" >&6; } - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 -printf %s "checking how to truncate binary pipes... " >&6; } -if test ${lt_cv_truncate_bin+y} -then : - printf %s "(cached) " >&6 -else $as_nop - printf 0123456789abcdef0123456789abcdef >conftest.i -cat conftest.i conftest.i >conftest2.i -lt_cv_truncate_bin= -if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then - cmp -s conftest.i conftest.out \ - && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" -fi -rm -f conftest.i conftest2.i conftest.out -test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 -printf "%s\n" "$lt_cv_truncate_bin" >&6; } - - - - - - - -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -func_cc_basename () -{ - for cc_temp in $*""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac - done - func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -} - -# Check whether --enable-libtool-lock was given. -if test ${enable_libtool_lock+y} -then : - enableval=$enable_libtool_lock; -fi - -test no = "$enable_libtool_lock" || enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out what ABI is being produced by ac_compile, and set mode - # options accordingly. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `$FILECMD conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE=32 - ;; - *ELF-64*) - HPUX_IA64_MODE=64 - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo '#line '$LINENO' "configure"' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - if test yes = "$lt_cv_prog_gnu_ld"; then - case `$FILECMD conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `$FILECMD conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -mips64*-*linux*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo '#line '$LINENO' "configure"' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - emul=elf - case `$FILECMD conftest.$ac_objext` in - *32-bit*) - emul="${emul}32" - ;; - *64-bit*) - emul="${emul}64" - ;; - esac - case `$FILECMD conftest.$ac_objext` in - *MSB*) - emul="${emul}btsmip" - ;; - *LSB*) - emul="${emul}ltsmip" - ;; - esac - case `$FILECMD conftest.$ac_objext` in - *N32*) - emul="${emul}n32" - ;; - esac - LD="${LD-ld} -m $emul" - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. Note that the listed cases only cover the - # situations where additional linker options are needed (such as when - # doing 32-bit compilation for a host where ld defaults to 64-bit, or - # vice versa); the common cases where no linker options are needed do - # not appear in the list. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `$FILECMD conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - case `$FILECMD conftest.o` in - *x86-64*) - LD="${LD-ld} -m elf32_x86_64" - ;; - *) - LD="${LD-ld} -m elf_i386" - ;; - esac - ;; - powerpc64le-*linux*) - LD="${LD-ld} -m elf32lppclinux" - ;; - powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - powerpcle-*linux*) - LD="${LD-ld} -m elf64lppc" - ;; - powerpc-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS -belf" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 -printf %s "checking whether the C compiler needs -belf... " >&6; } -if test ${lt_cv_cc_needs_belf+y} -then : - printf %s "(cached) " >&6 -else $as_nop - 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 - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - lt_cv_cc_needs_belf=yes -else $as_nop - lt_cv_cc_needs_belf=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext 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 - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 -printf "%s\n" "$lt_cv_cc_needs_belf" >&6; } - if test yes != "$lt_cv_cc_needs_belf"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS=$SAVE_CFLAGS - fi - ;; -*-*solaris*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `$FILECMD conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) - case $host in - i?86-*-solaris*|x86_64-*-solaris*) - LD="${LD-ld} -m elf_x86_64" - ;; - sparc*-*-solaris*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - # GNU ld 2.21 introduced _sol2 emulations. Use them if available. - if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then - LD=${LD-ld}_sol2 - fi - ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks=$enable_libtool_lock - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. -set dummy ${ac_tool_prefix}mt; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_MANIFEST_TOOL+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$MANIFEST_TOOL"; then - ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL -if test -n "$MANIFEST_TOOL"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 -printf "%s\n" "$MANIFEST_TOOL" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_MANIFEST_TOOL"; then - ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL - # Extract the first word of "mt", so it can be a program name with args. -set dummy mt; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_MANIFEST_TOOL+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_MANIFEST_TOOL"; then - ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL -if test -n "$ac_ct_MANIFEST_TOOL"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 -printf "%s\n" "$ac_ct_MANIFEST_TOOL" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_ct_MANIFEST_TOOL" = x; then - MANIFEST_TOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL - fi -else - MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" -fi - -test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 -printf %s "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } -if test ${lt_cv_path_mainfest_tool+y} -then : - printf %s "(cached) " >&6 -else $as_nop - lt_cv_path_mainfest_tool=no - echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 - $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out - cat conftest.err >&5 - if $GREP 'Manifest Tool' conftest.out > /dev/null; then - lt_cv_path_mainfest_tool=yes - fi - rm -f conftest* -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 -printf "%s\n" "$lt_cv_path_mainfest_tool" >&6; } -if test yes != "$lt_cv_path_mainfest_tool"; then - MANIFEST_TOOL=: -fi - - - - - - - case $host_os in - rhapsody* | darwin*) - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. -set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_DSYMUTIL+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$DSYMUTIL"; then - ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DSYMUTIL=$ac_cv_prog_DSYMUTIL -if test -n "$DSYMUTIL"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 -printf "%s\n" "$DSYMUTIL" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DSYMUTIL"; then - ac_ct_DSYMUTIL=$DSYMUTIL - # Extract the first word of "dsymutil", so it can be a program name with args. -set dummy dsymutil; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_DSYMUTIL+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_DSYMUTIL"; then - ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL -if test -n "$ac_ct_DSYMUTIL"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 -printf "%s\n" "$ac_ct_DSYMUTIL" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_ct_DSYMUTIL" = x; then - DSYMUTIL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DSYMUTIL=$ac_ct_DSYMUTIL - fi -else - DSYMUTIL="$ac_cv_prog_DSYMUTIL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. -set dummy ${ac_tool_prefix}nmedit; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_NMEDIT+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$NMEDIT"; then - ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -NMEDIT=$ac_cv_prog_NMEDIT -if test -n "$NMEDIT"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 -printf "%s\n" "$NMEDIT" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_NMEDIT"; then - ac_ct_NMEDIT=$NMEDIT - # Extract the first word of "nmedit", so it can be a program name with args. -set dummy nmedit; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_NMEDIT+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_NMEDIT"; then - ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_NMEDIT="nmedit" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT -if test -n "$ac_ct_NMEDIT"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 -printf "%s\n" "$ac_ct_NMEDIT" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_ct_NMEDIT" = x; then - NMEDIT=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - NMEDIT=$ac_ct_NMEDIT - fi -else - NMEDIT="$ac_cv_prog_NMEDIT" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. -set dummy ${ac_tool_prefix}lipo; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_LIPO+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$LIPO"; then - ac_cv_prog_LIPO="$LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_LIPO="${ac_tool_prefix}lipo" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -LIPO=$ac_cv_prog_LIPO -if test -n "$LIPO"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 -printf "%s\n" "$LIPO" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_LIPO"; then - ac_ct_LIPO=$LIPO - # Extract the first word of "lipo", so it can be a program name with args. -set dummy lipo; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_LIPO+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_LIPO"; then - ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_LIPO="lipo" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO -if test -n "$ac_ct_LIPO"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 -printf "%s\n" "$ac_ct_LIPO" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_ct_LIPO" = x; then - LIPO=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - LIPO=$ac_ct_LIPO - fi -else - LIPO="$ac_cv_prog_LIPO" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_OTOOL+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$OTOOL"; then - ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_OTOOL="${ac_tool_prefix}otool" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL=$ac_cv_prog_OTOOL -if test -n "$OTOOL"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 -printf "%s\n" "$OTOOL" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL"; then - ac_ct_OTOOL=$OTOOL - # Extract the first word of "otool", so it can be a program name with args. -set dummy otool; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_OTOOL+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_OTOOL"; then - ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OTOOL="otool" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL -if test -n "$ac_ct_OTOOL"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 -printf "%s\n" "$ac_ct_OTOOL" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_ct_OTOOL" = x; then - OTOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL=$ac_ct_OTOOL - fi -else - OTOOL="$ac_cv_prog_OTOOL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool64; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_OTOOL64+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$OTOOL64"; then - ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL64=$ac_cv_prog_OTOOL64 -if test -n "$OTOOL64"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 -printf "%s\n" "$OTOOL64" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL64"; then - ac_ct_OTOOL64=$OTOOL64 - # Extract the first word of "otool64", so it can be a program name with args. -set dummy otool64; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_OTOOL64+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_OTOOL64"; then - ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OTOOL64="otool64" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 -if test -n "$ac_ct_OTOOL64"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 -printf "%s\n" "$ac_ct_OTOOL64" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_ct_OTOOL64" = x; then - OTOOL64=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL64=$ac_ct_OTOOL64 - fi -else - OTOOL64="$ac_cv_prog_OTOOL64" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 -printf %s "checking for -single_module linker flag... " >&6; } -if test ${lt_cv_apple_cc_single_mod+y} -then : - printf %s "(cached) " >&6 -else $as_nop - lt_cv_apple_cc_single_mod=no - if test -z "$LT_MULTI_MODULE"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - # If there is a non-empty error log, and "single_module" - # appears in it, assume the flag caused a linker warning - if test -s conftest.err && $GREP single_module conftest.err; then - cat conftest.err >&5 - # Otherwise, if the output was created with a 0 exit code from - # the compiler, it worked. - elif test -f libconftest.dylib && test 0 = "$_lt_result"; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&5 - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 -printf "%s\n" "$lt_cv_apple_cc_single_mod" >&6; } - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 -printf %s "checking for -exported_symbols_list linker flag... " >&6; } -if test ${lt_cv_ld_exported_symbols_list+y} -then : - printf %s "(cached) " >&6 -else $as_nop - lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - lt_cv_ld_exported_symbols_list=yes -else $as_nop - lt_cv_ld_exported_symbols_list=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 -printf "%s\n" "$lt_cv_ld_exported_symbols_list" >&6; } - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 -printf %s "checking for -force_load linker flag... " >&6; } -if test ${lt_cv_ld_force_load+y} -then : - printf %s "(cached) " >&6 -else $as_nop - lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 - echo "$AR $AR_FLAGS libconftest.a conftest.o" >&5 - $AR $AR_FLAGS libconftest.a conftest.o 2>&5 - echo "$RANLIB libconftest.a" >&5 - $RANLIB libconftest.a 2>&5 - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -s conftest.err && $GREP force_load conftest.err; then - cat conftest.err >&5 - elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&5 - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 -printf "%s\n" "$lt_cv_ld_force_load" >&6; } - case $host_os in - rhapsody* | darwin1.[012]) - _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - darwin*) - case $MACOSX_DEPLOYMENT_TARGET,$host in - 10.[012],*|,*powerpc*-darwin[5-8]*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - *) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test yes = "$lt_cv_apple_cc_single_mod"; then - _lt_dar_single_mod='$single_module' - fi - if test yes = "$lt_cv_ld_exported_symbols_list"; then - _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' - fi - if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac - -# func_munge_path_list VARIABLE PATH -# ----------------------------------- -# VARIABLE is name of variable containing _space_ separated list of -# directories to be munged by the contents of PATH, which is string -# having a format: -# "DIR[:DIR]:" -# string "DIR[ DIR]" will be prepended to VARIABLE -# ":DIR[:DIR]" -# string "DIR[ DIR]" will be appended to VARIABLE -# "DIRP[:DIRP]::[DIRA:]DIRA" -# string "DIRP[ DIRP]" will be prepended to VARIABLE and string -# "DIRA[ DIRA]" will be appended to VARIABLE -# "DIR[:DIR]" -# VARIABLE will be replaced by "DIR[ DIR]" -func_munge_path_list () -{ - case x$2 in - x) - ;; - *:) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" - ;; - x:*) - eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" - ;; - *::*) - eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" - eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" - ;; - *) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" - ;; - esac -} - -ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default -" -if test "x$ac_cv_header_dlfcn_h" = xyes -then : - printf "%s\n" "#define HAVE_DLFCN_H 1" >>confdefs.h - -fi - -# ------------------------------------ # -# Determine libtool default behavior # -# ------------------------------------ # - -# -# Default behavior is to enable shared and static libraries on systems -# where libtool knows how to build both library versions, and does not -# require separate configuration and build runs for each flavor. -# - -xc_lt_want_enable_shared='yes' -xc_lt_want_enable_static='yes' - -# -# User may have disabled shared or static libraries. -# -case "x$enable_shared" in # ( - xno) - xc_lt_want_enable_shared='no' - ;; -esac -case "x$enable_static" in # ( - xno) - xc_lt_want_enable_static='no' - ;; -esac -if test "x$xc_lt_want_enable_shared" = 'xno' && - test "x$xc_lt_want_enable_static" = 'xno'; then - as_fn_error $? "can not disable shared and static libraries simultaneously" "$LINENO" 5 -fi - -# -# Default behavior on systems that require independent configuration -# and build runs for shared and static is to enable shared libraries -# and disable static ones. On these systems option '--disable-shared' -# must be used in order to build a proper static library. -# - -if test "x$xc_lt_want_enable_shared" = 'xyes' && - test "x$xc_lt_want_enable_static" = 'xyes'; then - case $host_os in # ( - pw32* | cegcc* | os2* | aix*) - xc_lt_want_enable_static='no' - ;; - esac -fi - -# -# Make libtool aware of current shared and static library preferences -# taking in account that, depending on host characteristics, libtool -# may modify these option preferences later in this configure script. -# - -enable_shared=$xc_lt_want_enable_shared -enable_static=$xc_lt_want_enable_static - -# -# Default behavior is to build PIC objects for shared libraries and -# non-PIC objects for static libraries. -# - -xc_lt_want_with_pic='default' - -# -# User may have specified PIC preference. -# - -case "x$with_pic" in # (( - xno) - xc_lt_want_with_pic='no' - ;; - xyes) - xc_lt_want_with_pic='yes' - ;; -esac - -# -# Default behavior on some systems where building a shared library out -# of non-PIC compiled objects will fail with following linker error -# "relocation R_X86_64_32 can not be used when making a shared object" -# is to build PIC objects even for static libraries. This behavior may -# be overridden using 'configure --disable-shared --without-pic'. -# - -if test "x$xc_lt_want_with_pic" = 'xdefault'; then - case $host_cpu in # ( - x86_64 | amd64 | ia64) - case $host_os in # ( - linux* | freebsd* | midnightbsd*) - xc_lt_want_with_pic='yes' - ;; - esac - ;; - esac -fi - -# -# Make libtool aware of current PIC preference taking in account that, -# depending on host characteristics, libtool may modify PIC default -# behavior to fit host system idiosyncrasies later in this script. -# - -with_pic=$xc_lt_want_with_pic - -## ----------------------- ## -## Start of libtool code ## -## ----------------------- ## - - - - -# Set options -enable_win32_dll=yes - -case $host in -*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. -set dummy ${ac_tool_prefix}as; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_AS+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$AS"; then - ac_cv_prog_AS="$AS" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_AS="${ac_tool_prefix}as" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AS=$ac_cv_prog_AS -if test -n "$AS"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 -printf "%s\n" "$AS" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_AS"; then - ac_ct_AS=$AS - # Extract the first word of "as", so it can be a program name with args. -set dummy as; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_AS+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_AS"; then - ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_AS="as" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_AS=$ac_cv_prog_ac_ct_AS -if test -n "$ac_ct_AS"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5 -printf "%s\n" "$ac_ct_AS" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_ct_AS" = x; then - AS="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AS=$ac_ct_AS - fi -else - AS="$ac_cv_prog_AS" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. -set dummy ${ac_tool_prefix}dlltool; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_DLLTOOL+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$DLLTOOL"; then - ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DLLTOOL=$ac_cv_prog_DLLTOOL -if test -n "$DLLTOOL"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 -printf "%s\n" "$DLLTOOL" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DLLTOOL"; then - ac_ct_DLLTOOL=$DLLTOOL - # Extract the first word of "dlltool", so it can be a program name with args. -set dummy dlltool; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_DLLTOOL+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_DLLTOOL"; then - ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DLLTOOL="dlltool" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL -if test -n "$ac_ct_DLLTOOL"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 -printf "%s\n" "$ac_ct_DLLTOOL" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_ct_DLLTOOL" = x; then - DLLTOOL="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DLLTOOL=$ac_ct_DLLTOOL - fi -else - DLLTOOL="$ac_cv_prog_DLLTOOL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. -set dummy ${ac_tool_prefix}objdump; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_OBJDUMP+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$OBJDUMP"; then - ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OBJDUMP=$ac_cv_prog_OBJDUMP -if test -n "$OBJDUMP"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -printf "%s\n" "$OBJDUMP" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OBJDUMP"; then - ac_ct_OBJDUMP=$OBJDUMP - # Extract the first word of "objdump", so it can be a program name with args. -set dummy objdump; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_OBJDUMP+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test -n "$ac_ct_OBJDUMP"; then - ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OBJDUMP="objdump" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP -if test -n "$ac_ct_OBJDUMP"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -printf "%s\n" "$ac_ct_OBJDUMP" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_ct_OBJDUMP" = x; then - OBJDUMP="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OBJDUMP=$ac_ct_OBJDUMP - fi -else - OBJDUMP="$ac_cv_prog_OBJDUMP" -fi - - ;; -esac - -test -z "$AS" && AS=as - - - - - -test -z "$DLLTOOL" && DLLTOOL=dlltool - - - - - -test -z "$OBJDUMP" && OBJDUMP=objdump - - - - - - - - enable_dlopen=no - - - - # Check whether --enable-shared was given. -if test ${enable_shared+y} -then : - enableval=$enable_shared; p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else $as_nop - enable_shared=yes -fi - - - - - - - - - - # Check whether --enable-static was given. -if test ${enable_static+y} -then : - enableval=$enable_static; p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else $as_nop - enable_static=yes -fi - - - - - - - - - - -# Check whether --with-pic was given. -if test ${with_pic+y} -then : - withval=$with_pic; lt_p=${PACKAGE-default} - case $withval in - yes|no) pic_mode=$withval ;; - *) - pic_mode=default - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for lt_pkg in $withval; do - IFS=$lt_save_ifs - if test "X$lt_pkg" = "X$lt_p"; then - pic_mode=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else $as_nop - pic_mode=default -fi - - - - - - - - - # Check whether --enable-fast-install was given. -if test ${enable_fast_install+y} -then : - enableval=$enable_fast_install; p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else $as_nop - enable_fast_install=yes -fi - - - - - - - - - shared_archive_member_spec= -case $host,$enable_shared in -power*-*-aix[5-9]*,yes) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 -printf %s "checking which variant of shared library versioning to provide... " >&6; } - -# Check whether --with-aix-soname was given. -if test ${with_aix_soname+y} -then : - withval=$with_aix_soname; case $withval in - aix|svr4|both) - ;; - *) - as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 - ;; - esac - lt_cv_with_aix_soname=$with_aix_soname -else $as_nop - if test ${lt_cv_with_aix_soname+y} -then : - printf %s "(cached) " >&6 -else $as_nop - lt_cv_with_aix_soname=aix -fi - - with_aix_soname=$lt_cv_with_aix_soname -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 -printf "%s\n" "$with_aix_soname" >&6; } - if test aix != "$with_aix_soname"; then - # For the AIX way of multilib, we name the shared archive member - # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', - # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. - # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, - # the AIX toolchain works better with OBJECT_MODE set (default 32). - if test 64 = "${OBJECT_MODE-32}"; then - shared_archive_member_spec=shr_64 - else - shared_archive_member_spec=shr - fi - fi - ;; -*) - with_aix_soname=aix - ;; -esac - - - - - - - - - - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS=$ltmain - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -test -z "$LN_S" && LN_S="ln -s" - - - - - - - - - - - - - - -if test -n "${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 -printf %s "checking for objdir... " >&6; } -if test ${lt_cv_objdir+y} -then : - printf %s "(cached) " >&6 -else $as_nop - rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 -printf "%s\n" "$lt_cv_objdir" >&6; } -objdir=$lt_cv_objdir - - - - - -printf "%s\n" "#define LT_OBJDIR \"$lt_cv_objdir/\"" >>confdefs.h - - - - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test set != "${COLLECT_NAMES+set}"; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a '.a' archive for static linking (except MSVC and -# ICC, which need '.lib'). -libext=a - -with_gnu_ld=$lt_cv_prog_gnu_ld - -old_CC=$CC -old_CFLAGS=$CFLAGS - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -func_cc_basename $compiler -cc_basename=$func_cc_basename_result - - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 -printf %s "checking for ${ac_tool_prefix}file... " >&6; } -if test ${lt_cv_path_MAGIC_CMD+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD=$MAGIC_CMD - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/${ac_tool_prefix}file"; then - lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD=$lt_cv_path_MAGIC_CMD - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS=$lt_save_ifs - MAGIC_CMD=$lt_save_MAGIC_CMD - ;; -esac -fi - -MAGIC_CMD=$lt_cv_path_MAGIC_CMD -if test -n "$MAGIC_CMD"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -printf "%s\n" "$MAGIC_CMD" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - - - -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for file" >&5 -printf %s "checking for file... " >&6; } -if test ${lt_cv_path_MAGIC_CMD+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD=$MAGIC_CMD - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/file"; then - lt_cv_path_MAGIC_CMD=$ac_dir/"file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD=$lt_cv_path_MAGIC_CMD - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS=$lt_save_ifs - MAGIC_CMD=$lt_save_MAGIC_CMD - ;; -esac -fi - -MAGIC_CMD=$lt_cv_path_MAGIC_CMD -if test -n "$MAGIC_CMD"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -printf "%s\n" "$MAGIC_CMD" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - else - MAGIC_CMD=: - fi -fi - - fi - ;; -esac - -# Use C for the default configuration in the libtool script - -lt_save_CC=$CC -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 - - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -objext=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -if test -n "$compiler"; then - -lt_prog_compiler_no_builtin_flag= - -if test yes = "$GCC"; then - case $cc_basename in - nvcc*) - lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; - *) - lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; - esac - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -printf %s "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } -if test ${lt_cv_prog_compiler_rtti_exceptions+y} -then : - printf %s "(cached) " >&6 -else $as_nop - lt_cv_prog_compiler_rtti_exceptions=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_rtti_exceptions=yes - fi - fi - $RM conftest* - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -printf "%s\n" "$lt_cv_prog_compiler_rtti_exceptions" >&6; } - -if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then - lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" -else - : -fi - -fi - - - - - - - lt_prog_compiler_wl= -lt_prog_compiler_pic= -lt_prog_compiler_static= - - - if test yes = "$GCC"; then - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_static='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - fi - lt_prog_compiler_pic='-fPIC' - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the '-m68020' flag to GCC prevents building anything better, - # like '-m68040'. - lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic='-DDLL_EXPORT' - case $host_os in - os2*) - lt_prog_compiler_static='$wl-static' - ;; - esac - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - lt_prog_compiler_static= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - ;; - - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - lt_prog_compiler_can_build_shared=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic=-Kconform_pic - fi - ;; - - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - lt_prog_compiler_wl='-Xlinker ' - if test -n "$lt_prog_compiler_pic"; then - lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" - fi - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - lt_prog_compiler_wl='-Wl,' - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - else - lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - case $cc_basename in - nagfor*) - # NAG Fortran compiler - lt_prog_compiler_wl='-Wl,-Wl,,' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - esac - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic='-DDLL_EXPORT' - case $host_os in - os2*) - lt_prog_compiler_static='$wl-static' - ;; - esac - ;; - - hpux9* | hpux10* | hpux11*) - lt_prog_compiler_wl='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - lt_prog_compiler_static='$wl-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - lt_prog_compiler_wl='-Wl,' - # PIC (with -KPIC) is the default. - lt_prog_compiler_static='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - # old Intel for x86_64, which still supported -KPIC. - ecc*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-static' - ;; - # flang / f18. f95 an alias for gfortran or flang on Debian - flang* | f18* | f95*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='--shared' - lt_prog_compiler_static='--static' - ;; - nagfor*) - # NAG Fortran compiler - lt_prog_compiler_wl='-Wl,-Wl,,' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - tcc*) - # Fabrice Bellard et al's Tiny C Compiler - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - ccc*) - lt_prog_compiler_wl='-Wl,' - # All Alpha code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-qpic' - lt_prog_compiler_static='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | $SED 5q` in - *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='' - ;; - *Sun\ F* | *Sun*Fortran*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Qoption ld ' - ;; - *Sun\ C*) - # Sun C 5.9 - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Wl,' - ;; - *Intel*\ [CF]*Compiler*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - *Portland\ Group*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - esac - ;; - esac - ;; - - newsos6) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - lt_prog_compiler_wl='-Wl,' - # All OSF/1 code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - - rdos*) - lt_prog_compiler_static='-non_shared' - ;; - - solaris*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - lt_prog_compiler_wl='-Qoption ld ';; - *) - lt_prog_compiler_wl='-Wl,';; - esac - ;; - - sunos4*) - lt_prog_compiler_wl='-Qoption ld ' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic='-Kconform_pic' - lt_prog_compiler_static='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - unicos*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_can_build_shared=no - ;; - - uts4*) - lt_prog_compiler_pic='-pic' - lt_prog_compiler_static='-Bstatic' - ;; - - *) - lt_prog_compiler_can_build_shared=no - ;; - esac - fi - -case $host_os in - # For platforms that do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic= - ;; - *) - lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" - ;; -esac - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -printf %s "checking for $compiler option to produce PIC... " >&6; } -if test ${lt_cv_prog_compiler_pic+y} -then : - printf %s "(cached) " >&6 -else $as_nop - lt_cv_prog_compiler_pic=$lt_prog_compiler_pic -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 -printf "%s\n" "$lt_cv_prog_compiler_pic" >&6; } -lt_prog_compiler_pic=$lt_cv_prog_compiler_pic - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } -if test ${lt_cv_prog_compiler_pic_works+y} -then : - printf %s "(cached) " >&6 -else $as_nop - lt_cv_prog_compiler_pic_works=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works=yes - fi - fi - $RM conftest* - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 -printf "%s\n" "$lt_cv_prog_compiler_pic_works" >&6; } - -if test yes = "$lt_cv_prog_compiler_pic_works"; then - case $lt_prog_compiler_pic in - "" | " "*) ;; - *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; - esac -else - lt_prog_compiler_pic= - lt_prog_compiler_can_build_shared=no -fi - -fi - - - - - - - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if test ${lt_cv_prog_compiler_static_works+y} -then : - printf %s "(cached) " >&6 -else $as_nop - lt_cv_prog_compiler_static_works=no - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works=yes - fi - else - lt_cv_prog_compiler_static_works=yes - fi - fi - $RM -r conftest* - LDFLAGS=$save_LDFLAGS - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 -printf "%s\n" "$lt_cv_prog_compiler_static_works" >&6; } - -if test yes = "$lt_cv_prog_compiler_static_works"; then - : -else - lt_prog_compiler_static= -fi - - - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if test ${lt_cv_prog_compiler_c_o+y} -then : - printf %s "(cached) " >&6 -else $as_nop - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } - - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if test ${lt_cv_prog_compiler_c_o+y} -then : - printf %s "(cached) " >&6 -else $as_nop - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; } - - - - -hard_links=nottested -if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then - # do not overwrite the value of need_locks provided by the user - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -printf %s "checking if we can lock with hard links... " >&6; } - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -printf "%s\n" "$hard_links" >&6; } - if test no = "$hard_links"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 -printf "%s\n" "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - runpath_var= - allow_undefined_flag= - always_export_symbols=no - archive_cmds= - archive_expsym_cmds= - compiler_needs_object=no - enable_shared_with_static_runtimes=no - export_dynamic_flag_spec= - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - hardcode_automatic=no - hardcode_direct=no - hardcode_direct_absolute=no - hardcode_libdir_flag_spec= - hardcode_libdir_separator= - hardcode_minus_L=no - hardcode_shlibpath_var=unsupported - inherit_rpath=no - link_all_deplibs=unknown - module_cmds= - module_expsym_cmds= - old_archive_from_new_cmds= - old_archive_from_expsyms_cmds= - thread_safe_flag_spec= - whole_archive_flag_spec= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - include_expsyms= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ' (' and ')$', so one must not match beginning or - # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', - # as well as any symbol that contains 'd'. - exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ and ICC port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++ or Intel C++ Compiler. - if test yes != "$GCC"; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++ or ICC) - with_gnu_ld=yes - ;; - openbsd* | bitrig*) - with_gnu_ld=no - ;; - linux* | k*bsd*-gnu | gnu*) - link_all_deplibs=no - ;; - esac - - ld_shlibs=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test yes = "$with_gnu_ld"; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; - *\ \(GNU\ Binutils\)\ [3-9]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test yes = "$lt_use_gnu_ld_interface"; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='$wl' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - export_dynamic_flag_spec='$wl--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' - else - whole_archive_flag_spec= - fi - supports_anon_versioning=no - case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[3-9]*) - # On AIX/PPC, the GNU linker is very broken - if test ia64 != "$host_cpu"; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - else - ld_shlibs=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec='-L$libdir' - export_dynamic_flag_spec='$wl--export-all-symbols' - allow_undefined_flag=unsupported - always_export_symbols=no - enable_shared_with_static_runtimes=yes - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file, use it as - # is; otherwise, prepend EXPORTS... - archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs=no - fi - ;; - - haiku*) - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - link_all_deplibs=yes - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - shrext_cmds=.dll - archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - enable_shared_with_static_runtimes=yes - file_list_spec='@' - ;; - - interix[3-9]*) - hardcode_direct=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='$wl-rpath,$libdir' - export_dynamic_flag_spec='$wl-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds='$SED "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test linux-dietlibc = "$host_os"; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test no = "$tmp_diet" - then - tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - whole_archive_flag_spec= - tmp_sharedflag='--shared' ;; - nagfor*) # NAGFOR 5.3 - tmp_sharedflag='-Wl,-shared' ;; - xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - compiler_needs_object=yes - ;; - esac - case `$CC -V 2>&1 | $SED 5q` in - *Sun\ C*) # Sun C 5.9 - whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - compiler_needs_object=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - - if test yes = "$supports_anon_versioning"; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - tcc*) - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - export_dynamic_flag_spec='-rdynamic' - ;; - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test yes = "$supports_anon_versioning"; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - ld_shlibs=no - fi - ;; - - netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - ;; - - sunos4*) - archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - - if test no = "$ld_shlibs"; then - runpath_var= - hardcode_libdir_flag_spec= - export_dynamic_flag_spec= - whole_archive_flag_spec= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - allow_undefined_flag=unsupported - always_export_symbols=yes - archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes - if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct=unsupported - fi - ;; - - aix[4-9]*) - if test ia64 = "$host_cpu"; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag= - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to GNU nm, but means don't demangle to AIX nm. - # Without the "-l" option, or with the "-B" option, AIX nm treats - # weak defined symbols like other global defined symbols, whereas - # GNU nm marks them as "W". - # While the 'weak' keyword is ignored in the Export File, we need - # it in the Import File for the 'aix-soname' feature, so we have - # to replace the "-B" option with "-P" for AIX nm. - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' - fi - 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 - # have runtime linking enabled, and use it for executables. - # For shared libraries, we enable/disable runtime linking - # depending on the kind of the shared library created - - # when "with_aix_soname,aix_use_runtimelinking" is: - # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables - # "aix,yes" lib.so shared, rtl:yes, for executables - # lib.a static archive - # "both,no" lib.so.V(shr.o) shared, rtl:yes - # lib.a(lib.so.V) shared, rtl:no, for executables - # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a(lib.so.V) shared, rtl:no - # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a static archive - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then - aix_use_runtimelinking=yes - break - fi - done - if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then - # With aix-soname=svr4, we create the lib.so.V shared archives only, - # so we don't have lib.a shared libs to link our executables. - # We have to force runtime linking in this case. - aix_use_runtimelinking=yes - LDFLAGS="$LDFLAGS -Wl,-brtl" - fi - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds='' - hardcode_direct=yes - hardcode_direct_absolute=yes - hardcode_libdir_separator=':' - link_all_deplibs=yes - file_list_spec='$wl-f,' - case $with_aix_soname,$aix_use_runtimelinking in - aix,*) ;; # traditional, no import file - svr4,* | *,yes) # use import file - # The Import File defines what to hardcode. - hardcode_direct=no - hardcode_direct_absolute=no - ;; - esac - - if test yes = "$GCC"; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`$CC -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L=yes - hardcode_libdir_flag_spec='-L$libdir' - hardcode_libdir_separator= - fi - ;; - esac - shared_flag='-shared' - if test yes = "$aix_use_runtimelinking"; then - shared_flag="$shared_flag "'$wl-G' - fi - # Need to ensure runtime linking is disabled for the traditional - # shared library, or the linker may eventually find shared libraries - # /with/ Import File - we do not want to mix them. - shared_flag_aix='-shared' - shared_flag_svr4='-shared $wl-G' - else - # not using gcc - if test ia64 = "$host_cpu"; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test yes = "$aix_use_runtimelinking"; then - shared_flag='$wl-G' - else - shared_flag='$wl-bM:SRE' - fi - shared_flag_aix='$wl-bM:SRE' - shared_flag_svr4='$wl-G' - fi - fi - - export_dynamic_flag_spec='$wl-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - always_export_symbols=yes - if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - if test set = "${lt_cv_aix_libpath+set}"; then - aix_libpath=$lt_cv_aix_libpath -else - if test ${lt_cv_aix_libpath_+y} -then : - printf %s "(cached) " >&6 -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=/usr/lib:/lib - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag - else - if test ia64 = "$host_cpu"; then - hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' - allow_undefined_flag="-z nodefs" - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - if test set = "${lt_cv_aix_libpath+set}"; then - aix_libpath=$lt_cv_aix_libpath -else - if test ${lt_cv_aix_libpath_+y} -then : - printf %s "(cached) " >&6 -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=/usr/lib:/lib - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag=' $wl-bernotok' - allow_undefined_flag=' $wl-berok' - if test yes = "$with_gnu_ld"; then - # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec='$convenience' - fi - archive_cmds_need_lc=yes - archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' - # -brtl affects multiple linker settings, -berok does not and is overridden later - compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' - if test svr4 != "$with_aix_soname"; then - # This is similar to how AIX traditionally builds its shared libraries. - archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' - fi - if test aix != "$with_aix_soname"; then - archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' - else - # used by -dlpreopen to get the symbols - archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' - fi - archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - bsdi[45]*) - export_dynamic_flag_spec=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++ or Intel C++ Compiler. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - case $cc_basename in - cl* | icl*) - # Native MSVC or ICC - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - always_export_symbols=yes - file_list_spec='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' - archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then - cp "$export_symbols" "$output_objdir/$soname.def"; - echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; - else - $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, )='true' - enable_shared_with_static_runtimes=yes - exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' - # Don't use ranlib - old_postinstall_cmds='chmod 644 $oldlib' - postlink_cmds='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile=$lt_outputfile.exe - lt_tool_outputfile=$lt_tool_outputfile.exe - ;; - esac~ - if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # Assume MSVC and ICC wrapper - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - old_archive_from_new_cmds='true' - # FIXME: Should let the user specify the lib program. - old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' - enable_shared_with_static_runtimes=yes - ;; - esac - ;; - - darwin* | rhapsody*) - - - archive_cmds_need_lc=no - hardcode_direct=no - hardcode_automatic=yes - hardcode_shlibpath_var=unsupported - if test yes = "$lt_cv_ld_force_load"; then - whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - - else - whole_archive_flag_spec='' - fi - link_all_deplibs=yes - allow_undefined_flag=$_lt_dar_allow_undefined - case $cc_basename in - ifort*|nagfor*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test yes = "$_lt_dar_can_shared"; then - output_verbose_link_cmd=func_echo_all - archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" - module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" - archive_expsym_cmds="$SED 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" - module_expsym_cmds="$SED -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" - - else - ld_shlibs=no - fi - - ;; - - dgux*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2.*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly* | midnightbsd*) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - hpux9*) - if test yes = "$GCC"; then - archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - else - archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - fi - hardcode_libdir_flag_spec='$wl+b $wl$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - export_dynamic_flag_spec='$wl-E' - ;; - - hpux10*) - if test yes,no = "$GCC,$with_gnu_ld"; then - archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test no = "$with_gnu_ld"; then - hardcode_libdir_flag_spec='$wl+b $wl$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='$wl-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - fi - ;; - - hpux11*) - if test yes,no = "$GCC,$with_gnu_ld"; then - case $host_cpu in - hppa*64*) - archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 -printf %s "checking if $CC understands -b... " >&6; } -if test ${lt_cv_prog_compiler__b+y} -then : - printf %s "(cached) " >&6 -else $as_nop - lt_cv_prog_compiler__b=no - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -b" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler__b=yes - fi - else - lt_cv_prog_compiler__b=yes - fi - fi - $RM -r conftest* - LDFLAGS=$save_LDFLAGS - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 -printf "%s\n" "$lt_cv_prog_compiler__b" >&6; } - -if test yes = "$lt_cv_prog_compiler__b"; then - archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' -fi - - ;; - esac - fi - if test no = "$with_gnu_ld"; then - hardcode_libdir_flag_spec='$wl+b $wl$libdir' - hardcode_libdir_separator=: - - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct=no - hardcode_shlibpath_var=no - ;; - *) - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='$wl-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test yes = "$GCC"; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - # This should be the same for all languages, so no per-tag cache variable. - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 -printf %s "checking whether the $host_os linker accepts -exported_symbol... " >&6; } -if test ${lt_cv_irix_exported_symbol+y} -then : - printf %s "(cached) " >&6 -else $as_nop - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int foo (void) { return 0; } -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - lt_cv_irix_exported_symbol=yes -else $as_nop - lt_cv_irix_exported_symbol=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 -printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; } - if test yes = "$lt_cv_irix_exported_symbol"; then - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' - fi - link_all_deplibs=no - else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - hardcode_libdir_separator=: - inherit_rpath=yes - link_all_deplibs=yes - ;; - - linux*) - case $cc_basename in - tcc*) - # Fabrice Bellard et al's Tiny C Compiler - ld_shlibs=yes - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - ;; - esac - ;; - - netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - newsos6) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - hardcode_libdir_separator=: - hardcode_shlibpath_var=no - ;; - - *nto* | *qnx*) - ;; - - openbsd* | bitrig*) - if test -f /usr/libexec/ld.so; then - hardcode_direct=yes - hardcode_shlibpath_var=no - hardcode_direct_absolute=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' - hardcode_libdir_flag_spec='$wl-rpath,$libdir' - export_dynamic_flag_spec='$wl-E' - else - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='$wl-rpath,$libdir' - fi - else - ld_shlibs=no - fi - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - shrext_cmds=.dll - archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - enable_shared_with_static_runtimes=yes - file_list_spec='@' - ;; - - osf3*) - if test yes = "$GCC"; then - allow_undefined_flag=' $wl-expect_unresolved $wl\*' - archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - hardcode_libdir_separator=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test yes = "$GCC"; then - allow_undefined_flag=' $wl-expect_unresolved $wl\*' - archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - hardcode_libdir_flag_spec='-rpath $libdir' - fi - archive_cmds_need_lc='no' - hardcode_libdir_separator=: - ;; - - solaris*) - no_undefined_flag=' -z defs' - if test yes = "$GCC"; then - wlarc='$wl' - archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='$wl' - archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_shlibpath_var=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands '-z linker_flag'. GCC discards it without '$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test yes = "$GCC"; then - whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' - else - whole_archive_flag_spec='-z allextract$convenience -z defaultextract' - fi - ;; - esac - link_all_deplibs=yes - ;; - - sunos4*) - if test sequent = "$host_vendor"; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - sysv4) - case $host_vendor in - sni) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' - reload_cmds='$CC -r -o $output$reload_objs' - hardcode_direct=no - ;; - motorola) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - ;; - - sysv4.3*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - export_dynamic_flag_spec='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag='$wl-z,text' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - runpath_var='LD_RUN_PATH' - - if test yes = "$GCC"; then - archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We CANNOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag='$wl-z,text' - allow_undefined_flag='$wl-z,nodefs' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='$wl-R,$libdir' - hardcode_libdir_separator=':' - link_all_deplibs=yes - export_dynamic_flag_spec='$wl-Bexport' - runpath_var='LD_RUN_PATH' - - if test yes = "$GCC"; then - archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - *) - ld_shlibs=no - ;; - esac - - if test sni = "$host_vendor"; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - export_dynamic_flag_spec='$wl-Blargedynsym' - ;; - esac - fi - fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 -printf "%s\n" "$ld_shlibs" >&6; } -test no = "$ld_shlibs" && can_build_shared=no - -with_gnu_ld=$with_gnu_ld - - - - - - - - - - - - - - - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc=yes - - if test yes,yes = "$GCC,$enable_shared"; then - case $archive_cmds in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -printf %s "checking whether -lc should be explicitly linked in... " >&6; } -if test ${lt_cv_archive_cmds_need_lc+y} -then : - printf %s "(cached) " >&6 -else $as_nop - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl - pic_flag=$lt_prog_compiler_pic - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag - allow_undefined_flag= - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 - (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - then - lt_cv_archive_cmds_need_lc=no - else - lt_cv_archive_cmds_need_lc=yes - fi - allow_undefined_flag=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 -printf "%s\n" "$lt_cv_archive_cmds_need_lc" >&6; } - archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc - ;; - esac - fi - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -printf %s "checking dynamic linker characteristics... " >&6; } - -if test yes = "$GCC"; then - case $host_os in - darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; - *) lt_awk_arg='/^libraries:/' ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; - *) lt_sed_strip_eq='s|=/|/|g' ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary... - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - # ...but if some path component already ends with the multilib dir we assume - # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). - case "$lt_multi_os_dir; $lt_search_path_spec " in - "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) - lt_multi_os_dir= - ;; - esac - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" - elif test -n "$lt_multi_os_dir"; then - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS = " "; FS = "/|\n";} { - lt_foo = ""; - lt_count = 0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo = "/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[lt_foo]++; } - if (lt_freq[lt_foo] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's|/\([A-Za-z]:\)|\1|g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=.so -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - - - -case $host_os in -aix3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='$libname$release$shared_ext$major' - ;; - -aix[4-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test ia64 = "$host_cpu"; then - # AIX 5 supports IA64 - library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line '#! .'. This would cause the generated library to - # depend on '.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # Using Import Files as archive members, it is possible to support - # filename-based versioning of shared library archives on AIX. While - # this would work for both with and without runtime linking, it will - # prevent static linking of such archives. So we do filename-based - # shared library versioning with .so extension only, which is used - # when both runtime linking and shared linking is enabled. - # Unfortunately, runtime linking may impact performance, so we do - # not want this to be the default eventually. Also, we use the - # versioned .so libs for executables only if there is the -brtl - # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. - # To allow for filename-based versioning support, we need to create - # libNAME.so.V as an archive file, containing: - # *) an Import File, referring to the versioned filename of the - # archive as well as the shared archive member, telling the - # bitwidth (32 or 64) of that shared object, and providing the - # list of exported symbols of that shared object, eventually - # decorated with the 'weak' keyword - # *) the shared object with the F_LOADONLY flag set, to really avoid - # it being seen by the linker. - # At run time we better use the real file rather than another symlink, - # but for link time we create the symlink libNAME.so -> libNAME.so.V - - case $with_aix_soname,$aix_use_runtimelinking in - # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - aix,yes) # traditional libtool - dynamic_linker='AIX unversionable lib.so' - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - ;; - aix,no) # traditional AIX only - dynamic_linker='AIX lib.a(lib.so.V)' - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - ;; - svr4,*) # full svr4 only - dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,yes) # both, prefer svr4 - dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # unpreferred sharedlib libNAME.a needs extra handling - postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' - postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,no) # both, prefer aix - dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling - postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' - postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' - ;; - esac - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='$libname$shared_ext' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - 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" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo $libname | $SED -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo $libname | $SED -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl* | *,icl*) - # Native MSVC or ICC - libname_spec='$name' - soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - library_names_spec='$libname.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec=$LIB - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC and ICC wrapper - library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' - soname_spec='$libname$release$major$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd* | dragonfly* | midnightbsd*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[23].*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2.*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -haiku*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=no - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - if test 32 = "$HPUX_IA64_MODE"; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - sys_lib_dlsearch_path_spec=/usr/lib/hpux32 - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - sys_lib_dlsearch_path_spec=/usr/lib/hpux64 - fi - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test yes = "$lt_cv_prog_gnu_ld"; then - version_type=linux # correct to gnu/linux during the next big refactor - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" - sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -linux*android*) - version_type=none # Android doesn't support versioned libraries. - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext' - soname_spec='$libname$release$shared_ext' - finish_cmds= - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - dynamic_linker='Android linker' - # Don't embed -rpath directories since the linker doesn't support them. - hardcode_libdir_flag_spec='-L$libdir' - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - if test ${lt_cv_shlibpath_overrides_runpath+y} -then : - printf %s "(cached) " >&6 -else $as_nop - lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null -then : - lt_cv_shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -fi - - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Ideally, we could use ldconfig to report *all* directores which are - # searched for libraries, however this is still not possible. Aside from not - # being certain /sbin/ldconfig is available, command - # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, - # even though it is searched at run-time. Try to do the best guess by - # appending ld.so.conf contents (and includes) to the search path. - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd* | bitrig*) - version_type=sunos - sys_lib_dlsearch_path_spec=/usr/lib - need_lib_prefix=no - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - need_version=no - else - need_version=yes - fi - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -os2*) - libname_spec='$name' - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - # OS/2 can only load a DLL with a base name of 8 characters or less. - soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; - v=$($ECHO $release$versuffix | tr -d .-); - n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); - $ECHO $n$v`$shared_ext' - library_names_spec='${libname}_dll.$libext' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=BEGINLIBPATH - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - 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 - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test yes = "$with_gnu_ld"; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec; then - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' - soname_spec='$libname$shared_ext.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=sco - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test yes = "$with_gnu_ld"; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -printf "%s\n" "$dynamic_linker" >&6; } -test no = "$dynamic_linker" && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test yes = "$GCC"; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then - sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec -fi - -if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then - sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec -fi - -# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... -configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec - -# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code -func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" - -# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool -configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -printf %s "checking how to hardcode library paths into programs... " >&6; } -hardcode_action= -if test -n "$hardcode_libdir_flag_spec" || - test -n "$runpath_var" || - test yes = "$hardcode_automatic"; then - - # We can hardcode non-existent directories. - if test no != "$hardcode_direct" && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && - test no != "$hardcode_minus_L"; then - # Linking always hardcodes the temporary library directory. - hardcode_action=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action=unsupported -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 -printf "%s\n" "$hardcode_action" >&6; } - -if test relink = "$hardcode_action" || - test yes = "$inherit_rpath"; then - # Fast installation is not supported - enable_fast_install=no -elif test yes = "$shlibpath_overrides_runpath" || - test no = "$enable_shared"; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - if test yes != "$enable_dlopen"; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen=load_add_on - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen=LoadLibrary - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen=dlopen - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -printf %s "checking for dlopen in -ldl... " >&6; } -if test ${ac_cv_lib_dl_dlopen+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int main (void) -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_dl_dlopen=yes -else $as_nop - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes -then : - lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl -else $as_nop - - lt_cv_dlopen=dyld - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - -fi - - ;; - - tpf*) - # Don't try to run any link tests for TPF. We know it's impossible - # because TPF is a cross-compiler, and we know how we open DSOs. - lt_cv_dlopen=dlopen - lt_cv_dlopen_libs= - lt_cv_dlopen_self=no - ;; - - *) - ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" -if test "x$ac_cv_func_shl_load" = xyes -then : - lt_cv_dlopen=shl_load -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 -printf %s "checking for shl_load in -ldld... " >&6; } -if test ${ac_cv_lib_dld_shl_load+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char shl_load (); -int main (void) -{ -return shl_load (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_dld_shl_load=yes -else $as_nop - ac_cv_lib_dld_shl_load=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 -printf "%s\n" "$ac_cv_lib_dld_shl_load" >&6; } -if test "x$ac_cv_lib_dld_shl_load" = xyes -then : - lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld -else $as_nop - ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" -if test "x$ac_cv_func_dlopen" = xyes -then : - lt_cv_dlopen=dlopen -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -printf %s "checking for dlopen in -ldl... " >&6; } -if test ${ac_cv_lib_dl_dlopen+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int main (void) -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_dl_dlopen=yes -else $as_nop - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes -then : - lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 -printf %s "checking for dlopen in -lsvld... " >&6; } -if test ${ac_cv_lib_svld_dlopen+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsvld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int main (void) -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_svld_dlopen=yes -else $as_nop - ac_cv_lib_svld_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 -printf "%s\n" "$ac_cv_lib_svld_dlopen" >&6; } -if test "x$ac_cv_lib_svld_dlopen" = xyes -then : - lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 -printf %s "checking for dld_link in -ldld... " >&6; } -if test ${ac_cv_lib_dld_dld_link+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char dld_link (); -int main (void) -{ -return dld_link (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_dld_dld_link=yes -else $as_nop - ac_cv_lib_dld_dld_link=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 -printf "%s\n" "$ac_cv_lib_dld_dld_link" >&6; } -if test "x$ac_cv_lib_dld_dld_link" = xyes -then : - lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld -fi - - -fi - - -fi - - -fi - - -fi - - -fi - - ;; - esac - - if test no = "$lt_cv_dlopen"; then - enable_dlopen=no - else - enable_dlopen=yes - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS=$CPPFLAGS - test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS=$LDFLAGS - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS=$LIBS - LIBS="$lt_cv_dlopen_libs $LIBS" - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 -printf %s "checking whether a program can dlopen itself... " >&6; } -if test ${lt_cv_dlopen_self+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test yes = "$cross_compiling"; then : - lt_cv_dlopen_self=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisibility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self=no - fi -fi -rm -fr conftest* - - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 -printf "%s\n" "$lt_cv_dlopen_self" >&6; } - - if test yes = "$lt_cv_dlopen_self"; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 -printf %s "checking whether a statically linked program can dlopen itself... " >&6; } -if test ${lt_cv_dlopen_self_static+y} -then : - printf %s "(cached) " >&6 -else $as_nop - if test yes = "$cross_compiling"; then : - lt_cv_dlopen_self_static=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisibility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self_static=no - fi -fi -rm -fr conftest* - - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 -printf "%s\n" "$lt_cv_dlopen_self_static" >&6; } - fi - - CPPFLAGS=$save_CPPFLAGS - LDFLAGS=$save_LDFLAGS - LIBS=$save_LIBS - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi - - - - - - - - - - - - - - - - - -striplib= -old_striplib= -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 -printf %s "checking whether stripping libraries is possible... " >&6; } -if test -z "$STRIP"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -else - if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - old_striplib="$STRIP --strip-debug" - striplib="$STRIP --strip-unneeded" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - else - case $host_os in - darwin*) - # FIXME - insert some real tests, host_os isn't really good enough - striplib="$STRIP -x" - old_striplib="$STRIP -S" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - freebsd*) - if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then - old_striplib="$STRIP --strip-debug" - striplib="$STRIP --strip-unneeded" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - fi - ;; - *) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; - esac - fi -fi - - - - - - - - - - - - - # Report what library types will actually be built - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 -printf %s "checking if libtool supports shared libraries... " >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 -printf "%s\n" "$can_build_shared" >&6; } - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 -printf %s "checking whether to build shared libraries... " >&6; } - test no = "$can_build_shared" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test yes = "$enable_shared" && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[4-9]*) - if test ia64 != "$host_cpu"; then - case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in - yes,aix,yes) ;; # shared object as lib.so file only - yes,svr4,*) ;; # shared object as lib.so archive member only - yes,*) enable_static=no ;; # shared object in lib.a archive as well - esac - fi - ;; - esac - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 -printf "%s\n" "$enable_shared" >&6; } - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 -printf %s "checking whether to build static libraries... " >&6; } - # Make sure either enable_shared or enable_static is yes. - test yes = "$enable_shared" || enable_static=yes - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 -printf "%s\n" "$enable_static" >&6; } - - - - -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 - -CC=$lt_save_CC - - - - - - - - - - - - - - - - ac_config_commands="$ac_config_commands libtool" - - - - -# Only expand once: - - -## --------------------- ## -## End of libtool code ## -## --------------------- ## - -# -# Verify if finally libtool shared libraries will be built -# - -case "x$enable_shared" in # (( - xyes | xno) - xc_lt_build_shared=$enable_shared - ;; - *) - as_fn_error $? "unexpected libtool enable_shared value: $enable_shared" "$LINENO" 5 - ;; -esac - -# -# Verify if finally libtool static libraries will be built -# - -case "x$enable_static" in # (( - xyes | xno) - xc_lt_build_static=$enable_static - ;; - *) - as_fn_error $? "unexpected libtool enable_static value: $enable_static" "$LINENO" 5 - ;; -esac - -# -# Verify if libtool shared libraries should be linked using flag -version-info -# - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries with -version-info" >&5 -printf %s "checking whether to build shared libraries with -version-info... " >&6; } -xc_lt_shlib_use_version_info='yes' -if test "x$version_type" = 'xnone'; then - xc_lt_shlib_use_version_info='no' -fi -case $host_os in # ( - amigaos*) - xc_lt_shlib_use_version_info='yes' - ;; -esac -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xc_lt_shlib_use_version_info" >&5 -printf "%s\n" "$xc_lt_shlib_use_version_info" >&6; } - -# -# Verify if libtool shared libraries should be linked using flag -no-undefined -# - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries with -no-undefined" >&5 -printf %s "checking whether to build shared libraries with -no-undefined... " >&6; } -xc_lt_shlib_use_no_undefined='no' -if test "x$allow_undefined" = 'xno'; then - xc_lt_shlib_use_no_undefined='yes' -elif test "x$allow_undefined_flag" = 'xunsupported'; then - xc_lt_shlib_use_no_undefined='yes' -fi -case $host_os in # ( - cygwin* | mingw* | pw32* | cegcc* | os2* | aix*) - xc_lt_shlib_use_no_undefined='yes' - ;; -esac -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xc_lt_shlib_use_no_undefined" >&5 -printf "%s\n" "$xc_lt_shlib_use_no_undefined" >&6; } - -# -# Verify if libtool shared libraries should be linked using flag -mimpure-text -# - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries with -mimpure-text" >&5 -printf %s "checking whether to build shared libraries with -mimpure-text... " >&6; } -xc_lt_shlib_use_mimpure_text='no' -case $host_os in # ( - solaris2*) - if test "x$GCC" = 'xyes'; then - xc_lt_shlib_use_mimpure_text='yes' - fi - ;; -esac -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xc_lt_shlib_use_mimpure_text" >&5 -printf "%s\n" "$xc_lt_shlib_use_mimpure_text" >&6; } - -# -# Find out whether libtool libraries would be built wit PIC -# - -case "x$pic_mode" in # (((( - xdefault) - xc_lt_build_shared_with_pic='yes' - xc_lt_build_static_with_pic='no' - ;; - xyes) - xc_lt_build_shared_with_pic='yes' - xc_lt_build_static_with_pic='yes' - ;; - xno) - xc_lt_build_shared_with_pic='no' - xc_lt_build_static_with_pic='no' - ;; - *) - xc_lt_build_shared_with_pic='unknown' - xc_lt_build_static_with_pic='unknown' - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unexpected libtool pic_mode value: $pic_mode" >&5 -printf "%s\n" "$as_me: WARNING: unexpected libtool pic_mode value: $pic_mode" >&2;} - ;; -esac -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries with PIC" >&5 -printf %s "checking whether to build shared libraries with PIC... " >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xc_lt_build_shared_with_pic" >&5 -printf "%s\n" "$xc_lt_build_shared_with_pic" >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries with PIC" >&5 -printf %s "checking whether to build static libraries with PIC... " >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xc_lt_build_static_with_pic" >&5 -printf "%s\n" "$xc_lt_build_static_with_pic" >&6; } - -# -# Verify if libtool shared libraries will be built while static not built -# - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries only" >&5 -printf %s "checking whether to build shared libraries only... " >&6; } -if test "$xc_lt_build_shared" = 'yes' && - test "$xc_lt_build_static" = 'no'; then - xc_lt_build_shared_only='yes' -else - xc_lt_build_shared_only='no' -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xc_lt_build_shared_only" >&5 -printf "%s\n" "$xc_lt_build_shared_only" >&6; } - -# -# Verify if libtool static libraries will be built while shared not built -# - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries only" >&5 -printf %s "checking whether to build static libraries only... " >&6; } -if test "$xc_lt_build_static" = 'yes' && - test "$xc_lt_build_shared" = 'no'; then - xc_lt_build_static_only='yes' -else - xc_lt_build_static_only='no' -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $xc_lt_build_static_only" >&5 -printf "%s\n" "$xc_lt_build_static_only" >&6; } - - - - -# -# Automake conditionals based on libtool related checks -# - - if test "x$xc_lt_shlib_use_version_info" = 'xyes'; then - CURL_LT_SHLIB_USE_VERSION_INFO_TRUE= - CURL_LT_SHLIB_USE_VERSION_INFO_FALSE='#' -else - CURL_LT_SHLIB_USE_VERSION_INFO_TRUE='#' - CURL_LT_SHLIB_USE_VERSION_INFO_FALSE= -fi - - if test "x$xc_lt_shlib_use_no_undefined" = 'xyes'; then - CURL_LT_SHLIB_USE_NO_UNDEFINED_TRUE= - CURL_LT_SHLIB_USE_NO_UNDEFINED_FALSE='#' -else - CURL_LT_SHLIB_USE_NO_UNDEFINED_TRUE='#' - CURL_LT_SHLIB_USE_NO_UNDEFINED_FALSE= -fi - - if test "x$xc_lt_shlib_use_mimpure_text" = 'xyes'; then - CURL_LT_SHLIB_USE_MIMPURE_TEXT_TRUE= - CURL_LT_SHLIB_USE_MIMPURE_TEXT_FALSE='#' -else - CURL_LT_SHLIB_USE_MIMPURE_TEXT_TRUE='#' - CURL_LT_SHLIB_USE_MIMPURE_TEXT_FALSE= -fi - - -# -# Due to libtool and automake machinery limitations of not allowing -# specifying separate CPPFLAGS or CFLAGS when compiling objects for -# inclusion of these in shared or static libraries, we are forced to -# build using separate configure runs for shared and static libraries -# on systems where different CPPFLAGS or CFLAGS are mandatory in order -# to compile objects for each kind of library. Notice that relying on -# the '-DPIC' CFLAG that libtool provides is not valid given that the -# user might for example choose to build static libraries with PIC. -# - -# -# Make our Makefile.am files use the staticlib CPPFLAG only when strictly -# targeting a static library and not building its shared counterpart. -# - - if test "x$xc_lt_build_static_only" = 'xyes'; then - USE_CPPFLAG_CURL_STATICLIB_TRUE= - USE_CPPFLAG_CURL_STATICLIB_FALSE='#' -else - USE_CPPFLAG_CURL_STATICLIB_TRUE='#' - USE_CPPFLAG_CURL_STATICLIB_FALSE= -fi - - -# -# Make staticlib CPPFLAG variable and its definition visible in output -# files unconditionally, providing an empty definition unless strictly -# targeting a static library and not building its shared counterpart. -# - -CPPFLAG_CURL_STATICLIB= -if test "x$xc_lt_build_static_only" = 'xyes'; then - CPPFLAG_CURL_STATICLIB='-DCURL_STATICLIB' -fi - - - -# Determine whether all dependent libraries must be specified when linking -if test "X$enable_shared" = "Xyes" -a "X$link_all_deplibs" = "Xno" -then - REQUIRE_LIB_DEPS=no -else - REQUIRE_LIB_DEPS=yes -fi - - if test x$REQUIRE_LIB_DEPS = xyes; then - USE_EXPLICIT_LIB_DEPS_TRUE= - USE_EXPLICIT_LIB_DEPS_FALSE='#' -else - USE_EXPLICIT_LIB_DEPS_TRUE='#' - USE_EXPLICIT_LIB_DEPS_FALSE= -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 -printf %s "checking for inline... " >&6; } -if test ${ac_cv_c_inline+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_cv_c_inline=no -for ac_kw in inline __inline__ __inline; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifndef __cplusplus -typedef int foo_t; -static $ac_kw foo_t static_foo (void) {return 0; } -$ac_kw foo_t foo (void) {return 0; } -#endif - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_c_inline=$ac_kw -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - test "$ac_cv_c_inline" != no && break -done - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 -printf "%s\n" "$ac_cv_c_inline" >&6; } - -case $ac_cv_c_inline in - inline | yes) ;; - *) - case $ac_cv_c_inline in - no) ac_val=;; - *) ac_val=$ac_cv_c_inline;; - esac - cat >>confdefs.h <<_ACEOF -#ifndef __cplusplus -#define inline $ac_val -#endif -_ACEOF - ;; -esac - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if cpp -P is needed" >&5 -printf %s "checking if cpp -P is needed... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include -TEST EINVAL TEST - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "TEST.*TEST" >/dev/null 2>&1 -then : - cpp=no -else $as_nop - cpp=yes -fi -rm -rf conftest* - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cpp" >&5 -printf "%s\n" "$cpp" >&6; } - - if test "x$cpp" = "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if cpp -P works" >&5 -printf %s "checking if cpp -P works... " >&6; } - OLDCPPFLAGS=$CPPFLAGS - CPPFLAGS="$CPPFLAGS -P" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include -TEST EINVAL TEST - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "TEST.*TEST" >/dev/null 2>&1 -then : - cpp_p=yes -else $as_nop - cpp_p=no -fi -rm -rf conftest* - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cpp_p" >&5 -printf "%s\n" "$cpp_p" >&6; } - - if test "x$cpp_p" = "xno"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: failed to figure out cpp -P alternative" >&5 -printf "%s\n" "$as_me: WARNING: failed to figure out cpp -P alternative" >&2;} - # without -P - CPPPFLAG="" - else - # with -P - CPPPFLAG="-P" - fi - CPPFLAGS=$OLDCPPFLAGS - else - # without -P - CPPPFLAG="" - fi - - - # - compiler_id="unknown" - compiler_num="0" - # - flags_dbg_yes="unknown" - flags_opt_all="unknown" - flags_opt_yes="unknown" - flags_opt_off="unknown" - # - flags_prefer_cppflags="no" - # - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler is DEC/Compaq/HP C" >&5 -printf %s "checking if compiler is DEC/Compaq/HP C... " >&6; } - - OLDCPPFLAGS=$CPPFLAGS - # CPPPFLAG comes from CURL_CPP_P - CPPFLAGS="$CPPFLAGS $CPPPFLAG" - if test -z "$SED"; then - as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5 - fi - if test -z "$GREP"; then - as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5 - fi - - tmp_exp="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __DECC -CURL_DEF_TOKEN __DECC -#endif - - -_ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : - - tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \ - "$GREP" CURL_DEF_TOKEN 2>/dev/null | \ - "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \ - "$SED" 's/["][ ]*["]//g' 2>/dev/null` - if test -z "$tmp_exp" || test "$tmp_exp" = "__DECC"; then - tmp_exp="" - fi - -fi -rm -f conftest.err conftest.i conftest.$ac_ext - if test -z "$tmp_exp"; then - curl_cv_have_def___DECC=no - - else - curl_cv_have_def___DECC=yes - curl_cv_def___DECC=$tmp_exp - - fi - CPPFLAGS=$OLDCPPFLAGS - - - OLDCPPFLAGS=$CPPFLAGS - # CPPPFLAG comes from CURL_CPP_P - CPPFLAGS="$CPPFLAGS $CPPPFLAG" - if test -z "$SED"; then - as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5 - fi - if test -z "$GREP"; then - as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5 - fi - - tmp_exp="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __DECC_VER -CURL_DEF_TOKEN __DECC_VER -#endif - - -_ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : - - tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \ - "$GREP" CURL_DEF_TOKEN 2>/dev/null | \ - "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \ - "$SED" 's/["][ ]*["]//g' 2>/dev/null` - if test -z "$tmp_exp" || test "$tmp_exp" = "__DECC_VER"; then - tmp_exp="" - fi - -fi -rm -f conftest.err conftest.i conftest.$ac_ext - if test -z "$tmp_exp"; then - curl_cv_have_def___DECC_VER=no - - else - curl_cv_have_def___DECC_VER=yes - curl_cv_def___DECC_VER=$tmp_exp - - fi - CPPFLAGS=$OLDCPPFLAGS - - if test "$curl_cv_have_def___DECC" = "yes" && - test "$curl_cv_have_def___DECC_VER" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - compiler_id="DEC_C" - flags_dbg_yes="-g2" - flags_opt_all="-O -O0 -O1 -O2 -O3 -O4" - flags_opt_yes="-O1" - flags_opt_off="-O0" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - fi - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler is HP-UX C" >&5 -printf %s "checking if compiler is HP-UX C... " >&6; } - - OLDCPPFLAGS=$CPPFLAGS - # CPPPFLAG comes from CURL_CPP_P - CPPFLAGS="$CPPFLAGS $CPPPFLAG" - if test -z "$SED"; then - as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5 - fi - if test -z "$GREP"; then - as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5 - fi - - tmp_exp="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __HP_cc -CURL_DEF_TOKEN __HP_cc -#endif - - -_ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : - - tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \ - "$GREP" CURL_DEF_TOKEN 2>/dev/null | \ - "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \ - "$SED" 's/["][ ]*["]//g' 2>/dev/null` - if test -z "$tmp_exp" || test "$tmp_exp" = "__HP_cc"; then - tmp_exp="" - fi - -fi -rm -f conftest.err conftest.i conftest.$ac_ext - if test -z "$tmp_exp"; then - curl_cv_have_def___HP_cc=no - - else - curl_cv_have_def___HP_cc=yes - curl_cv_def___HP_cc=$tmp_exp - - fi - CPPFLAGS=$OLDCPPFLAGS - - if test "$curl_cv_have_def___HP_cc" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - compiler_id="HP_UX_C" - flags_dbg_yes="-g" - flags_opt_all="-O +O0 +O1 +O2 +O3 +O4" - flags_opt_yes="+O2" - flags_opt_off="+O0" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - fi - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler is IBM C" >&5 -printf %s "checking if compiler is IBM C... " >&6; } - - OLDCPPFLAGS=$CPPFLAGS - # CPPPFLAG comes from CURL_CPP_P - CPPFLAGS="$CPPFLAGS $CPPPFLAG" - if test -z "$SED"; then - as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5 - fi - if test -z "$GREP"; then - as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5 - fi - - tmp_exp="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __IBMC__ -CURL_DEF_TOKEN __IBMC__ -#endif - - -_ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : - - tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \ - "$GREP" CURL_DEF_TOKEN 2>/dev/null | \ - "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \ - "$SED" 's/["][ ]*["]//g' 2>/dev/null` - if test -z "$tmp_exp" || test "$tmp_exp" = "__IBMC__"; then - tmp_exp="" - fi - -fi -rm -f conftest.err conftest.i conftest.$ac_ext - if test -z "$tmp_exp"; then - curl_cv_have_def___IBMC__=no - - else - curl_cv_have_def___IBMC__=yes - curl_cv_def___IBMC__=$tmp_exp - - fi - CPPFLAGS=$OLDCPPFLAGS - - if test "$curl_cv_have_def___IBMC__" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - compiler_id="IBM_C" - flags_dbg_yes="-g" - flags_opt_all="-O -O0 -O1 -O2 -O3 -O4 -O5" - flags_opt_all="$flags_opt_all -qnooptimize" - flags_opt_all="$flags_opt_all -qoptimize=0" - flags_opt_all="$flags_opt_all -qoptimize=1" - flags_opt_all="$flags_opt_all -qoptimize=2" - flags_opt_all="$flags_opt_all -qoptimize=3" - flags_opt_all="$flags_opt_all -qoptimize=4" - flags_opt_all="$flags_opt_all -qoptimize=5" - flags_opt_yes="-O2" - flags_opt_off="-qnooptimize" - flags_prefer_cppflags="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - fi - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler is Intel C" >&5 -printf %s "checking if compiler is Intel C... " >&6; } - - OLDCPPFLAGS=$CPPFLAGS - # CPPPFLAG comes from CURL_CPP_P - CPPFLAGS="$CPPFLAGS $CPPPFLAG" - if test -z "$SED"; then - as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5 - fi - if test -z "$GREP"; then - as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5 - fi - - tmp_exp="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __INTEL_COMPILER -CURL_DEF_TOKEN __INTEL_COMPILER -#endif - - -_ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : - - tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \ - "$GREP" CURL_DEF_TOKEN 2>/dev/null | \ - "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \ - "$SED" 's/["][ ]*["]//g' 2>/dev/null` - if test -z "$tmp_exp" || test "$tmp_exp" = "__INTEL_COMPILER"; then - tmp_exp="" - fi - -fi -rm -f conftest.err conftest.i conftest.$ac_ext - if test -z "$tmp_exp"; then - curl_cv_have_def___INTEL_COMPILER=no - - else - curl_cv_have_def___INTEL_COMPILER=yes - curl_cv_def___INTEL_COMPILER=$tmp_exp - - fi - CPPFLAGS=$OLDCPPFLAGS - - if test "$curl_cv_have_def___INTEL_COMPILER" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - compiler_num="$curl_cv_def___INTEL_COMPILER" - - OLDCPPFLAGS=$CPPFLAGS - # CPPPFLAG comes from CURL_CPP_P - CPPFLAGS="$CPPFLAGS $CPPPFLAG" - if test -z "$SED"; then - as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5 - fi - if test -z "$GREP"; then - as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5 - fi - - tmp_exp="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __unix__ -CURL_DEF_TOKEN __unix__ -#endif - - -_ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : - - tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \ - "$GREP" CURL_DEF_TOKEN 2>/dev/null | \ - "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \ - "$SED" 's/["][ ]*["]//g' 2>/dev/null` - if test -z "$tmp_exp" || test "$tmp_exp" = ""; then - tmp_exp="" - fi - -fi -rm -f conftest.err conftest.i conftest.$ac_ext - if test -z "$tmp_exp"; then - curl_cv_have_def___unix__=no - - else - curl_cv_have_def___unix__=yes - curl_cv_def___unix__=$tmp_exp - - fi - CPPFLAGS=$OLDCPPFLAGS - - if test "$curl_cv_have_def___unix__" = "yes"; then - compiler_id="INTEL_UNIX_C" - flags_dbg_yes="-g" - flags_opt_all="-O -O0 -O1 -O2 -O3 -Os" - flags_opt_yes="-O2" - flags_opt_off="-O0" - else - compiler_id="INTEL_WINDOWS_C" - flags_dbg_yes="/Zi /Oy-" - flags_opt_all="/O /O0 /O1 /O2 /O3 /Od /Og /Og- /Oi /Oi-" - flags_opt_yes="/O2" - flags_opt_off="/Od" - fi - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - fi - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler is clang" >&5 -printf %s "checking if compiler is clang... " >&6; } - - OLDCPPFLAGS=$CPPFLAGS - # CPPPFLAG comes from CURL_CPP_P - CPPFLAGS="$CPPFLAGS $CPPPFLAG" - if test -z "$SED"; then - as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5 - fi - if test -z "$GREP"; then - as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5 - fi - - tmp_exp="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __clang__ -CURL_DEF_TOKEN __clang__ -#endif - - -_ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : - - tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \ - "$GREP" CURL_DEF_TOKEN 2>/dev/null | \ - "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \ - "$SED" 's/["][ ]*["]//g' 2>/dev/null` - if test -z "$tmp_exp" || test "$tmp_exp" = "__clang__"; then - tmp_exp="" - fi - -fi -rm -f conftest.err conftest.i conftest.$ac_ext - if test -z "$tmp_exp"; then - curl_cv_have_def___clang__=no - - else - curl_cv_have_def___clang__=yes - curl_cv_def___clang__=$tmp_exp - - fi - CPPFLAGS=$OLDCPPFLAGS - - if test "$curl_cv_have_def___clang__" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler is xlclang" >&5 -printf %s "checking if compiler is xlclang... " >&6; } - - OLDCPPFLAGS=$CPPFLAGS - # CPPPFLAG comes from CURL_CPP_P - CPPFLAGS="$CPPFLAGS $CPPPFLAG" - if test -z "$SED"; then - as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5 - fi - if test -z "$GREP"; then - as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5 - fi - - tmp_exp="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __ibmxl__ -CURL_DEF_TOKEN __ibmxl__ -#endif - - -_ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : - - tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \ - "$GREP" CURL_DEF_TOKEN 2>/dev/null | \ - "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \ - "$SED" 's/["][ ]*["]//g' 2>/dev/null` - if test -z "$tmp_exp" || test "$tmp_exp" = "__ibmxl__"; then - tmp_exp="" - fi - -fi -rm -f conftest.err conftest.i conftest.$ac_ext - if test -z "$tmp_exp"; then - curl_cv_have_def___ibmxl__=no - - else - curl_cv_have_def___ibmxl__=yes - curl_cv_def___ibmxl__=$tmp_exp - - fi - CPPFLAGS=$OLDCPPFLAGS - - if test "$curl_cv_have_def___ibmxl__" = "yes" ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - compiler_id="XLCLANG" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - compiler_id="CLANG" - fi - fullclangver=`$CC -v 2>&1 | grep version` - clangver=`echo $fullclangver | grep "based on LLVM " | "$SED" 's/.*(based on LLVM \([0-9]*\.[0-9]*\).*)/\1/'` - if test -z "$clangver"; then - if echo $fullclangver | grep "Apple LLVM version " >/dev/null; then - clangver="3.7" - else - clangver=`echo $fullclangver | "$SED" 's/.*version \([0-9]*\.[0-9]*\).*/\1/'` - fi - fi - clangvhi=`echo $clangver | cut -d . -f1` - clangvlo=`echo $clangver | cut -d . -f2` - compiler_num=`(expr $clangvhi "*" 100 + $clangvlo) 2>/dev/null` - flags_dbg_yes="-g" - flags_opt_all="-O -O0 -O1 -O2 -Os -O3 -O4" - flags_opt_yes="-Os" - flags_opt_off="-O0" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - fi - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler is GNU C" >&5 -printf %s "checking if compiler is GNU C... " >&6; } - - OLDCPPFLAGS=$CPPFLAGS - # CPPPFLAG comes from CURL_CPP_P - CPPFLAGS="$CPPFLAGS $CPPPFLAG" - if test -z "$SED"; then - as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5 - fi - if test -z "$GREP"; then - as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5 - fi - - tmp_exp="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __GNUC__ -CURL_DEF_TOKEN __GNUC__ -#endif - - -_ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : - - tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \ - "$GREP" CURL_DEF_TOKEN 2>/dev/null | \ - "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \ - "$SED" 's/["][ ]*["]//g' 2>/dev/null` - if test -z "$tmp_exp" || test "$tmp_exp" = "__GNUC__"; then - tmp_exp="" - fi - -fi -rm -f conftest.err conftest.i conftest.$ac_ext - if test -z "$tmp_exp"; then - curl_cv_have_def___GNUC__=no - - else - curl_cv_have_def___GNUC__=yes - curl_cv_def___GNUC__=$tmp_exp - - fi - CPPFLAGS=$OLDCPPFLAGS - - if test "$curl_cv_have_def___GNUC__" = "yes" && - test "$compiler_id" = "unknown"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - compiler_id="GNU_C" - gccver=`$CC -dumpversion` - gccvhi=`echo $gccver | cut -d . -f1` - gccvlo=`echo $gccver | cut -d . -f2` - compiler_num=`(expr $gccvhi "*" 100 + $gccvlo) 2>/dev/null` - flags_dbg_yes="-g" - flags_opt_all="-O -O0 -O1 -O2 -O3 -Os -Og -Ofast" - flags_opt_yes="-O2" - flags_opt_off="-O0" - - OLDCPPFLAGS=$CPPFLAGS - # CPPPFLAG comes from CURL_CPP_P - CPPFLAGS="$CPPFLAGS $CPPPFLAG" - if test -z "$SED"; then - as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5 - fi - if test -z "$GREP"; then - as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5 - fi - - tmp_exp="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef _WIN32 -CURL_DEF_TOKEN _WIN32 -#endif - - -_ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : - - tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \ - "$GREP" CURL_DEF_TOKEN 2>/dev/null | \ - "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \ - "$SED" 's/["][ ]*["]//g' 2>/dev/null` - if test -z "$tmp_exp" || test "$tmp_exp" = "_WIN32"; then - tmp_exp="" - fi - -fi -rm -f conftest.err conftest.i conftest.$ac_ext - if test -z "$tmp_exp"; then - curl_cv_have_def__WIN32=no - - else - curl_cv_have_def__WIN32=yes - curl_cv_def__WIN32=$tmp_exp - - fi - CPPFLAGS=$OLDCPPFLAGS - - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - fi - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler is LCC" >&5 -printf %s "checking if compiler is LCC... " >&6; } - - OLDCPPFLAGS=$CPPFLAGS - # CPPPFLAG comes from CURL_CPP_P - CPPFLAGS="$CPPFLAGS $CPPPFLAG" - if test -z "$SED"; then - as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5 - fi - if test -z "$GREP"; then - as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5 - fi - - tmp_exp="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __LCC__ -CURL_DEF_TOKEN __LCC__ -#endif - - -_ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : - - tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \ - "$GREP" CURL_DEF_TOKEN 2>/dev/null | \ - "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \ - "$SED" 's/["][ ]*["]//g' 2>/dev/null` - if test -z "$tmp_exp" || test "$tmp_exp" = "__LCC__"; then - tmp_exp="" - fi - -fi -rm -f conftest.err conftest.i conftest.$ac_ext - if test -z "$tmp_exp"; then - curl_cv_have_def___LCC__=no - - else - curl_cv_have_def___LCC__=yes - curl_cv_def___LCC__=$tmp_exp - - fi - CPPFLAGS=$OLDCPPFLAGS - - if test "$curl_cv_have_def___LCC__" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - compiler_id="LCC" - flags_dbg_yes="-g" - flags_opt_all="" - flags_opt_yes="" - flags_opt_off="" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - fi - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler is SGI MIPSpro C" >&5 -printf %s "checking if compiler is SGI MIPSpro C... " >&6; } - - OLDCPPFLAGS=$CPPFLAGS - # CPPPFLAG comes from CURL_CPP_P - CPPFLAGS="$CPPFLAGS $CPPPFLAG" - if test -z "$SED"; then - as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5 - fi - if test -z "$GREP"; then - as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5 - fi - - tmp_exp="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __GNUC__ -CURL_DEF_TOKEN __GNUC__ -#endif - - -_ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : - - tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \ - "$GREP" CURL_DEF_TOKEN 2>/dev/null | \ - "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \ - "$SED" 's/["][ ]*["]//g' 2>/dev/null` - if test -z "$tmp_exp" || test "$tmp_exp" = "__GNUC__"; then - tmp_exp="" - fi - -fi -rm -f conftest.err conftest.i conftest.$ac_ext - if test -z "$tmp_exp"; then - curl_cv_have_def___GNUC__=no - - else - curl_cv_have_def___GNUC__=yes - curl_cv_def___GNUC__=$tmp_exp - - fi - CPPFLAGS=$OLDCPPFLAGS - - - OLDCPPFLAGS=$CPPFLAGS - # CPPPFLAG comes from CURL_CPP_P - CPPFLAGS="$CPPFLAGS $CPPPFLAG" - if test -z "$SED"; then - as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5 - fi - if test -z "$GREP"; then - as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5 - fi - - tmp_exp="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef _COMPILER_VERSION -CURL_DEF_TOKEN _COMPILER_VERSION -#endif - - -_ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : - - tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \ - "$GREP" CURL_DEF_TOKEN 2>/dev/null | \ - "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \ - "$SED" 's/["][ ]*["]//g' 2>/dev/null` - if test -z "$tmp_exp" || test "$tmp_exp" = "_COMPILER_VERSION"; then - tmp_exp="" - fi - -fi -rm -f conftest.err conftest.i conftest.$ac_ext - if test -z "$tmp_exp"; then - curl_cv_have_def__COMPILER_VERSION=no - - else - curl_cv_have_def__COMPILER_VERSION=yes - curl_cv_def__COMPILER_VERSION=$tmp_exp - - fi - CPPFLAGS=$OLDCPPFLAGS - - - OLDCPPFLAGS=$CPPFLAGS - # CPPPFLAG comes from CURL_CPP_P - CPPFLAGS="$CPPFLAGS $CPPPFLAG" - if test -z "$SED"; then - as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5 - fi - if test -z "$GREP"; then - as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5 - fi - - tmp_exp="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef _SGI_COMPILER_VERSION -CURL_DEF_TOKEN _SGI_COMPILER_VERSION -#endif - - -_ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : - - tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \ - "$GREP" CURL_DEF_TOKEN 2>/dev/null | \ - "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \ - "$SED" 's/["][ ]*["]//g' 2>/dev/null` - if test -z "$tmp_exp" || test "$tmp_exp" = "_SGI_COMPILER_VERSION"; then - tmp_exp="" - fi - -fi -rm -f conftest.err conftest.i conftest.$ac_ext - if test -z "$tmp_exp"; then - curl_cv_have_def__SGI_COMPILER_VERSION=no - - else - curl_cv_have_def__SGI_COMPILER_VERSION=yes - curl_cv_def__SGI_COMPILER_VERSION=$tmp_exp - - fi - CPPFLAGS=$OLDCPPFLAGS - - if test "$curl_cv_have_def___GNUC__" = "no" && - (test "$curl_cv_have_def__SGI_COMPILER_VERSION" = "yes" || - test "$curl_cv_have_def__COMPILER_VERSION" = "yes"); then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - compiler_id="SGI_MIPSPRO_C" - flags_dbg_yes="-g" - flags_opt_all="-O -O0 -O1 -O2 -O3 -Ofast" - flags_opt_yes="-O2" - flags_opt_off="-O0" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - fi - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler is SGI MIPS C" >&5 -printf %s "checking if compiler is SGI MIPS C... " >&6; } - - OLDCPPFLAGS=$CPPFLAGS - # CPPPFLAG comes from CURL_CPP_P - CPPFLAGS="$CPPFLAGS $CPPPFLAG" - if test -z "$SED"; then - as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5 - fi - if test -z "$GREP"; then - as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5 - fi - - tmp_exp="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __GNUC__ -CURL_DEF_TOKEN __GNUC__ -#endif - - -_ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : - - tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \ - "$GREP" CURL_DEF_TOKEN 2>/dev/null | \ - "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \ - "$SED" 's/["][ ]*["]//g' 2>/dev/null` - if test -z "$tmp_exp" || test "$tmp_exp" = "__GNUC__"; then - tmp_exp="" - fi - -fi -rm -f conftest.err conftest.i conftest.$ac_ext - if test -z "$tmp_exp"; then - curl_cv_have_def___GNUC__=no - - else - curl_cv_have_def___GNUC__=yes - curl_cv_def___GNUC__=$tmp_exp - - fi - CPPFLAGS=$OLDCPPFLAGS - - - OLDCPPFLAGS=$CPPFLAGS - # CPPPFLAG comes from CURL_CPP_P - CPPFLAGS="$CPPFLAGS $CPPPFLAG" - if test -z "$SED"; then - as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5 - fi - if test -z "$GREP"; then - as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5 - fi - - tmp_exp="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __sgi -CURL_DEF_TOKEN __sgi -#endif - - -_ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : - - tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \ - "$GREP" CURL_DEF_TOKEN 2>/dev/null | \ - "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \ - "$SED" 's/["][ ]*["]//g' 2>/dev/null` - if test -z "$tmp_exp" || test "$tmp_exp" = "__sgi"; then - tmp_exp="" - fi - -fi -rm -f conftest.err conftest.i conftest.$ac_ext - if test -z "$tmp_exp"; then - curl_cv_have_def___sgi=no - - else - curl_cv_have_def___sgi=yes - curl_cv_def___sgi=$tmp_exp - - fi - CPPFLAGS=$OLDCPPFLAGS - - if test "$curl_cv_have_def___GNUC__" = "no" && - test "$curl_cv_have_def___sgi" = "yes" && - test "$compiler_id" = "unknown"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - compiler_id="SGI_MIPS_C" - flags_dbg_yes="-g" - flags_opt_all="-O -O0 -O1 -O2 -O3 -Ofast" - flags_opt_yes="-O2" - flags_opt_off="-O0" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - fi - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler is SunPro C" >&5 -printf %s "checking if compiler is SunPro C... " >&6; } - - OLDCPPFLAGS=$CPPFLAGS - # CPPPFLAG comes from CURL_CPP_P - CPPFLAGS="$CPPFLAGS $CPPPFLAG" - if test -z "$SED"; then - as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5 - fi - if test -z "$GREP"; then - as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5 - fi - - tmp_exp="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __SUNPRO_C -CURL_DEF_TOKEN __SUNPRO_C -#endif - - -_ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : - - tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \ - "$GREP" CURL_DEF_TOKEN 2>/dev/null | \ - "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \ - "$SED" 's/["][ ]*["]//g' 2>/dev/null` - if test -z "$tmp_exp" || test "$tmp_exp" = "__SUNPRO_C"; then - tmp_exp="" - fi - -fi -rm -f conftest.err conftest.i conftest.$ac_ext - if test -z "$tmp_exp"; then - curl_cv_have_def___SUNPRO_C=no - - else - curl_cv_have_def___SUNPRO_C=yes - curl_cv_def___SUNPRO_C=$tmp_exp - - fi - CPPFLAGS=$OLDCPPFLAGS - - if test "$curl_cv_have_def___SUNPRO_C" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - compiler_id="SUNPRO_C" - flags_dbg_yes="-g" - flags_opt_all="-O -xO -xO1 -xO2 -xO3 -xO4 -xO5" - flags_opt_yes="-xO2" - flags_opt_off="" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - fi - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler is Tiny C" >&5 -printf %s "checking if compiler is Tiny C... " >&6; } - - OLDCPPFLAGS=$CPPFLAGS - # CPPPFLAG comes from CURL_CPP_P - CPPFLAGS="$CPPFLAGS $CPPPFLAG" - if test -z "$SED"; then - as_fn_error $? "SED not set. Cannot continue without SED being set." "$LINENO" 5 - fi - if test -z "$GREP"; then - as_fn_error $? "GREP not set. Cannot continue without GREP being set." "$LINENO" 5 - fi - - tmp_exp="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __TINYC__ -CURL_DEF_TOKEN __TINYC__ -#endif - - -_ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : - - tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \ - "$GREP" CURL_DEF_TOKEN 2>/dev/null | \ - "$SED" 's/.*CURL_DEF_TOKEN[ ][ ]*//' 2>/dev/null | \ - "$SED" 's/["][ ]*["]//g' 2>/dev/null` - if test -z "$tmp_exp" || test "$tmp_exp" = "__TINYC__"; then - tmp_exp="" - fi - -fi -rm -f conftest.err conftest.i conftest.$ac_ext - if test -z "$tmp_exp"; then - curl_cv_have_def___TINYC__=no - - else - curl_cv_have_def___TINYC__=yes - curl_cv_def___TINYC__=$tmp_exp - - fi - CPPFLAGS=$OLDCPPFLAGS - - if test "$curl_cv_have_def___TINYC__" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - compiler_id="TINY_C" - flags_dbg_yes="-g" - flags_opt_all="" - flags_opt_yes="" - flags_opt_off="" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - fi - - # - if test "$compiler_id" = "unknown"; then - cat <<_EOF 1>&2 -*** -*** Warning: This configure script does not have information about the -*** compiler you are using, relative to the flags required to enable or -*** disable generation of debug info, optimization options or warnings. -*** -*** Whatever settings are present in CFLAGS will be used for this run. -*** -*** If you wish to help the curl project to better support your compiler -*** you can report this and the required info on the libcurl development -*** mailing list: https://lists.haxx.selistinfo/curl-library/ -*** -_EOF - fi - - -squeeze() { - _sqz_result="" - eval _sqz_input=\$$1 - for _sqz_token in $_sqz_input; do - if test -z "$_sqz_result"; then - _sqz_result="$_sqz_token" - else - _sqz_result="$_sqz_result $_sqz_token" - fi - done - eval $1=\$_sqz_result - return 0 -} - - - # - if test "$compiler_id" != "unknown"; then - # - tmp_save_CPPFLAGS="$CPPFLAGS" - tmp_save_CFLAGS="$CFLAGS" - tmp_CPPFLAGS="" - tmp_CFLAGS="" - # - case "$compiler_id" in - # - CLANG) - # - tmp_CFLAGS="$tmp_CFLAGS -Qunused-arguments" - tmp_CFLAGS="$tmp_CFLAGS -Wno-pointer-bool-conversion" - ;; - # - DEC_C) - # - tmp_CFLAGS="$tmp_CFLAGS -std1" - tmp_CFLAGS="$tmp_CFLAGS -noansi_alias" - tmp_CFLAGS="$tmp_CFLAGS -warnprotos" - tmp_CFLAGS="$tmp_CFLAGS -msg_fatal toofewargs,toomanyargs" - ;; - # - GNU_C) - # - if test "$compiler_num" -ge "295"; then - tmp_CFLAGS="$tmp_CFLAGS -Werror-implicit-function-declaration" - fi - ;; - # - HP_UX_C) - # - tmp_CFLAGS="$tmp_CFLAGS -z" - tmp_CFLAGS="$tmp_CFLAGS +W 4227,4255" - ;; - # - IBM_C) - # - tmp_CPPFLAGS="$tmp_CPPFLAGS -qthreaded" - tmp_CPPFLAGS="$tmp_CPPFLAGS -qnoansialias" - tmp_CPPFLAGS="$tmp_CPPFLAGS -qhalt=e" - ;; - # - INTEL_UNIX_C) - # - tmp_CFLAGS="$tmp_CFLAGS -std=gnu89" - tmp_CPPFLAGS="$tmp_CPPFLAGS -diag-error 140,147,165,266" - tmp_CPPFLAGS="$tmp_CPPFLAGS -diag-disable 279,981,1025,1469,2259" - ;; - # - INTEL_WINDOWS_C) - # - tmp_CFLAGS="$tmp_CFLAGS" - ;; - # - LCC) - # - tmp_CFLAGS="$tmp_CFLAGS -n" - ;; - # - SGI_MIPS_C) - # - tmp_CFLAGS="$tmp_CFLAGS" - ;; - # - SGI_MIPSPRO_C) - # - tmp_CFLAGS="$tmp_CFLAGS" - ;; - # - SUNPRO_C) - # - tmp_CFLAGS="$tmp_CFLAGS" - ;; - # - TINY_C) - # - tmp_CFLAGS="$tmp_CFLAGS" - ;; - # - esac - # - squeeze tmp_CPPFLAGS - squeeze tmp_CFLAGS - # - if test ! -z "$tmp_CFLAGS" || test ! -z "$tmp_CPPFLAGS"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler accepts some basic options" >&5 -printf %s "checking if compiler accepts some basic options... " >&6; } - CPPFLAGS="$tmp_save_CPPFLAGS $tmp_CPPFLAGS" - CFLAGS="$tmp_save_CFLAGS $tmp_CFLAGS" - squeeze CPPFLAGS - squeeze CFLAGS - - tmp_compiler_works="unknown" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - -int main (void) -{ - - int i = 1; - return i; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - tmp_compiler_works="yes" - -else $as_nop - - tmp_compiler_works="no" - echo " " >&6 - sed 's/^/cc-fail: /' conftest.err >&6 - echo " " >&6 - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - if test "$tmp_compiler_works" = "yes"; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - -int main (void) -{ - - int i = 1; - return i; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - tmp_compiler_works="yes" - -else $as_nop - - tmp_compiler_works="no" - echo " " >&6 - sed 's/^/link-fail: /' conftest.err >&6 - echo " " >&6 - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - fi - if test "x$cross_compiling" != "xyes" && - test "$tmp_compiler_works" = "yes"; then - - case $host_os in - darwin*) - if test "$cross_compiling" = yes -then : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5; } -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -# ifdef __STDC__ -# include -# endif - -int main (void) -{ - - int i = 0; - exit(i); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - tmp_compiler_works="yes" - -else $as_nop - tmp_compiler_works="no" - echo " " >&6 - echo "run-fail: test program exited with status $ac_status" >&6 - echo " " >&6 - -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - ;; - *) - old=$LD_LIBRARY_PATH - LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old - export LD_LIBRARY_PATH - if test "$cross_compiling" = yes -then : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5; } -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -# ifdef __STDC__ -# include -# endif - -int main (void) -{ - - int i = 0; - exit(i); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - tmp_compiler_works="yes" - -else $as_nop - tmp_compiler_works="no" - echo " " >&6 - echo "run-fail: test program exited with status $ac_status" >&6 - echo " " >&6 - -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - LD_LIBRARY_PATH=$old # restore - ;; - esac - - fi - if test "$tmp_compiler_works" = "yes"; then - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: compiler options added: $tmp_CFLAGS $tmp_CPPFLAGS" >&5 -printf "%s\n" "$as_me: compiler options added: $tmp_CFLAGS $tmp_CPPFLAGS" >&6;} - - else - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: compiler options rejected: $tmp_CFLAGS $tmp_CPPFLAGS" >&5 -printf "%s\n" "$as_me: WARNING: compiler options rejected: $tmp_CFLAGS $tmp_CPPFLAGS" >&2;} - CPPFLAGS="$tmp_save_CPPFLAGS" - CFLAGS="$tmp_save_CFLAGS" - - fi - - fi - # - fi - - - # - if test "$compiler_id" != "unknown"; then - # - tmp_save_CFLAGS="$CFLAGS" - tmp_save_CPPFLAGS="$CPPFLAGS" - # - tmp_options="" - tmp_CFLAGS="$CFLAGS" - tmp_CPPFLAGS="$CPPFLAGS" - # - if test "$want_debug" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler accepts debug enabling options" >&5 -printf %s "checking if compiler accepts debug enabling options... " >&6; } - tmp_options="$flags_dbg_yes" - fi - # - if test "$flags_prefer_cppflags" = "yes"; then - CPPFLAGS="$tmp_CPPFLAGS $tmp_options" - CFLAGS="$tmp_CFLAGS" - else - CPPFLAGS="$tmp_CPPFLAGS" - CFLAGS="$tmp_CFLAGS $tmp_options" - fi - squeeze CPPFLAGS - squeeze CFLAGS - fi - - - # - if test "$compiler_id" != "unknown"; then - # - tmp_save_CFLAGS="$CFLAGS" - tmp_save_CPPFLAGS="$CPPFLAGS" - # - tmp_options="" - tmp_CFLAGS="$CFLAGS" - tmp_CPPFLAGS="$CPPFLAGS" - honor_optimize_option="yes" - # - # - if test "$want_optimize" = "assume_no" || - test "$want_optimize" = "assume_yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler optimizer assumed setting might be used" >&5 -printf %s "checking if compiler optimizer assumed setting might be used... " >&6; } - - - ac_var_match_word="no" - for word1 in $tmp_CFLAGS; do - for word2 in $flags_opt_all; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "yes"; then - - honor_optimize_option="no" - - - fi - - - - ac_var_match_word="no" - for word1 in $tmp_CPPFLAGS; do - for word2 in $flags_opt_all; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "yes"; then - - honor_optimize_option="no" - - - fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $honor_optimize_option" >&5 -printf "%s\n" "$honor_optimize_option" >&6; } - if test "$honor_optimize_option" = "yes"; then - if test "$want_optimize" = "assume_yes"; then - want_optimize="yes" - fi - if test "$want_optimize" = "assume_no"; then - want_optimize="no" - fi - fi - fi - # - if test "$honor_optimize_option" = "yes"; then - - ac_var_stripped="" - for word1 in $tmp_CFLAGS; do - ac_var_strip_word="no" - for word2 in $flags_opt_all; do - if test "$word1" = "$word2"; then - ac_var_strip_word="yes" - fi - done - if test "$ac_var_strip_word" = "no"; then - ac_var_stripped="$ac_var_stripped $word1" - fi - done - tmp_CFLAGS="$ac_var_stripped" - squeeze tmp_CFLAGS - - - ac_var_stripped="" - for word1 in $tmp_CPPFLAGS; do - ac_var_strip_word="no" - for word2 in $flags_opt_all; do - if test "$word1" = "$word2"; then - ac_var_strip_word="yes" - fi - done - if test "$ac_var_strip_word" = "no"; then - ac_var_stripped="$ac_var_stripped $word1" - fi - done - tmp_CPPFLAGS="$ac_var_stripped" - squeeze tmp_CPPFLAGS - - if test "$want_optimize" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler accepts optimizer enabling options" >&5 -printf %s "checking if compiler accepts optimizer enabling options... " >&6; } - tmp_options="$flags_opt_yes" - fi - if test "$want_optimize" = "no"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler accepts optimizer disabling options" >&5 -printf %s "checking if compiler accepts optimizer disabling options... " >&6; } - tmp_options="$flags_opt_off" - fi - if test "$flags_prefer_cppflags" = "yes"; then - CPPFLAGS="$tmp_CPPFLAGS $tmp_options" - CFLAGS="$tmp_CFLAGS" - else - CPPFLAGS="$tmp_CPPFLAGS" - CFLAGS="$tmp_CFLAGS $tmp_options" - fi - squeeze CPPFLAGS - squeeze CFLAGS - - tmp_compiler_works="unknown" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - -int main (void) -{ - - int i = 1; - return i; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - tmp_compiler_works="yes" - -else $as_nop - - tmp_compiler_works="no" - echo " " >&6 - sed 's/^/cc-fail: /' conftest.err >&6 - echo " " >&6 - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - if test "$tmp_compiler_works" = "yes"; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - -int main (void) -{ - - int i = 1; - return i; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - tmp_compiler_works="yes" - -else $as_nop - - tmp_compiler_works="no" - echo " " >&6 - sed 's/^/link-fail: /' conftest.err >&6 - echo " " >&6 - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - fi - if test "x$cross_compiling" != "xyes" && - test "$tmp_compiler_works" = "yes"; then - - case $host_os in - darwin*) - if test "$cross_compiling" = yes -then : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5; } -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -# ifdef __STDC__ -# include -# endif - -int main (void) -{ - - int i = 0; - exit(i); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - tmp_compiler_works="yes" - -else $as_nop - tmp_compiler_works="no" - echo " " >&6 - echo "run-fail: test program exited with status $ac_status" >&6 - echo " " >&6 - -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - ;; - *) - old=$LD_LIBRARY_PATH - LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old - export LD_LIBRARY_PATH - if test "$cross_compiling" = yes -then : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5; } -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -# ifdef __STDC__ -# include -# endif - -int main (void) -{ - - int i = 0; - exit(i); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - tmp_compiler_works="yes" - -else $as_nop - tmp_compiler_works="no" - echo " " >&6 - echo "run-fail: test program exited with status $ac_status" >&6 - echo " " >&6 - -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - LD_LIBRARY_PATH=$old # restore - ;; - esac - - fi - if test "$tmp_compiler_works" = "yes"; then - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: compiler options added: $tmp_options" >&5 -printf "%s\n" "$as_me: compiler options added: $tmp_options" >&6;} - - else - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: compiler options rejected: $tmp_options" >&5 -printf "%s\n" "$as_me: WARNING: compiler options rejected: $tmp_options" >&2;} - CPPFLAGS="$tmp_save_CPPFLAGS" - CFLAGS="$tmp_save_CFLAGS" - - fi - - fi - # - fi - - - # - if test "$compiler_id" != "unknown"; then - # - tmp_save_CPPFLAGS="$CPPFLAGS" - tmp_save_CFLAGS="$CFLAGS" - tmp_CPPFLAGS="" - tmp_CFLAGS="" - # - case "$compiler_id" in - # - CLANG) - # - if test "$want_warnings" = "yes"; then - tmp_CFLAGS="$tmp_CFLAGS -pedantic" - - ac_var_added_warnings="" - for warning in all extra; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - - ac_var_added_warnings="" - for warning in pointer-arith write-strings; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - - ac_var_added_warnings="" - for warning in shadow; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - - ac_var_added_warnings="" - for warning in inline nested-externs; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - - ac_var_added_warnings="" - for warning in missing-declarations; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - - ac_var_added_warnings="" - for warning in missing-prototypes; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - tmp_CFLAGS="$tmp_CFLAGS -Wno-long-long" - - ac_var_added_warnings="" - for warning in float-equal; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - - ac_var_added_warnings="" - for warning in no-multichar sign-compare; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - - ac_var_added_warnings="" - for warning in undef; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - tmp_CFLAGS="$tmp_CFLAGS -Wno-format-nonliteral" - - ac_var_added_warnings="" - for warning in endif-labels strict-prototypes; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - - ac_var_added_warnings="" - for warning in declaration-after-statement; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - - ac_var_added_warnings="" - for warning in cast-align; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - tmp_CFLAGS="$tmp_CFLAGS -Wno-system-headers" - - ac_var_added_warnings="" - for warning in shorten-64-to-32; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - # - if test "$compiler_num" -ge "101"; then - - ac_var_added_warnings="" - for warning in unused; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - fi - # - if test "$compiler_num" -ge "208"; then - - ac_var_added_warnings="" - for warning in vla; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - fi - # - if test "$compiler_num" -ge "209"; then - - ac_var_added_warnings="" - for warning in shift-sign-overflow; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - fi - # - if test "$compiler_num" -ge "302"; then - case $host_os in - cygwin* | mingw*) - ;; - *) - - ac_var_added_warnings="" - for warning in missing-variable-declarations; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - ;; - esac - fi - # - if test "$compiler_num" -ge "306"; then - - ac_var_added_warnings="" - for warning in double-promotion; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - fi - # - if test "$compiler_num" -ge "309"; then - - ac_var_added_warnings="" - for warning in comma; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - # avoid the varargs warning, fixed in 4.0 - # https://bugs.llvm.org/show_bug.cgi?id=29140 - if test "$compiler_num" -lt "400"; then - tmp_CFLAGS="$tmp_CFLAGS -Wno-varargs" - fi - fi - if test "$compiler_num" -ge "700"; then - - ac_var_added_warnings="" - for warning in assign-enum; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - - ac_var_added_warnings="" - for warning in extra-semi-stmt; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - fi - fi - ;; - # - DEC_C) - # - if test "$want_warnings" = "yes"; then - tmp_CFLAGS="$tmp_CFLAGS -msg_enable level3" - fi - ;; - # - GNU_C) - # - if test "$want_warnings" = "yes"; then - # - if test "x$cross_compiling" != "xyes" || - test "$compiler_num" -ge "300"; then - tmp_CFLAGS="$tmp_CFLAGS -pedantic" - fi - # - - ac_var_added_warnings="" - for warning in all; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - tmp_CFLAGS="$tmp_CFLAGS -W" - # - if test "$compiler_num" -ge "104"; then - - ac_var_added_warnings="" - for warning in pointer-arith write-strings; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - if test "x$cross_compiling" != "xyes" || - test "$compiler_num" -ge "300"; then - - ac_var_added_warnings="" - for warning in unused shadow; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - fi - fi - # - if test "$compiler_num" -ge "207"; then - - ac_var_added_warnings="" - for warning in inline nested-externs; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - if test "x$cross_compiling" != "xyes" || - test "$compiler_num" -ge "300"; then - - ac_var_added_warnings="" - for warning in missing-declarations; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - - ac_var_added_warnings="" - for warning in missing-prototypes; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - fi - fi - # - if test "$compiler_num" -ge "295"; then - tmp_CFLAGS="$tmp_CFLAGS -Wno-long-long" - - ac_var_added_warnings="" - for warning in bad-function-cast; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - fi - # - if test "$compiler_num" -ge "296"; then - - ac_var_added_warnings="" - for warning in float-equal; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - tmp_CFLAGS="$tmp_CFLAGS -Wno-multichar" - - ac_var_added_warnings="" - for warning in sign-compare; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - - ac_var_added_warnings="" - for warning in undef; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - fi - # - if test "$compiler_num" -ge "297"; then - tmp_CFLAGS="$tmp_CFLAGS -Wno-format-nonliteral" - fi - # - if test "$compiler_num" -ge "300"; then - tmp_CFLAGS="$tmp_CFLAGS" - fi - # - if test "$compiler_num" -ge "303"; then - - ac_var_added_warnings="" - for warning in endif-labels strict-prototypes; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - fi - # - if test "$compiler_num" -ge "304"; then - - ac_var_added_warnings="" - for warning in declaration-after-statement; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - - ac_var_added_warnings="" - for warning in old-style-definition; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - fi - # - if test "$compiler_num" -ge "400"; then - tmp_CFLAGS="$tmp_CFLAGS -Wstrict-aliasing=3" - fi - # - if test "$compiler_num" -ge "402"; then - - ac_var_added_warnings="" - for warning in cast-align; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - fi - # - if test "$compiler_num" -ge "403"; then - - ac_var_added_warnings="" - for warning in type-limits old-style-declaration; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - - ac_var_added_warnings="" - for warning in missing-parameter-type empty-body; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - - ac_var_added_warnings="" - for warning in clobbered ignored-qualifiers; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - - ac_var_added_warnings="" - for warning in conversion; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - tmp_CFLAGS="$tmp_CFLAGS -Wno-sign-conversion" - - ac_var_added_warnings="" - for warning in vla; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - tmp_CFLAGS="$tmp_CFLAGS -ftree-vrp" - fi - # - if test "$compiler_num" -ge "405"; then - if test "$curl_cv_have_def__WIN32" = "yes"; then - tmp_CFLAGS="$tmp_CFLAGS -Wno-pedantic-ms-format" - fi - fi - # - if test "$compiler_num" -ge "406"; then - - ac_var_added_warnings="" - for warning in double-promotion; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - fi - # - if test "$compiler_num" -ge "408"; then - tmp_CFLAGS="$tmp_CFLAGS -Wformat=2" - fi - # - if test "$compiler_num" -ge "500"; then - tmp_CFLAGS="$tmp_CFLAGS -Warray-bounds=2" - fi - # - if test "$compiler_num" -ge "600"; then - - ac_var_added_warnings="" - for warning in shift-negative-value; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - tmp_CFLAGS="$tmp_CFLAGS -Wshift-overflow=2" - - ac_var_added_warnings="" - for warning in null-dereference; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - tmp_CFLAGS="$tmp_CFLAGS -fdelete-null-pointer-checks" - - ac_var_added_warnings="" - for warning in duplicated-cond; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - - ac_var_added_warnings="" - for warning in unused-const-variable; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - fi - # - if test "$compiler_num" -ge "700"; then - - ac_var_added_warnings="" - for warning in duplicated-branches; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - - ac_var_added_warnings="" - for warning in restrict; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - - ac_var_added_warnings="" - for warning in alloc-zero; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - tmp_CFLAGS="$tmp_CFLAGS -Wformat-overflow=2" - tmp_CFLAGS="$tmp_CFLAGS -Wformat-truncation=2" - if test "$compiler_num" -lt "1200"; then - tmp_CFLAGS="$tmp_CFLAGS -Wimplicit-fallthrough=4" - fi - fi - # - if test "$compiler_num" -ge "1000"; then - - ac_var_added_warnings="" - for warning in arith-conversion; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - - ac_var_added_warnings="" - for warning in enum-conversion; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - fi - # - fi - # - if test "$compiler_num" -ge "300"; then - tmp_CFLAGS="$tmp_CFLAGS -Wno-system-headers" - else - if test "x$cross_compiling" = "xyes"; then - if test "$compiler_num" -ge "104"; then - tmp_CFLAGS="$tmp_CFLAGS -Wno-unused -Wno-shadow" - fi - if test "$compiler_num" -ge "207"; then - tmp_CFLAGS="$tmp_CFLAGS -Wno-missing-declarations" - tmp_CFLAGS="$tmp_CFLAGS -Wno-missing-prototypes" - fi - fi - fi - ;; - # - HP_UX_C) - # - if test "$want_warnings" = "yes"; then - tmp_CFLAGS="$tmp_CFLAGS +w1" - fi - ;; - # - IBM_C) - # - tmp_CFLAGS="$tmp_CFLAGS" - ;; - # - INTEL_UNIX_C) - # - if test "$want_warnings" = "yes"; then - if test "$compiler_num" -gt "600"; then - tmp_CPPFLAGS="$tmp_CPPFLAGS -Wall -w2" - tmp_CPPFLAGS="$tmp_CPPFLAGS -Wcheck" - tmp_CPPFLAGS="$tmp_CPPFLAGS -Wcomment" - tmp_CPPFLAGS="$tmp_CPPFLAGS -Wdeprecated" - tmp_CPPFLAGS="$tmp_CPPFLAGS -Wmissing-prototypes" - tmp_CPPFLAGS="$tmp_CPPFLAGS -Wp64" - tmp_CPPFLAGS="$tmp_CPPFLAGS -Wpointer-arith" - tmp_CPPFLAGS="$tmp_CPPFLAGS -Wreturn-type" - tmp_CPPFLAGS="$tmp_CPPFLAGS -Wshadow" - tmp_CPPFLAGS="$tmp_CPPFLAGS -Wuninitialized" - tmp_CPPFLAGS="$tmp_CPPFLAGS -Wunused-function" - fi - fi - tmp_CFLAGS="$tmp_CFLAGS -fno-omit-frame-pointer" - tmp_CFLAGS="$tmp_CFLAGS -fno-strict-aliasing" - tmp_CFLAGS="$tmp_CFLAGS -fp-model precise" - ;; - # - INTEL_WINDOWS_C) - # - tmp_CFLAGS="$tmp_CFLAGS" - ;; - # - LCC) - # - if test "$want_warnings" = "yes"; then - tmp_CFLAGS="$tmp_CFLAGS" - fi - ;; - # - SGI_MIPS_C) - # - if test "$want_warnings" = "yes"; then - tmp_CFLAGS="$tmp_CFLAGS -fullwarn" - fi - ;; - # - SGI_MIPSPRO_C) - # - if test "$want_warnings" = "yes"; then - tmp_CFLAGS="$tmp_CFLAGS -fullwarn" - tmp_CFLAGS="$tmp_CFLAGS -woff 1209" - fi - ;; - # - SUNPRO_C) - # - if test "$want_warnings" = "yes"; then - tmp_CFLAGS="$tmp_CFLAGS -v" - fi - ;; - # - TINY_C) - # - if test "$want_warnings" = "yes"; then - - ac_var_added_warnings="" - for warning in all; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - - ac_var_added_warnings="" - for warning in write-strings; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - - ac_var_added_warnings="" - for warning in unsupported; do - - ac_var_match_word="no" - for word1 in $CFLAGS; do - for word2 in -Wno-$warning -W$warning; do - if test "$word1" = "$word2"; then - ac_var_match_word="yes" - fi - done - done - - if test "$ac_var_match_word" = "no"; then - ac_var_added_warnings="$ac_var_added_warnings -W$warning" - fi - done - tmp_CFLAGS="$tmp_CFLAGS $ac_var_added_warnings" - squeeze tmp_CFLAGS - - fi - ;; - # - esac - # - squeeze tmp_CPPFLAGS - squeeze tmp_CFLAGS - # - if test ! -z "$tmp_CFLAGS" || test ! -z "$tmp_CPPFLAGS"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler accepts strict warning options" >&5 -printf %s "checking if compiler accepts strict warning options... " >&6; } - CPPFLAGS="$tmp_save_CPPFLAGS $tmp_CPPFLAGS" - CFLAGS="$tmp_save_CFLAGS $tmp_CFLAGS" - squeeze CPPFLAGS - squeeze CFLAGS - - tmp_compiler_works="unknown" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - -int main (void) -{ - - int i = 1; - return i; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - tmp_compiler_works="yes" - -else $as_nop - - tmp_compiler_works="no" - echo " " >&6 - sed 's/^/cc-fail: /' conftest.err >&6 - echo " " >&6 - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - if test "$tmp_compiler_works" = "yes"; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - -int main (void) -{ - - int i = 1; - return i; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - tmp_compiler_works="yes" - -else $as_nop - - tmp_compiler_works="no" - echo " " >&6 - sed 's/^/link-fail: /' conftest.err >&6 - echo " " >&6 - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - fi - if test "x$cross_compiling" != "xyes" && - test "$tmp_compiler_works" = "yes"; then - - case $host_os in - darwin*) - if test "$cross_compiling" = yes -then : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5; } -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -# ifdef __STDC__ -# include -# endif - -int main (void) -{ - - int i = 0; - exit(i); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - tmp_compiler_works="yes" - -else $as_nop - tmp_compiler_works="no" - echo " " >&6 - echo "run-fail: test program exited with status $ac_status" >&6 - echo " " >&6 - -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - ;; - *) - old=$LD_LIBRARY_PATH - LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old - export LD_LIBRARY_PATH - if test "$cross_compiling" = yes -then : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5; } -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -# ifdef __STDC__ -# include -# endif - -int main (void) -{ - - int i = 0; - exit(i); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - tmp_compiler_works="yes" - -else $as_nop - tmp_compiler_works="no" - echo " " >&6 - echo "run-fail: test program exited with status $ac_status" >&6 - echo " " >&6 - -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - LD_LIBRARY_PATH=$old # restore - ;; - esac - - fi - if test "$tmp_compiler_works" = "yes"; then - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: compiler options added: $tmp_CFLAGS $tmp_CPPFLAGS" >&5 -printf "%s\n" "$as_me: compiler options added: $tmp_CFLAGS $tmp_CPPFLAGS" >&6;} - - else - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: compiler options rejected: $tmp_CFLAGS $tmp_CPPFLAGS" >&5 -printf "%s\n" "$as_me: WARNING: compiler options rejected: $tmp_CFLAGS $tmp_CPPFLAGS" >&2;} - CPPFLAGS="$tmp_save_CPPFLAGS" - CFLAGS="$tmp_save_CFLAGS" - - fi - - fi - # - fi - - -if test "$compiler_id" = "INTEL_UNIX_C"; then - # - if test "$compiler_num" -ge "1000"; then - CFLAGS="$CFLAGS -shared-intel" - elif test "$compiler_num" -ge "900"; then - CFLAGS="$CFLAGS -i-dynamic" - fi - # -fi - -CURL_CFLAG_EXTRAS="" -if test X"$want_werror" = Xyes; then - CURL_CFLAG_EXTRAS="-Werror" - if test "$compiler_id" = "GNU_C"; then - if test "$compiler_num" -ge "500"; then - CURL_CFLAG_EXTRAS="$CURL_CFLAG_EXTRAS -pedantic-errors" - fi - fi -fi - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler halts on compilation errors" >&5 -printf %s "checking if compiler halts on compilation errors... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - -int main (void) -{ - - force compilation error - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - as_fn_error $? "compiler does not halt on compilation errors." "$LINENO" 5 - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler halts on negative sized arrays" >&5 -printf %s "checking if compiler halts on negative sized arrays... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - typedef char bad_t[sizeof(char) == sizeof(int) ? -1 : -1 ]; - -int main (void) -{ - - bad_t dummy; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - as_fn_error $? "compiler does not halt on negative sized arrays." "$LINENO" 5 - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler halts on function prototype mismatch" >&5 -printf %s "checking if compiler halts on function prototype mismatch... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -# include - int rand(int n); - int rand(int n) - { - if(n) - return ++n; - else - return n; - } - -int main (void) -{ - - int i[2]={0,0}; - int j = rand(i[0]); - if(j) - return j; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - as_fn_error $? "compiler does not halt on function prototype mismatch." "$LINENO" 5 - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if compiler supports hiding library internal symbols" >&5 -printf %s "checking if compiler supports hiding library internal symbols... " >&6; } - supports_symbol_hiding="no" - symbol_hiding_CFLAGS="" - symbol_hiding_EXTERN="" - tmp_CFLAGS="" - tmp_EXTERN="" - case "$compiler_id" in - CLANG) - tmp_EXTERN="__attribute__ ((__visibility__ (\"default\")))" - tmp_CFLAGS="-fvisibility=hidden" - supports_symbol_hiding="yes" - ;; - GNU_C) - if test "$compiler_num" -ge "304"; then - if $CC --help --verbose 2>/dev/null | grep fvisibility= >/dev/null ; then - tmp_EXTERN="__attribute__ ((__visibility__ (\"default\")))" - tmp_CFLAGS="-fvisibility=hidden" - supports_symbol_hiding="yes" - fi - fi - ;; - INTEL_UNIX_C) - if test "$compiler_num" -ge "900"; then - if $CC --help --verbose 2>&1 | grep fvisibility= > /dev/null ; then - tmp_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -fvisibility=hidden" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -# include - -int main (void) -{ - - printf("icc fvisibility bug test"); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - tmp_EXTERN="__attribute__ ((__visibility__ (\"default\")))" - tmp_CFLAGS="-fvisibility=hidden" - supports_symbol_hiding="yes" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - CFLAGS="$tmp_save_CFLAGS" - fi - fi - ;; - SUNPRO_C) - if $CC 2>&1 | grep flags >/dev/null && $CC -flags | grep xldscope= >/dev/null ; then - tmp_EXTERN="__global" - tmp_CFLAGS="-xldscope=hidden" - supports_symbol_hiding="yes" - fi - ;; - esac - if test "$supports_symbol_hiding" = "yes"; then - tmp_save_CFLAGS="$CFLAGS" - CFLAGS="$tmp_save_CFLAGS $tmp_CFLAGS" - squeeze CFLAGS - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $tmp_EXTERN char *dummy(char *buff); - char *dummy(char *buff) - { - if(buff) - return ++buff; - else - return buff; - } - -int main (void) -{ - - char b[16]; - char *r = dummy(&b[0]); - if(r) - return (int)*r; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - supports_symbol_hiding="yes" - if test -f conftest.err; then - grep 'visibility' conftest.err >/dev/null - if test "$?" -eq "0"; then - supports_symbol_hiding="no" - fi - fi - -else $as_nop - - supports_symbol_hiding="no" - echo " " >&6 - sed 's/^/cc-src: /' conftest.$ac_ext >&6 - sed 's/^/cc-err: /' conftest.err >&6 - echo " " >&6 - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - CFLAGS="$tmp_save_CFLAGS" - fi - if test "$supports_symbol_hiding" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - symbol_hiding_CFLAGS="$tmp_CFLAGS" - symbol_hiding_EXTERN="$tmp_EXTERN" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - fi - - - - supports_curldebug="unknown" - if test "$want_curldebug" = "yes"; then - if test "x$enable_shared" != "xno" && - test "x$enable_shared" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unknown enable_shared setting." >&5 -printf "%s\n" "$as_me: WARNING: unknown enable_shared setting." >&2;} - supports_curldebug="no" - fi - if test "x$enable_static" != "xno" && - test "x$enable_static" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unknown enable_static setting." >&5 -printf "%s\n" "$as_me: WARNING: unknown enable_static setting." >&2;} - supports_curldebug="no" - fi - if test "$supports_curldebug" != "no"; then - if test "$enable_shared" = "yes" && - test "x$xc_lt_shlib_use_no_undefined" = 'xyes'; then - supports_curldebug="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: shared library does not support undefined symbols." >&5 -printf "%s\n" "$as_me: WARNING: shared library does not support undefined symbols." >&2;} - fi - fi - fi - # - if test "$want_curldebug" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if curl debug memory tracking can be enabled" >&5 -printf %s "checking if curl debug memory tracking can be enabled... " >&6; } - test "$supports_curldebug" = "no" || supports_curldebug="yes" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $supports_curldebug" >&5 -printf "%s\n" "$supports_curldebug" >&6; } - if test "$supports_curldebug" = "no"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot enable curl debug memory tracking." >&5 -printf "%s\n" "$as_me: WARNING: cannot enable curl debug memory tracking." >&2;} - want_curldebug="no" - fi - fi - - if test x$want_curldebug = xyes; then - CURLDEBUG_TRUE= - CURLDEBUG_FALSE='#' -else - CURLDEBUG_TRUE='#' - CURLDEBUG_FALSE= -fi - - -supports_unittests=yes -# cross-compilation of unit tests static library/programs fails when -# libcurl shared library is built. This might be due to a libtool or -# automake issue. In this case we disable unit tests. -if test "x$cross_compiling" != "xno" && - test "x$enable_shared" != "xno"; then - supports_unittests=no -fi - -# IRIX 6.5.24 gcc 3.3 autobuilds fail unittests library compilation due to -# a problem related with OpenSSL headers and library versions not matching. -# Disable unit tests while time to further investigate this is found. -case $host in - mips-sgi-irix6.5) - if test "$compiler_id" = "GNU_C"; then - supports_unittests=no - fi - ;; -esac - -# All AIX autobuilds fails unit tests linking against unittests library -# due to unittests library being built with no symbols or members. Libtool ? -# Disable unit tests while time to further investigate this is found. -case $host_os in - aix*) - supports_unittests=no - ;; -esac - -if test "x$want_debug" = "xyes" && - test "x$supports_unittests" = "xyes"; then - want_unittests=yes -else - want_unittests=no -fi - if test x$want_unittests = xyes; then - BUILD_UNITTESTS_TRUE= - BUILD_UNITTESTS_FALSE='#' -else - BUILD_UNITTESTS_TRUE='#' - BUILD_UNITTESTS_FALSE= -fi - - -# For original MinGW (ie not MinGW-w64) define the Windows minimum supported OS -# version to Windows XP (0x501) if it hasn't already been defined by the user. -# Without this override original MinGW defaults the version to Windows NT 4.0. -# Note original MinGW sets _WIN32_WINNT if not defined to whatever WINVER is. -case $host in - *-*-mingw32*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if MinGW minimum supported OS should be set to XP" >&5 -printf %s "checking if MinGW minimum supported OS should be set to XP... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#include <_mingw.h> - -int main (void) -{ - -#if defined(__MINGW64_VERSION_MAJOR) || \ - defined(WINVER) || \ - defined(_WIN32_WINNT) -#error -#endif - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - CPPFLAGS="$CPPFLAGS -DWINVER=0x501" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac - -# Detect original MinGW (not MinGW-w64) -curl_mingw_original=no -case $host in - *-*-mingw32*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking using original MinGW (not MinGW-w64)" >&5 -printf %s "checking using original MinGW (not MinGW-w64)... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#include <_mingw.h> - -int main (void) -{ - -#if defined(__MINGW64_VERSION_MAJOR) -#error -#endif - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - curl_mingw_original=yes - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for windows.h" >&5 -printf %s "checking for windows.h... " >&6; } -if test ${curl_cv_header_windows_h+y} -then : - printf %s "(cached) " >&6 -else $as_nop - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#undef inline -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include - -int main (void) -{ - -#if defined(__CYGWIN__) || defined(__CEGCC__) - HAVE_WINDOWS_H shall not be defined. -#else - int dummy=2*WINVER; -#endif - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - curl_cv_header_windows_h="yes" - -else $as_nop - - curl_cv_header_windows_h="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_header_windows_h" >&5 -printf "%s\n" "$curl_cv_header_windows_h" >&6; } - case "$curl_cv_header_windows_h" in - yes) - -printf "%s\n" "#define HAVE_WINDOWS_H 1" >>confdefs.h - - ;; - esac - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build target is a native Windows one" >&5 -printf %s "checking whether build target is a native Windows one... " >&6; } -if test ${curl_cv_native_windows+y} -then : - printf %s "(cached) " >&6 -else $as_nop - - if test "$curl_cv_header_windows_h" = "no"; then - curl_cv_native_windows="no" - else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - -int main (void) -{ - -#if defined(__MINGW32__) || defined(__MINGW32CE__) || \ - (defined(_MSC_VER) && (defined(_WIN32) || defined(_WIN64))) - int dummy=1; -#else - Not a native Windows build target. -#endif - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - curl_cv_native_windows="yes" - -else $as_nop - - curl_cv_native_windows="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_native_windows" >&5 -printf "%s\n" "$curl_cv_native_windows" >&6; } - if test "x$curl_cv_native_windows" = xyes; then - DOING_NATIVE_WINDOWS_TRUE= - DOING_NATIVE_WINDOWS_FALSE='#' -else - DOING_NATIVE_WINDOWS_TRUE='#' - DOING_NATIVE_WINDOWS_FALSE= -fi - - -case X-"$curl_cv_native_windows" in - X-yes) - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for winsock2.h" >&5 -printf %s "checking for winsock2.h... " >&6; } -if test ${curl_cv_header_winsock2_h+y} -then : - printf %s "(cached) " >&6 -else $as_nop - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#undef inline -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#include - -int main (void) -{ - -#if defined(__CYGWIN__) || defined(__CEGCC__) || defined(__MINGW32CE__) - HAVE_WINSOCK2_H shall not be defined. -#else - int dummy=2*IPPROTO_ESP; -#endif - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - curl_cv_header_winsock2_h="yes" - -else $as_nop - - curl_cv_header_winsock2_h="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_header_winsock2_h" >&5 -printf "%s\n" "$curl_cv_header_winsock2_h" >&6; } - case "$curl_cv_header_winsock2_h" in - yes) - -printf "%s\n" "#define HAVE_WINSOCK2_H 1" >>confdefs.h - - ;; - esac - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ws2tcpip.h" >&5 -printf %s "checking for ws2tcpip.h... " >&6; } -if test ${curl_cv_header_ws2tcpip_h+y} -then : - printf %s "(cached) " >&6 -else $as_nop - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#undef inline -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#include -#include - -int main (void) -{ - -#if defined(__CYGWIN__) || defined(__CEGCC__) || defined(__MINGW32CE__) - HAVE_WS2TCPIP_H shall not be defined. -#else - int dummy=2*IP_PKTINFO; -#endif - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - curl_cv_header_ws2tcpip_h="yes" - -else $as_nop - - curl_cv_header_ws2tcpip_h="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_header_ws2tcpip_h" >&5 -printf "%s\n" "$curl_cv_header_ws2tcpip_h" >&6; } - case "$curl_cv_header_ws2tcpip_h" in - yes) - -printf "%s\n" "#define HAVE_WS2TCPIP_H 1" >>confdefs.h - - ;; - esac - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for wincrypt.h" >&5 -printf %s "checking for wincrypt.h... " >&6; } -if test ${curl_cv_header_wincrypt_h+y} -then : - printf %s "(cached) " >&6 -else $as_nop - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#undef inline -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#include - -int main (void) -{ - - int dummy=2*PROV_RSA_FULL; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - curl_cv_header_wincrypt_h="yes" - -else $as_nop - - curl_cv_header_wincrypt_h="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_header_wincrypt_h" >&5 -printf "%s\n" "$curl_cv_header_wincrypt_h" >&6; } - case "$curl_cv_header_wincrypt_h" in - yes) - -printf "%s\n" "#define HAVE_WINCRYPT_H 1" >>confdefs.h - - ;; - esac - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for winldap.h" >&5 -printf %s "checking for winldap.h... " >&6; } -if test ${curl_cv_header_winldap_h+y} -then : - printf %s "(cached) " >&6 -else $as_nop - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#undef inline -#ifdef HAVE_WINDOWS_H -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#endif -#include - -int main (void) -{ - -#if defined(__CYGWIN__) || defined(__CEGCC__) - HAVE_WINLDAP_H shall not be defined. -#else - LDAP *ldp = ldap_init("dummy", LDAP_PORT); - ULONG res = ldap_unbind(ldp); -#endif - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - curl_cv_header_winldap_h="yes" - -else $as_nop - - curl_cv_header_winldap_h="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_header_winldap_h" >&5 -printf "%s\n" "$curl_cv_header_winldap_h" >&6; } - case "$curl_cv_header_winldap_h" in - yes) - -printf "%s\n" "#define HAVE_WINLDAP_H 1" >>confdefs.h - - ;; - esac - - ;; - *) - curl_cv_header_winsock2_h="no" - curl_cv_header_ws2tcpip_h="no" - curl_cv_header_wincrypt_h="no" - curl_cv_header_winldap_h="no" - ;; -esac - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build target supports WIN32 file API" >&5 -printf %s "checking whether build target supports WIN32 file API... " >&6; } - curl_win32_file_api="no" - if test "$curl_cv_header_windows_h" = "yes"; then - if test x"$enable_largefile" != "xno"; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - -int main (void) -{ - -#if !defined(_WIN32_WCE) && \ - (defined(__MINGW32__) || \ - (defined(_MSC_VER) && (defined(_WIN32) || defined(_WIN64)))) - int dummy=1; -#else - WIN32 large file API not supported. -#endif - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - curl_win32_file_api="win32_large_files" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - if test "$curl_win32_file_api" = "no"; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - -int main (void) -{ - -#if defined(_WIN32_WCE) || defined(__MINGW32__) || defined(_MSC_VER) - int dummy=1; -#else - WIN32 small file API not supported. -#endif - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - curl_win32_file_api="win32_small_files" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - fi - case "$curl_win32_file_api" in - win32_large_files) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes (large file enabled)" >&5 -printf "%s\n" "yes (large file enabled)" >&6; } - -printf "%s\n" "#define USE_WIN32_LARGE_FILES 1" >>confdefs.h - - USE_WIN32_LARGE_FILES=1 - - ;; - win32_small_files) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes (large file disabled)" >&5 -printf "%s\n" "yes (large file disabled)" >&6; } - -printf "%s\n" "#define USE_WIN32_SMALL_FILES 1" >>confdefs.h - - USE_WIN32_SMALL_FILES=1 - - ;; - *) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; - esac - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build target supports WIN32 crypto API" >&5 -printf %s "checking whether build target supports WIN32 crypto API... " >&6; } - curl_win32_crypto_api="no" - if test "$curl_cv_header_wincrypt_h" = "yes"; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#undef inline -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#include - -int main (void) -{ - - HCRYPTPROV hCryptProv; - if(CryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_FULL, - CRYPT_VERIFYCONTEXT | CRYPT_SILENT)) { - CryptReleaseContext(hCryptProv, 0); - } - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - curl_win32_crypto_api="yes" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - case "$curl_win32_crypto_api" in - yes) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define USE_WIN32_CRYPTO 1" >>confdefs.h - - USE_WIN32_CRYPTO=1 - - ;; - *) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; - esac - - - - - tst_cflags="no" - case $host_os in - darwin*) - tst_cflags="yes" - ;; - esac - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for good-to-use Darwin CFLAGS" >&5 -printf %s "checking for good-to-use Darwin CFLAGS... " >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $tst_cflags" >&5 -printf "%s\n" "$tst_cflags" >&6; }; - - if test "$tst_cflags" = "yes"; then - old_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS -Werror=partial-availability" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -Werror=partial-availability" >&5 -printf %s "checking whether $CC accepts -Werror=partial-availability... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - CFLAGS=$old_CFLAGS -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to link macOS CoreFoundation and SystemConfiguration framework" >&5 -printf %s "checking whether to link macOS CoreFoundation and SystemConfiguration framework... " >&6; } -case $host_os in - darwin*) - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#include - -int main (void) -{ - -#if (TARGET_OS_OSX) - return 0; -#else -#error Not a macOS -#endif - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - build_for_macos="yes" - -else $as_nop - - build_for_macos="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - if test "x$build_for_macos" != xno; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - LDFLAGS="$LDFLAGS -framework CoreFoundation -framework SystemConfiguration" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - fi - ;; - *) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -esac - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking to see if the compiler supports __builtin_available()" >&5 -printf %s "checking to see if the compiler supports __builtin_available()... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#include - -int main (void) -{ - - if (__builtin_available(macOS 10.8, iOS 5.0, *)) {} - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_BUILTIN_AVAILABLE 1" >>confdefs.h - - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support http" >&5 -printf %s "checking whether to support http... " >&6; } -# Check whether --enable-http was given. -if test ${enable_http+y} -then : - enableval=$enable_http; case "$enableval" in - no) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -printf "%s\n" "#define CURL_DISABLE_HTTP 1" >>confdefs.h - - disable_http="yes" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: disable HTTP disables FTP over proxy and RTSP" >&5 -printf "%s\n" "$as_me: WARNING: disable HTTP disables FTP over proxy and RTSP" >&2;} - CURL_DISABLE_HTTP=1 - - -printf "%s\n" "#define CURL_DISABLE_RTSP 1" >>confdefs.h - - CURL_DISABLE_RTSP=1 - - -printf "%s\n" "#define CURL_DISABLE_ALTSVC 1" >>confdefs.h - - -printf "%s\n" "#define CURL_DISABLE_HSTS 1" >>confdefs.h - - curl_h1_msg="no (--enable-http, --with-hyper)" - curl_altsvc_msg="no"; - curl_hsts_msg="no (--enable-hsts)"; - enable_altsvc="no" - hsts="no" - ;; - *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - esac -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support ftp" >&5 -printf %s "checking whether to support ftp... " >&6; } -# Check whether --enable-ftp was given. -if test ${enable_ftp+y} -then : - enableval=$enable_ftp; case "$enableval" in - no) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -printf "%s\n" "#define CURL_DISABLE_FTP 1" >>confdefs.h - - CURL_DISABLE_FTP=1 - - ;; - *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - esac -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support file" >&5 -printf %s "checking whether to support file... " >&6; } -# Check whether --enable-file was given. -if test ${enable_file+y} -then : - enableval=$enable_file; case "$enableval" in - no) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -printf "%s\n" "#define CURL_DISABLE_FILE 1" >>confdefs.h - - CURL_DISABLE_FILE=1 - - ;; - *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - esac -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support ldap" >&5 -printf %s "checking whether to support ldap... " >&6; } -# Check whether --enable-ldap was given. -if test ${enable_ldap+y} -then : - enableval=$enable_ldap; case "$enableval" in - no) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -printf "%s\n" "#define CURL_DISABLE_LDAP 1" >>confdefs.h - - CURL_DISABLE_LDAP=1 - - ;; - yes) - ldap_askedfor="yes" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - *) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - esac -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support ldaps" >&5 -printf %s "checking whether to support ldaps... " >&6; } -# Check whether --enable-ldaps was given. -if test ${enable_ldaps+y} -then : - enableval=$enable_ldaps; case "$enableval" in - no) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -printf "%s\n" "#define CURL_DISABLE_LDAPS 1" >>confdefs.h - - CURL_DISABLE_LDAPS=1 - - ;; - *) if test "x$CURL_DISABLE_LDAP" = "x1" ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: LDAP needs to be enabled to support LDAPS" >&5 -printf "%s\n" "LDAP needs to be enabled to support LDAPS" >&6; } - -printf "%s\n" "#define CURL_DISABLE_LDAPS 1" >>confdefs.h - - CURL_DISABLE_LDAPS=1 - - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_LDAP_SSL 1" >>confdefs.h - - HAVE_LDAP_SSL=1 - - fi - ;; - esac -else $as_nop - - if test "x$CURL_DISABLE_LDAP" = "x1" ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -printf "%s\n" "#define CURL_DISABLE_LDAPS 1" >>confdefs.h - - CURL_DISABLE_LDAPS=1 - - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_LDAP_SSL 1" >>confdefs.h - - HAVE_LDAP_SSL=1 - - fi - -fi - - - -OPT_HYPER="no" - - -# Check whether --with-hyper was given. -if test ${with_hyper+y} -then : - withval=$with_hyper; OPT_HYPER=$withval -fi - -case "$OPT_HYPER" in - no) - want_hyper="no" - ;; - yes) - want_hyper="default" - want_hyper_path="" - ;; - *) - want_hyper="yes" - want_hyper_path="$withval" - ;; -esac - -if test X"$want_hyper" != Xno; then - if test "x$disable_http" = "xyes"; then - as_fn_error $? "--with-hyper is not compatible with --disable-http" "$LINENO" 5 - fi - - CLEANLDFLAGS="$LDFLAGS" - CLEANCPPFLAGS="$CPPFLAGS" - CLEANLIBS="$LIBS" - - - if test -n "$PKG_CONFIG"; then - PKGCONFIG="$PKG_CONFIG" - else - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKGCONFIG=$ac_cv_path_PKGCONFIG -if test -n "$PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 -printf "%s\n" "$PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKGCONFIG"; then - ac_pt_PKGCONFIG=$PKGCONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $ac_pt_PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG -if test -n "$ac_pt_PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 -printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_PKGCONFIG" = x; then - PKGCONFIG="no" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKGCONFIG=$ac_pt_PKGCONFIG - fi -else - PKGCONFIG="$ac_cv_path_PKGCONFIG" -fi - - fi - - if test "x$PKGCONFIG" != "xno"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for hyper options with pkg-config" >&5 -printf %s "checking for hyper options with pkg-config... " >&6; } - itexists=` - if test -n "$want_hyper_path"; then - PKG_CONFIG_LIBDIR="$want_hyper_path" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --exists hyper >/dev/null 2>&1 && echo 1` - - if test -z "$itexists"; then - PKGCONFIG="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 -printf "%s\n" "found" >&6; } - fi - fi - - - if test "$PKGCONFIG" != "no" ; then - LIB_HYPER=` - if test -n "$want_hyper_path"; then - PKG_CONFIG_LIBDIR="$want_hyper_path" - export PKG_CONFIG_LIBDIR - fi - - $PKGCONFIG --libs-only-l hyper` - CPP_HYPER=` - if test -n "$want_hyper_path"; then - PKG_CONFIG_LIBDIR="$want_hyper_path" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --cflags-only-I hyper` - LD_HYPER=` - if test -n "$want_hyper_path"; then - PKG_CONFIG_LIBDIR="$want_hyper_path" - export PKG_CONFIG_LIBDIR - fi - - $PKGCONFIG --libs-only-L hyper` - else - LIB_HYPER="-lhyper -ldl -lpthread -lm" - if test X"$want_hyper" != Xdefault; then - CPP_HYPER=-I"$want_hyper_path/capi/include" - LD_HYPER="-L$want_hyper_path/target/release -L$want_hyper_path/target/debug" - fi - fi - if test -n "$LIB_HYPER"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -l is $LIB_HYPER" >&5 -printf "%s\n" "$as_me: -l is $LIB_HYPER" >&6;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -I is $CPP_HYPER" >&5 -printf "%s\n" "$as_me: -I is $CPP_HYPER" >&6;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -L is $LD_HYPER" >&5 -printf "%s\n" "$as_me: -L is $LD_HYPER" >&6;} - - LDFLAGS="$LDFLAGS $LD_HYPER" - CPPFLAGS="$CPPFLAGS $CPP_HYPER" - LIBS="$LIB_HYPER $LIBS" - - if test "x$cross_compiling" != "xyes"; then - DIR_HYPER=`echo $LD_HYPER | $SED -e 's/^-L//' -e 's/ -L/:/g'` - fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for hyper_io_new in -lhyper" >&5 -printf %s "checking for hyper_io_new in -lhyper... " >&6; } -if test ${ac_cv_lib_hyper_hyper_io_new+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lhyper $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char hyper_io_new (); -int main (void) -{ -return hyper_io_new (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_hyper_hyper_io_new=yes -else $as_nop - ac_cv_lib_hyper_hyper_io_new=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_hyper_hyper_io_new" >&5 -printf "%s\n" "$ac_cv_lib_hyper_hyper_io_new" >&6; } -if test "x$ac_cv_lib_hyper_hyper_io_new" = xyes -then : - - for ac_header in hyper.h -do : - ac_fn_c_check_header_compile "$LINENO" "hyper.h" "ac_cv_header_hyper_h" "$ac_includes_default" -if test "x$ac_cv_header_hyper_h" = xyes -then : - printf "%s\n" "#define HAVE_HYPER_H 1" >>confdefs.h - experimental="$experimental Hyper" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Hyper support is experimental" >&5 -printf "%s\n" "$as_me: Hyper support is experimental" >&6;} - curl_h1_msg="enabled (Hyper)" - curl_h2_msg=$curl_h1_msg - HYPER_ENABLED=1 - -printf "%s\n" "#define USE_HYPER 1" >>confdefs.h - - USE_HYPER=1 - - CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_HYPER" - export CURL_LIBRARY_PATH - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_HYPER to CURL_LIBRARY_PATH" >&5 -printf "%s\n" "$as_me: Added $DIR_HYPER to CURL_LIBRARY_PATH" >&6;} -fi - -done - -else $as_nop - for d in `echo $DIR_HYPER | $SED -e 's/:/ /'`; do - if test -f "$d/libhyper.a"; then - as_fn_error $? "hyper was found in $d but was probably built with wrong flags. See docs/HYPER.md." "$LINENO" 5 - fi - done - as_fn_error $? "--with-hyper but hyper was not found. See docs/HYPER.md." "$LINENO" 5 - -fi - - fi -fi - -if test X"$want_hyper" != Xno; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Disable RTSP support with hyper" >&5 -printf "%s\n" "$as_me: Disable RTSP support with hyper" >&6;} - -printf "%s\n" "#define CURL_DISABLE_RTSP 1" >>confdefs.h - - CURL_DISABLE_RTSP=1 - - -else - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support rtsp" >&5 -printf %s "checking whether to support rtsp... " >&6; } - # Check whether --enable-rtsp was given. -if test ${enable_rtsp+y} -then : - enableval=$enable_rtsp; case "$enableval" in - no) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -printf "%s\n" "#define CURL_DISABLE_RTSP 1" >>confdefs.h - - CURL_DISABLE_RTSP=1 - - ;; - *) - if test x$CURL_DISABLE_HTTP = x1 ; then - as_fn_error $? "HTTP support needs to be enabled in order to enable RTSP support!" "$LINENO" 5 - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - curl_rtsp_msg="enabled" - fi - ;; - esac -else $as_nop - if test "x$CURL_DISABLE_HTTP" != "x1"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - curl_rtsp_msg="enabled" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - fi - -fi - -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support proxies" >&5 -printf %s "checking whether to support proxies... " >&6; } -# Check whether --enable-proxy was given. -if test ${enable_proxy+y} -then : - enableval=$enable_proxy; case "$enableval" in - no) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -printf "%s\n" "#define CURL_DISABLE_PROXY 1" >>confdefs.h - - CURL_DISABLE_PROXY=1 - - https_proxy="no" - ;; - *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - esac -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support dict" >&5 -printf %s "checking whether to support dict... " >&6; } -# Check whether --enable-dict was given. -if test ${enable_dict+y} -then : - enableval=$enable_dict; case "$enableval" in - no) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -printf "%s\n" "#define CURL_DISABLE_DICT 1" >>confdefs.h - - CURL_DISABLE_DICT=1 - - ;; - *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - esac -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support telnet" >&5 -printf %s "checking whether to support telnet... " >&6; } -# Check whether --enable-telnet was given. -if test ${enable_telnet+y} -then : - enableval=$enable_telnet; case "$enableval" in - no) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -printf "%s\n" "#define CURL_DISABLE_TELNET 1" >>confdefs.h - - CURL_DISABLE_TELNET=1 - - ;; - *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - esac -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support tftp" >&5 -printf %s "checking whether to support tftp... " >&6; } -# Check whether --enable-tftp was given. -if test ${enable_tftp+y} -then : - enableval=$enable_tftp; case "$enableval" in - no) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -printf "%s\n" "#define CURL_DISABLE_TFTP 1" >>confdefs.h - - CURL_DISABLE_TFTP=1 - - ;; - *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - esac -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support pop3" >&5 -printf %s "checking whether to support pop3... " >&6; } -# Check whether --enable-pop3 was given. -if test ${enable_pop3+y} -then : - enableval=$enable_pop3; case "$enableval" in - no) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -printf "%s\n" "#define CURL_DISABLE_POP3 1" >>confdefs.h - - CURL_DISABLE_POP3=1 - - ;; - *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - esac -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -fi - - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support imap" >&5 -printf %s "checking whether to support imap... " >&6; } -# Check whether --enable-imap was given. -if test ${enable_imap+y} -then : - enableval=$enable_imap; case "$enableval" in - no) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -printf "%s\n" "#define CURL_DISABLE_IMAP 1" >>confdefs.h - - CURL_DISABLE_IMAP=1 - - ;; - *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - esac -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -fi - - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support smb" >&5 -printf %s "checking whether to support smb... " >&6; } -# Check whether --enable-smb was given. -if test ${enable_smb+y} -then : - enableval=$enable_smb; case "$enableval" in - no) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -printf "%s\n" "#define CURL_DISABLE_SMB 1" >>confdefs.h - - CURL_DISABLE_SMB=1 - - ;; - *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - esac -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support smtp" >&5 -printf %s "checking whether to support smtp... " >&6; } -# Check whether --enable-smtp was given. -if test ${enable_smtp+y} -then : - enableval=$enable_smtp; case "$enableval" in - no) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -printf "%s\n" "#define CURL_DISABLE_SMTP 1" >>confdefs.h - - CURL_DISABLE_SMTP=1 - - ;; - *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - esac -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support gopher" >&5 -printf %s "checking whether to support gopher... " >&6; } -# Check whether --enable-gopher was given. -if test ${enable_gopher+y} -then : - enableval=$enable_gopher; case "$enableval" in - no) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -printf "%s\n" "#define CURL_DISABLE_GOPHER 1" >>confdefs.h - - CURL_DISABLE_GOPHER=1 - - ;; - *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - esac -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support mqtt" >&5 -printf %s "checking whether to support mqtt... " >&6; } -# Check whether --enable-mqtt was given. -if test ${enable_mqtt+y} -then : - enableval=$enable_mqtt; case "$enableval" in - no) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -printf "%s\n" "#define CURL_DISABLE_MQTT 1" >>confdefs.h - - CURL_DISABLE_MQTT=1 - - ;; - *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - esac -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -fi - - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to provide built-in manual" >&5 -printf %s "checking whether to provide built-in manual... " >&6; } -# Check whether --enable-manual was given. -if test ${enable_manual+y} -then : - enableval=$enable_manual; case "$enableval" in - no) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; - *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - USE_MANUAL="1" - ;; - esac -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - USE_MANUAL="1" - -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable generation of C code" >&5 -printf %s "checking whether to enable generation of C code... " >&6; } -# Check whether --enable-libcurl_option was given. -if test ${enable_libcurl_option+y} -then : - enableval=$enable_libcurl_option; case "$enableval" in - no) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -printf "%s\n" "#define CURL_DISABLE_LIBCURL_OPTION 1" >>confdefs.h - - curl_libcurl_msg="no" - ;; - *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - esac -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -fi - - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use libgcc" >&5 -printf %s "checking whether to use libgcc... " >&6; } -# Check whether --enable-libgcc was given. -if test ${enable_libgcc+y} -then : - enableval=$enable_libgcc; case "$enableval" in - yes) - LIBS="-lgcc $LIBS" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; - esac -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -fi - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if X/Open network library is required" >&5 -printf %s "checking if X/Open network library is required... " >&6; } - tst_lib_xnet_required="no" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -int main (void) -{ -#if defined(__hpux) && defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 600) - return 0; -#elif defined(__hpux) && defined(_XOPEN_SOURCE_EXTENDED) - return 0; -#else - force compilation error -#endif -} - - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - tst_lib_xnet_required="yes" - LIBS="-lxnet $LIBS" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $tst_lib_xnet_required" >&5 -printf "%s\n" "$tst_lib_xnet_required" >&6; } - - -ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname" -if test "x$ac_cv_func_gethostbyname" = xyes -then : - HAVE_GETHOSTBYNAME="1" - -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5 -printf %s "checking for gethostbyname in -lnsl... " >&6; } -if test ${ac_cv_lib_nsl_gethostbyname+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lnsl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char gethostbyname (); -int main (void) -{ -return gethostbyname (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_nsl_gethostbyname=yes -else $as_nop - ac_cv_lib_nsl_gethostbyname=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 -printf "%s\n" "$ac_cv_lib_nsl_gethostbyname" >&6; } -if test "x$ac_cv_lib_nsl_gethostbyname" = xyes -then : - HAVE_GETHOSTBYNAME="1" - LIBS="-lnsl $LIBS" - -fi - - -fi - - -if test "$HAVE_GETHOSTBYNAME" != "1" -then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lsocket" >&5 -printf %s "checking for gethostbyname in -lsocket... " >&6; } -if test ${ac_cv_lib_socket_gethostbyname+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsocket $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char gethostbyname (); -int main (void) -{ -return gethostbyname (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_socket_gethostbyname=yes -else $as_nop - ac_cv_lib_socket_gethostbyname=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_gethostbyname" >&5 -printf "%s\n" "$ac_cv_lib_socket_gethostbyname" >&6; } -if test "x$ac_cv_lib_socket_gethostbyname" = xyes -then : - HAVE_GETHOSTBYNAME="1" - LIBS="-lsocket $LIBS" - -fi - -fi - -if test "$HAVE_GETHOSTBYNAME" != "1" -then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lwatt" >&5 -printf %s "checking for gethostbyname in -lwatt... " >&6; } -if test ${ac_cv_lib_watt_gethostbyname+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lwatt $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char gethostbyname (); -int main (void) -{ -return gethostbyname (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_watt_gethostbyname=yes -else $as_nop - ac_cv_lib_watt_gethostbyname=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_watt_gethostbyname" >&5 -printf "%s\n" "$ac_cv_lib_watt_gethostbyname" >&6; } -if test "x$ac_cv_lib_watt_gethostbyname" = xyes -then : - HAVE_GETHOSTBYNAME="1" - CPPFLAGS="-I/dev/env/WATT_ROOT/inc" - LDFLAGS="-L/dev/env/WATT_ROOT/lib" - LIBS="-lwatt $LIBS" - -fi - -fi - -if test "$HAVE_GETHOSTBYNAME" != "1" -then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname with both nsl and socket libs" >&5 -printf %s "checking for gethostbyname with both nsl and socket libs... " >&6; } - my_ac_save_LIBS=$LIBS - LIBS="-lnsl -lsocket $LIBS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - -int main (void) -{ - - gethostbyname(); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - HAVE_GETHOSTBYNAME="1" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - LIBS=$my_ac_save_LIBS - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -fi - -if test "$HAVE_GETHOSTBYNAME" != "1" -then - if test "$curl_cv_header_windows_h" = "yes"; then - if test "$curl_cv_header_winsock2_h" = "yes"; then - winsock_LIB="-lws2_32" - fi - if test ! -z "$winsock_LIB"; then - my_ac_save_LIBS=$LIBS - LIBS="$winsock_LIB $LIBS" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in $winsock_LIB" >&5 -printf %s "checking for gethostbyname in $winsock_LIB... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef HAVE_WINDOWS_H -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#ifdef HAVE_WINSOCK2_H -#include -#endif -#endif - -int main (void) -{ - - gethostbyname("www.dummysite.com"); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - HAVE_GETHOSTBYNAME="1" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - winsock_LIB="" - LIBS=$my_ac_save_LIBS - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - fi - fi -fi - -if test "$HAVE_GETHOSTBYNAME" != "1" -then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname for Minix 3" >&5 -printf %s "checking for gethostbyname for Minix 3... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -/* Older Minix versions may need here instead */ -#include - -int main (void) -{ - - gethostbyname("www.dummysite.com"); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - HAVE_GETHOSTBYNAME="1" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -fi - -if test "$HAVE_GETHOSTBYNAME" != "1" -then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname for eCos" >&5 -printf %s "checking for gethostbyname for eCos... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#include -#include - -int main (void) -{ - - gethostbyname("www.dummysite.com"); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - HAVE_GETHOSTBYNAME="1" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -fi - -if test "$HAVE_GETHOSTBYNAME" != "1" -o "${with_amissl+set}" = set -then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname for AmigaOS bsdsocket.library" >&5 -printf %s "checking for gethostbyname for AmigaOS bsdsocket.library... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - #define __USE_INLINE__ - #include - #ifdef __amigaos4__ - struct SocketIFace *ISocket = NULL; - #else - struct Library *SocketBase = NULL; - #endif - -int main (void) -{ - - gethostbyname("www.dummysite.com"); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - HAVE_GETHOSTBYNAME="1" - HAVE_PROTO_BSDSOCKET_H="1" - -printf "%s\n" "#define HAVE_PROTO_BSDSOCKET_H 1" >>confdefs.h - - HAVE_PROTO_BSDSOCKET_H=1 - - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -fi - -if test "$HAVE_GETHOSTBYNAME" != "1" -then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnetwork" >&5 -printf %s "checking for gethostbyname in -lnetwork... " >&6; } -if test ${ac_cv_lib_network_gethostbyname+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lnetwork $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char gethostbyname (); -int main (void) -{ -return gethostbyname (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_network_gethostbyname=yes -else $as_nop - ac_cv_lib_network_gethostbyname=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_network_gethostbyname" >&5 -printf "%s\n" "$ac_cv_lib_network_gethostbyname" >&6; } -if test "x$ac_cv_lib_network_gethostbyname" = xyes -then : - HAVE_GETHOSTBYNAME="1" - LIBS="-lnetwork $LIBS" - -fi - -fi - -if test "$HAVE_GETHOSTBYNAME" != "1"; then - as_fn_error $? "couldn't find libraries for gethostbyname()" "$LINENO" 5 -fi - - -curl_includes_winsock2="\ -/* includes start */ -#ifdef HAVE_WINDOWS_H -# ifndef WIN32_LEAN_AND_MEAN -# define WIN32_LEAN_AND_MEAN -# endif -# include -# ifdef HAVE_WINSOCK2_H -# include -# endif -#endif -/* includes end */" - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for windows.h" >&5 -printf %s "checking for windows.h... " >&6; } -if test ${curl_cv_header_windows_h+y} -then : - printf %s "(cached) " >&6 -else $as_nop - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#undef inline -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include - -int main (void) -{ - -#if defined(__CYGWIN__) || defined(__CEGCC__) - HAVE_WINDOWS_H shall not be defined. -#else - int dummy=2*WINVER; -#endif - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - curl_cv_header_windows_h="yes" - -else $as_nop - - curl_cv_header_windows_h="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_header_windows_h" >&5 -printf "%s\n" "$curl_cv_header_windows_h" >&6; } - case "$curl_cv_header_windows_h" in - yes) - -printf "%s\n" "#define HAVE_WINDOWS_H 1" >>confdefs.h - - ;; - esac - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for winsock2.h" >&5 -printf %s "checking for winsock2.h... " >&6; } -if test ${curl_cv_header_winsock2_h+y} -then : - printf %s "(cached) " >&6 -else $as_nop - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#undef inline -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#include - -int main (void) -{ - -#if defined(__CYGWIN__) || defined(__CEGCC__) || defined(__MINGW32CE__) - HAVE_WINSOCK2_H shall not be defined. -#else - int dummy=2*IPPROTO_ESP; -#endif - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - curl_cv_header_winsock2_h="yes" - -else $as_nop - - curl_cv_header_winsock2_h="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_header_winsock2_h" >&5 -printf "%s\n" "$curl_cv_header_winsock2_h" >&6; } - case "$curl_cv_header_winsock2_h" in - yes) - -printf "%s\n" "#define HAVE_WINSOCK2_H 1" >>confdefs.h - - ;; - esac - - - -curl_includes_bsdsocket="\ -/* includes start */ -#if defined(HAVE_PROTO_BSDSOCKET_H) -# define __NO_NET_API -# define __USE_INLINE__ -# include -# ifdef HAVE_SYS_IOCTL_H -# include -# endif -# ifdef __amigaos4__ -struct SocketIFace *ISocket = NULL; -# else -struct Library *SocketBase = NULL; -# endif -# define select(a,b,c,d,e) WaitSelect(a,b,c,d,e,0) -#endif -/* includes end */" - ac_fn_c_check_header_compile "$LINENO" "proto/bsdsocket.h" "ac_cv_header_proto_bsdsocket_h" "$curl_includes_bsdsocket -" -if test "x$ac_cv_header_proto_bsdsocket_h" = xyes -then : - printf "%s\n" "#define HAVE_PROTO_BSDSOCKET_H 1" >>confdefs.h - -fi - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for connect in libraries" >&5 -printf %s "checking for connect in libraries... " >&6; } - tst_connect_save_LIBS="$LIBS" - tst_connect_need_LIBS="unknown" - for tst_lib in '' '-lsocket' ; do - if test "$tst_connect_need_LIBS" = "unknown"; then - LIBS="$tst_lib $tst_connect_save_LIBS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_winsock2 - $curl_includes_bsdsocket - #if !defined(HAVE_WINDOWS_H) && !defined(HAVE_PROTO_BSDSOCKET_H) - int connect(int, void*, int); - #endif - -int main (void) -{ - - if(0 != connect(0, 0, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - tst_connect_need_LIBS="$tst_lib" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - fi - done - LIBS="$tst_connect_save_LIBS" - # - case X-"$tst_connect_need_LIBS" in - X-unknown) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cannot find connect" >&5 -printf "%s\n" "cannot find connect" >&6; } - as_fn_error $? "cannot find connect function in libraries." "$LINENO" 5 - ;; - X-) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - *) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $tst_connect_need_LIBS" >&5 -printf "%s\n" "$tst_connect_need_LIBS" >&6; } - LIBS="$tst_connect_need_LIBS $tst_connect_save_LIBS" - ;; - esac - - -CURL_NETWORK_LIBS=$LIBS - - - ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_types_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_time_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_TIME_H 1" >>confdefs.h - -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for monotonic clock_gettime" >&5 -printf %s "checking for monotonic clock_gettime... " >&6; } - # - if test "x$dontwant_rt" = "xno" ; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#include - -int main (void) -{ - - struct timespec ts; - (void)clock_gettime(CLOCK_MONOTONIC, &ts); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - curl_func_clock_gettime="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_func_clock_gettime="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - - - # - if test "$curl_func_clock_gettime" = "yes"; then - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for clock_gettime in libraries" >&5 -printf %s "checking for clock_gettime in libraries... " >&6; } - # - curl_cv_save_LIBS="$LIBS" - curl_cv_gclk_LIBS="unknown" - # - for x_xlibs in '' '-lrt' '-lposix4' ; do - if test "$curl_cv_gclk_LIBS" = "unknown"; then - if test -z "$x_xlibs"; then - LIBS="$curl_cv_save_LIBS" - else - LIBS="$x_xlibs $curl_cv_save_LIBS" - fi - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#include - -int main (void) -{ - - struct timespec ts; - (void)clock_gettime(CLOCK_MONOTONIC, &ts); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - curl_cv_gclk_LIBS="$x_xlibs" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - fi - done - # - LIBS="$curl_cv_save_LIBS" - # - case X-"$curl_cv_gclk_LIBS" in - X-unknown) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cannot find clock_gettime" >&5 -printf "%s\n" "cannot find clock_gettime" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: HAVE_CLOCK_GETTIME_MONOTONIC will not be defined" >&5 -printf "%s\n" "$as_me: WARNING: HAVE_CLOCK_GETTIME_MONOTONIC will not be defined" >&2;} - curl_func_clock_gettime="no" - ;; - X-) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no additional lib required" >&5 -printf "%s\n" "no additional lib required" >&6; } - curl_func_clock_gettime="yes" - ;; - *) - if test -z "$curl_cv_save_LIBS"; then - LIBS="$curl_cv_gclk_LIBS" - else - LIBS="$curl_cv_gclk_LIBS $curl_cv_save_LIBS" - fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_gclk_LIBS" >&5 -printf "%s\n" "$curl_cv_gclk_LIBS" >&6; } - curl_func_clock_gettime="yes" - ;; - esac - # - if test "x$cross_compiling" != "xyes" && - test "$curl_func_clock_gettime" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if monotonic clock_gettime works" >&5 -printf %s "checking if monotonic clock_gettime works... " >&6; } - - case $host_os in - darwin*) - if test "$cross_compiling" = yes -then : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5; } -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef HAVE_STDLIB_H -#include -#endif -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#include - -int main (void) -{ - - struct timespec ts; - if (0 == clock_gettime(CLOCK_MONOTONIC, &ts)) - exit(0); - else - exit(1); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: HAVE_CLOCK_GETTIME_MONOTONIC will not be defined" >&5 -printf "%s\n" "$as_me: WARNING: HAVE_CLOCK_GETTIME_MONOTONIC will not be defined" >&2;} - curl_func_clock_gettime="no" - LIBS="$curl_cv_save_LIBS" - -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - ;; - *) - old=$LD_LIBRARY_PATH - LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old - export LD_LIBRARY_PATH - if test "$cross_compiling" = yes -then : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5; } -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef HAVE_STDLIB_H -#include -#endif -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#include - -int main (void) -{ - - struct timespec ts; - if (0 == clock_gettime(CLOCK_MONOTONIC, &ts)) - exit(0); - else - exit(1); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: HAVE_CLOCK_GETTIME_MONOTONIC will not be defined" >&5 -printf "%s\n" "$as_me: WARNING: HAVE_CLOCK_GETTIME_MONOTONIC will not be defined" >&2;} - curl_func_clock_gettime="no" - LIBS="$curl_cv_save_LIBS" - -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - LD_LIBRARY_PATH=$old # restore - ;; - esac - - fi - # - case "$curl_func_clock_gettime" in - yes) - -printf "%s\n" "#define HAVE_CLOCK_GETTIME_MONOTONIC 1" >>confdefs.h - - ;; - esac - # - fi - # - - -CURL_NETWORK_AND_TIME_LIBS=$LIBS - - - -clean_CPPFLAGS=$CPPFLAGS -clean_LDFLAGS=$LDFLAGS -clean_LIBS=$LIBS -ZLIB_LIBS="" - -# Check whether --with-zlib was given. -if test ${with_zlib+y} -then : - withval=$with_zlib; OPT_ZLIB="$withval" -fi - - -if test "$OPT_ZLIB" = "no" ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: zlib disabled" >&5 -printf "%s\n" "$as_me: WARNING: zlib disabled" >&2;} -else - if test "$OPT_ZLIB" = "yes" ; then - OPT_ZLIB="" - fi - - if test -z "$OPT_ZLIB" ; then - - if test -n "$PKG_CONFIG"; then - PKGCONFIG="$PKG_CONFIG" - else - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKGCONFIG=$ac_cv_path_PKGCONFIG -if test -n "$PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 -printf "%s\n" "$PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKGCONFIG"; then - ac_pt_PKGCONFIG=$PKGCONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $ac_pt_PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG -if test -n "$ac_pt_PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 -printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_PKGCONFIG" = x; then - PKGCONFIG="no" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKGCONFIG=$ac_pt_PKGCONFIG - fi -else - PKGCONFIG="$ac_cv_path_PKGCONFIG" -fi - - fi - - if test "x$PKGCONFIG" != "xno"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for zlib options with pkg-config" >&5 -printf %s "checking for zlib options with pkg-config... " >&6; } - itexists=` - if test -n ""; then - PKG_CONFIG_LIBDIR="" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --exists zlib >/dev/null 2>&1 && echo 1` - - if test -z "$itexists"; then - PKGCONFIG="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 -printf "%s\n" "found" >&6; } - fi - fi - - - if test "$PKGCONFIG" != "no" ; then - LIBS="`$PKGCONFIG --libs-only-l zlib` $LIBS" - LDFLAGS="$LDFLAGS `$PKGCONFIG --libs-only-L zlib`" - CPPFLAGS="$CPPFLAGS `$PKGCONFIG --cflags-only-I zlib`" - OPT_ZLIB="" - HAVE_LIBZ="1" - fi - - if test -z "$HAVE_LIBZ"; then - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inflateEnd in -lz" >&5 -printf %s "checking for inflateEnd in -lz... " >&6; } -if test ${ac_cv_lib_z_inflateEnd+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lz $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char inflateEnd (); -int main (void) -{ -return inflateEnd (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_z_inflateEnd=yes -else $as_nop - ac_cv_lib_z_inflateEnd=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_inflateEnd" >&5 -printf "%s\n" "$ac_cv_lib_z_inflateEnd" >&6; } -if test "x$ac_cv_lib_z_inflateEnd" = xyes -then : - HAVE_LIBZ="1" - LIBS="-lz $LIBS" -else $as_nop - OPT_ZLIB="/usr/local" -fi - - fi - fi - - if test -n "$OPT_ZLIB"; then - CPPFLAGS="$CPPFLAGS -I$OPT_ZLIB/include" - LDFLAGS="$LDFLAGS -L$OPT_ZLIB/lib$libsuff" - fi - - ac_fn_c_check_header_compile "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default" -if test "x$ac_cv_header_zlib_h" = xyes -then : - - HAVE_ZLIB_H="1" - if test "$HAVE_LIBZ" != "1"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gzread in -lz" >&5 -printf %s "checking for gzread in -lz... " >&6; } -if test ${ac_cv_lib_z_gzread+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lz $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char gzread (); -int main (void) -{ -return gzread (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_z_gzread=yes -else $as_nop - ac_cv_lib_z_gzread=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_gzread" >&5 -printf "%s\n" "$ac_cv_lib_z_gzread" >&6; } -if test "x$ac_cv_lib_z_gzread" = xyes -then : - - HAVE_LIBZ="1" - LIBS="-lz $LIBS" - -else $as_nop - CPPFLAGS=$clean_CPPFLAGS - LDFLAGS=$clean_LDFLAGS -fi - - fi - -else $as_nop - - CPPFLAGS=$clean_CPPFLAGS - LDFLAGS=$clean_LDFLAGS - -fi - - - if test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" != "1" - then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: configure found only the libz lib, not the header file!" >&5 -printf "%s\n" "$as_me: WARNING: configure found only the libz lib, not the header file!" >&2;} - HAVE_LIBZ="" - CPPFLAGS=$clean_CPPFLAGS - LDFLAGS=$clean_LDFLAGS - LIBS=$clean_LIBS - elif test "$HAVE_LIBZ" != "1" && test "$HAVE_ZLIB_H" = "1" - then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: configure found only the libz header file, not the lib!" >&5 -printf "%s\n" "$as_me: WARNING: configure found only the libz header file, not the lib!" >&2;} - CPPFLAGS=$clean_CPPFLAGS - LDFLAGS=$clean_LDFLAGS - LIBS=$clean_LIBS - elif test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" = "1" - then - - -printf "%s\n" "#define HAVE_ZLIB_H 1" >>confdefs.h - - -printf "%s\n" "#define HAVE_LIBZ 1" >>confdefs.h - - - ZLIB_LIBS="-lz" - LIBS="-lz $clean_LIBS" - - AMFIXLIB="1" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: found both libz and libz.h header" >&5 -printf "%s\n" "$as_me: found both libz and libz.h header" >&6;} - curl_zlib_msg="enabled" - fi -fi - - if test x"$AMFIXLIB" = x1; then - HAVE_LIBZ_TRUE= - HAVE_LIBZ_FALSE='#' -else - HAVE_LIBZ_TRUE='#' - HAVE_LIBZ_FALSE= -fi - - - - - -OPT_BROTLI=off - -# Check whether --with-brotli was given. -if test ${with_brotli+y} -then : - withval=$with_brotli; OPT_BROTLI=$withval -fi - - -if test X"$OPT_BROTLI" != Xno; then - CLEANLDFLAGS="$LDFLAGS" - CLEANCPPFLAGS="$CPPFLAGS" - CLEANLIBS="$LIBS" - - case "$OPT_BROTLI" in - yes) - - if test -n "$PKG_CONFIG"; then - PKGCONFIG="$PKG_CONFIG" - else - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKGCONFIG=$ac_cv_path_PKGCONFIG -if test -n "$PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 -printf "%s\n" "$PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKGCONFIG"; then - ac_pt_PKGCONFIG=$PKGCONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $ac_pt_PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG -if test -n "$ac_pt_PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 -printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_PKGCONFIG" = x; then - PKGCONFIG="no" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKGCONFIG=$ac_pt_PKGCONFIG - fi -else - PKGCONFIG="$ac_cv_path_PKGCONFIG" -fi - - fi - - if test "x$PKGCONFIG" != "xno"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libbrotlidec options with pkg-config" >&5 -printf %s "checking for libbrotlidec options with pkg-config... " >&6; } - itexists=` - if test -n ""; then - PKG_CONFIG_LIBDIR="" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --exists libbrotlidec >/dev/null 2>&1 && echo 1` - - if test -z "$itexists"; then - PKGCONFIG="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 -printf "%s\n" "found" >&6; } - fi - fi - - - if test "$PKGCONFIG" != "no" ; then - LIB_BROTLI=`$PKGCONFIG --libs-only-l libbrotlidec` - LD_BROTLI=`$PKGCONFIG --libs-only-L libbrotlidec` - CPP_BROTLI=`$PKGCONFIG --cflags-only-I libbrotlidec` - version=`$PKGCONFIG --modversion libbrotlidec` - DIR_BROTLI=`echo $LD_BROTLI | $SED -e 's/^-L//'` - fi - - ;; - off) - ;; - *) - PREFIX_BROTLI=$OPT_BROTLI - ;; - esac - - if test -n "$PREFIX_BROTLI"; then - LIB_BROTLI="-lbrotlidec" - LD_BROTLI=-L${PREFIX_BROTLI}/lib$libsuff - CPP_BROTLI=-I${PREFIX_BROTLI}/include - DIR_BROTLI=${PREFIX_BROTLI}/lib$libsuff - fi - - LDFLAGS="$LDFLAGS $LD_BROTLI" - CPPFLAGS="$CPPFLAGS $CPP_BROTLI" - LIBS="$LIB_BROTLI $LIBS" - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BrotliDecoderDecompress in -lbrotlidec" >&5 -printf %s "checking for BrotliDecoderDecompress in -lbrotlidec... " >&6; } -if test ${ac_cv_lib_brotlidec_BrotliDecoderDecompress+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lbrotlidec $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char BrotliDecoderDecompress (); -int main (void) -{ -return BrotliDecoderDecompress (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_brotlidec_BrotliDecoderDecompress=yes -else $as_nop - ac_cv_lib_brotlidec_BrotliDecoderDecompress=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_brotlidec_BrotliDecoderDecompress" >&5 -printf "%s\n" "$ac_cv_lib_brotlidec_BrotliDecoderDecompress" >&6; } -if test "x$ac_cv_lib_brotlidec_BrotliDecoderDecompress" = xyes -then : - printf "%s\n" "#define HAVE_LIBBROTLIDEC 1" >>confdefs.h - - LIBS="-lbrotlidec $LIBS" - -fi - - - for ac_header in brotli/decode.h -do : - ac_fn_c_check_header_compile "$LINENO" "brotli/decode.h" "ac_cv_header_brotli_decode_h" "$ac_includes_default" -if test "x$ac_cv_header_brotli_decode_h" = xyes -then : - printf "%s\n" "#define HAVE_BROTLI_DECODE_H 1" >>confdefs.h - curl_brotli_msg="enabled (libbrotlidec)" - HAVE_BROTLI=1 - -printf "%s\n" "#define HAVE_BROTLI 1" >>confdefs.h - - HAVE_BROTLI=1 - - -fi - -done - - if test X"$OPT_BROTLI" != Xoff && - test "$HAVE_BROTLI" != "1"; then - as_fn_error $? "BROTLI libs and/or directories were not found where specified!" "$LINENO" 5 - fi - - if test "$HAVE_BROTLI" = "1"; then - if test -n "$DIR_BROTLI"; then - - if test "x$cross_compiling" != "xyes"; then - CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_BROTLI" - export CURL_LIBRARY_PATH - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_BROTLI to CURL_LIBRARY_PATH" >&5 -printf "%s\n" "$as_me: Added $DIR_BROTLI to CURL_LIBRARY_PATH" >&6;} - fi - fi - else - LDFLAGS=$CLEANLDFLAGS - CPPFLAGS=$CLEANCPPFLAGS - LIBS=$CLEANLIBS - fi -fi - - -OPT_ZSTD=off - -# Check whether --with-zstd was given. -if test ${with_zstd+y} -then : - withval=$with_zstd; OPT_ZSTD=$withval -fi - - -if test X"$OPT_ZSTD" != Xno; then - CLEANLDFLAGS="$LDFLAGS" - CLEANCPPFLAGS="$CPPFLAGS" - CLEANLIBS="$LIBS" - - case "$OPT_ZSTD" in - yes) - - if test -n "$PKG_CONFIG"; then - PKGCONFIG="$PKG_CONFIG" - else - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKGCONFIG=$ac_cv_path_PKGCONFIG -if test -n "$PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 -printf "%s\n" "$PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKGCONFIG"; then - ac_pt_PKGCONFIG=$PKGCONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $ac_pt_PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG -if test -n "$ac_pt_PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 -printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_PKGCONFIG" = x; then - PKGCONFIG="no" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKGCONFIG=$ac_pt_PKGCONFIG - fi -else - PKGCONFIG="$ac_cv_path_PKGCONFIG" -fi - - fi - - if test "x$PKGCONFIG" != "xno"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libzstd options with pkg-config" >&5 -printf %s "checking for libzstd options with pkg-config... " >&6; } - itexists=` - if test -n ""; then - PKG_CONFIG_LIBDIR="" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --exists libzstd >/dev/null 2>&1 && echo 1` - - if test -z "$itexists"; then - PKGCONFIG="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 -printf "%s\n" "found" >&6; } - fi - fi - - - if test "$PKGCONFIG" != "no" ; then - LIB_ZSTD=`$PKGCONFIG --libs-only-l libzstd` - LD_ZSTD=`$PKGCONFIG --libs-only-L libzstd` - CPP_ZSTD=`$PKGCONFIG --cflags-only-I libzstd` - version=`$PKGCONFIG --modversion libzstd` - DIR_ZSTD=`echo $LD_ZSTD | $SED -e 's/-L//'` - fi - - ;; - off) - ;; - *) - PREFIX_ZSTD=$OPT_ZSTD - ;; - esac - - if test -n "$PREFIX_ZSTD"; then - LIB_ZSTD="-lzstd" - LD_ZSTD=-L${PREFIX_ZSTD}/lib$libsuff - CPP_ZSTD=-I${PREFIX_ZSTD}/include - DIR_ZSTD=${PREFIX_ZSTD}/lib$libsuff - fi - - LDFLAGS="$LDFLAGS $LD_ZSTD" - CPPFLAGS="$CPPFLAGS $CPP_ZSTD" - LIBS="$LIB_ZSTD $LIBS" - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ZSTD_createDStream in -lzstd" >&5 -printf %s "checking for ZSTD_createDStream in -lzstd... " >&6; } -if test ${ac_cv_lib_zstd_ZSTD_createDStream+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lzstd $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char ZSTD_createDStream (); -int main (void) -{ -return ZSTD_createDStream (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_zstd_ZSTD_createDStream=yes -else $as_nop - ac_cv_lib_zstd_ZSTD_createDStream=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_zstd_ZSTD_createDStream" >&5 -printf "%s\n" "$ac_cv_lib_zstd_ZSTD_createDStream" >&6; } -if test "x$ac_cv_lib_zstd_ZSTD_createDStream" = xyes -then : - printf "%s\n" "#define HAVE_LIBZSTD 1" >>confdefs.h - - LIBS="-lzstd $LIBS" - -fi - - - for ac_header in zstd.h -do : - ac_fn_c_check_header_compile "$LINENO" "zstd.h" "ac_cv_header_zstd_h" "$ac_includes_default" -if test "x$ac_cv_header_zstd_h" = xyes -then : - printf "%s\n" "#define HAVE_ZSTD_H 1" >>confdefs.h - curl_zstd_msg="enabled (libzstd)" - HAVE_ZSTD=1 - -printf "%s\n" "#define HAVE_ZSTD 1" >>confdefs.h - - HAVE_ZSTD=1 - - -fi - -done - - if test X"$OPT_ZSTD" != Xoff && - test "$HAVE_ZSTD" != "1"; then - as_fn_error $? "libzstd was not found where specified!" "$LINENO" 5 - fi - - if test "$HAVE_ZSTD" = "1"; then - if test -n "$DIR_ZSTD"; then - - if test "x$cross_compiling" != "xyes"; then - CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_ZSTD" - export CURL_LIBRARY_PATH - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_ZSTD to CURL_LIBRARY_PATH" >&5 -printf "%s\n" "$as_me: Added $DIR_ZSTD to CURL_LIBRARY_PATH" >&6;} - fi - fi - else - LDFLAGS=$CLEANLDFLAGS - CPPFLAGS=$CLEANCPPFLAGS - LIBS=$CLEANLIBS - fi -fi - - -LDAPLIBNAME="" - -# Check whether --with-ldap-lib was given. -if test ${with_ldap_lib+y} -then : - withval=$with_ldap_lib; LDAPLIBNAME="$withval" -fi - - -LBERLIBNAME="" - -# Check whether --with-lber-lib was given. -if test ${with_lber_lib+y} -then : - withval=$with_lber_lib; LBERLIBNAME="$withval" -fi - - -if test x$CURL_DISABLE_LDAP != x1 ; then - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for lber.h" >&5 -printf %s "checking for lber.h... " >&6; } -if test ${curl_cv_header_lber_h+y} -then : - printf %s "(cached) " >&6 -else $as_nop - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#undef inline -#ifdef HAVE_WINDOWS_H -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#else -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#endif -#ifndef NULL -#define NULL (void *)0 -#endif -#include - -int main (void) -{ - - BerValue *bvp = NULL; - BerElement *bep = ber_init(bvp); - ber_free(bep, 1); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - curl_cv_header_lber_h="yes" - -else $as_nop - - curl_cv_header_lber_h="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_header_lber_h" >&5 -printf "%s\n" "$curl_cv_header_lber_h" >&6; } - if test "$curl_cv_header_lber_h" = "yes"; then - -printf "%s\n" "#define HAVE_LBER_H 1" >>confdefs.h - - # - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#undef inline -#ifdef HAVE_WINDOWS_H -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#else -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#endif -#ifndef NULL -#define NULL (void *)0 -#endif -#ifndef LDAP_DEPRECATED -#define LDAP_DEPRECATED 1 -#endif -#include - -int main (void) -{ - - BerValue *bvp = NULL; - BerElement *bep = ber_init(bvp); - ber_free(bep, 1); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - curl_cv_need_header_lber_h="no" - -else $as_nop - - curl_cv_need_header_lber_h="yes" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - # - case "$curl_cv_need_header_lber_h" in - yes) - -printf "%s\n" "#define NEED_LBER_H 1" >>confdefs.h - - ;; - esac - fi - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ldap.h" >&5 -printf %s "checking for ldap.h... " >&6; } -if test ${curl_cv_header_ldap_h+y} -then : - printf %s "(cached) " >&6 -else $as_nop - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#undef inline -#ifdef HAVE_WINDOWS_H -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#else -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#endif -#ifndef LDAP_DEPRECATED -#define LDAP_DEPRECATED 1 -#endif -#ifdef NEED_LBER_H -#include -#endif -#include - -int main (void) -{ - - LDAP *ldp = ldap_init("dummy", LDAP_PORT); - int res = ldap_unbind(ldp); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - curl_cv_header_ldap_h="yes" - -else $as_nop - - curl_cv_header_ldap_h="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_header_ldap_h" >&5 -printf "%s\n" "$curl_cv_header_ldap_h" >&6; } - case "$curl_cv_header_ldap_h" in - yes) - -printf "%s\n" "#define HAVE_LDAP_H 1" >>confdefs.h - - ;; - esac - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ldap_ssl.h" >&5 -printf %s "checking for ldap_ssl.h... " >&6; } -if test ${curl_cv_header_ldap_ssl_h+y} -then : - printf %s "(cached) " >&6 -else $as_nop - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#undef inline -#ifdef HAVE_WINDOWS_H -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#else -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#endif -#ifndef LDAP_DEPRECATED -#define LDAP_DEPRECATED 1 -#endif -#ifdef NEED_LBER_H -#include -#endif -#ifdef HAVE_LDAP_H -#include -#endif -#include - -int main (void) -{ - - LDAP *ldp = ldapssl_init("dummy", LDAPS_PORT, 1); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - curl_cv_header_ldap_ssl_h="yes" - -else $as_nop - - curl_cv_header_ldap_ssl_h="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_header_ldap_ssl_h" >&5 -printf "%s\n" "$curl_cv_header_ldap_ssl_h" >&6; } - case "$curl_cv_header_ldap_ssl_h" in - yes) - -printf "%s\n" "#define HAVE_LDAP_SSL_H 1" >>confdefs.h - - ;; - esac - - - if test -z "$LDAPLIBNAME" ; then - if test "$curl_cv_native_windows" = "yes"; then - LDAPLIBNAME="wldap32" - LBERLIBNAME="no" - fi - fi - - if test "$LDAPLIBNAME" ; then - as_ac_Lib=`printf "%s\n" "ac_cv_lib_"$LDAPLIBNAME"""_ldap_init" | $as_tr_sh` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ldap_init in -l\"$LDAPLIBNAME\"" >&5 -printf %s "checking for ldap_init in -l\"$LDAPLIBNAME\"... " >&6; } -if eval test \${$as_ac_Lib+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-l"$LDAPLIBNAME" $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char ldap_init (); -int main (void) -{ -return ldap_init (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - eval "$as_ac_Lib=yes" -else $as_nop - eval "$as_ac_Lib=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -eval ac_res=\$$as_ac_Lib - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } -if eval test \"x\$"$as_ac_Lib"\" = x"yes" -then : - cat >>confdefs.h <<_ACEOF -#define `printf "%s\n" "HAVE_LIB"$LDAPLIBNAME"" | $as_tr_cpp` 1 -_ACEOF - - LIBS="-l"$LDAPLIBNAME" $LIBS" - -else $as_nop - - if test -n "$ldap_askedfor"; then - as_fn_error $? "couldn't detect the LDAP libraries" "$LINENO" 5 - fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: \"$LDAPLIBNAME\" is not an LDAP library: LDAP disabled" >&5 -printf "%s\n" "$as_me: WARNING: \"$LDAPLIBNAME\" is not an LDAP library: LDAP disabled" >&2;} - -printf "%s\n" "#define CURL_DISABLE_LDAP 1" >>confdefs.h - - CURL_DISABLE_LDAP=1 - - -printf "%s\n" "#define CURL_DISABLE_LDAPS 1" >>confdefs.h - - CURL_DISABLE_LDAPS=1 - -fi - - else - - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for LDAP libraries" >&5 -printf %s "checking for LDAP libraries... " >&6; } - # - u_libs="" - # - - # - curl_cv_save_LIBS="$LIBS" - curl_cv_ldap_LIBS="unknown" - # - for x_nlibs in '' "$u_libs" \ - '-lldap' \ - '-lldap -llber' \ - '-llber -lldap' \ - '-lldapssl -lldapx -lldapsdk' \ - '-lldapsdk -lldapx -lldapssl' \ - '-lldap -llber -lssl -lcrypto' ; do - - if test "$curl_cv_ldap_LIBS" = "unknown"; then - if test -z "$x_nlibs"; then - LIBS="$curl_cv_save_LIBS" - else - LIBS="$x_nlibs $curl_cv_save_LIBS" - fi - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#undef inline -#ifdef HAVE_WINDOWS_H -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#else -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#endif -#ifndef NULL -#define NULL (void *)0 -#endif -#ifndef LDAP_DEPRECATED -#define LDAP_DEPRECATED 1 -#endif -#ifdef NEED_LBER_H -#include -#endif -#ifdef HAVE_LDAP_H -#include -#endif - -int main (void) -{ - - BerValue *bvp = NULL; - BerElement *bep = ber_init(bvp); - LDAP *ldp = ldap_init("dummy", LDAP_PORT); - int res = ldap_unbind(ldp); - ber_free(bep, 1); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - curl_cv_ldap_LIBS="$x_nlibs" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - fi - done - # - LIBS="$curl_cv_save_LIBS" - # - case X-"$curl_cv_ldap_LIBS" in - X-unknown) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cannot find LDAP libraries" >&5 -printf "%s\n" "cannot find LDAP libraries" >&6; } - ;; - X-) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no additional lib required" >&5 -printf "%s\n" "no additional lib required" >&6; } - ;; - *) - if test -z "$curl_cv_save_LIBS"; then - LIBS="$curl_cv_ldap_LIBS" - else - LIBS="$curl_cv_ldap_LIBS $curl_cv_save_LIBS" - fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_ldap_LIBS" >&5 -printf "%s\n" "$curl_cv_ldap_LIBS" >&6; } - ;; - esac - # - - case X-"$curl_cv_ldap_LIBS" in - X-unknown) - if test -n "$ldap_askedfor"; then - as_fn_error $? "couldn't detect the LDAP libraries" "$LINENO" 5 - fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Cannot find libraries for LDAP support: LDAP disabled" >&5 -printf "%s\n" "$as_me: WARNING: Cannot find libraries for LDAP support: LDAP disabled" >&2;} - -printf "%s\n" "#define CURL_DISABLE_LDAP 1" >>confdefs.h - - CURL_DISABLE_LDAP=1 - - -printf "%s\n" "#define CURL_DISABLE_LDAPS 1" >>confdefs.h - - CURL_DISABLE_LDAPS=1 - - ;; - esac - fi -fi - -if test x$CURL_DISABLE_LDAP != x1 ; then - - if test "$LBERLIBNAME" ; then - if test "$LBERLIBNAME" != "no" ; then - as_ac_Lib=`printf "%s\n" "ac_cv_lib_"$LBERLIBNAME"""_ber_free" | $as_tr_sh` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ber_free in -l\"$LBERLIBNAME\"" >&5 -printf %s "checking for ber_free in -l\"$LBERLIBNAME\"... " >&6; } -if eval test \${$as_ac_Lib+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-l"$LBERLIBNAME" $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char ber_free (); -int main (void) -{ -return ber_free (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - eval "$as_ac_Lib=yes" -else $as_nop - eval "$as_ac_Lib=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -eval ac_res=\$$as_ac_Lib - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } -if eval test \"x\$"$as_ac_Lib"\" = x"yes" -then : - cat >>confdefs.h <<_ACEOF -#define `printf "%s\n" "HAVE_LIB"$LBERLIBNAME"" | $as_tr_cpp` 1 -_ACEOF - - LIBS="-l"$LBERLIBNAME" $LIBS" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: \"$LBERLIBNAME\" is not an LBER library: LDAP disabled" >&5 -printf "%s\n" "$as_me: WARNING: \"$LBERLIBNAME\" is not an LBER library: LDAP disabled" >&2;} - -printf "%s\n" "#define CURL_DISABLE_LDAP 1" >>confdefs.h - - CURL_DISABLE_LDAP=1 - - -printf "%s\n" "#define CURL_DISABLE_LDAPS 1" >>confdefs.h - - CURL_DISABLE_LDAPS=1 - -fi - - fi - fi -fi - -if test x$CURL_DISABLE_LDAP != x1 ; then - ac_fn_c_check_func "$LINENO" "ldap_url_parse" "ac_cv_func_ldap_url_parse" -if test "x$ac_cv_func_ldap_url_parse" = xyes -then : - printf "%s\n" "#define HAVE_LDAP_URL_PARSE 1" >>confdefs.h - -fi - - - if test "$LDAPLIBNAME" = "wldap32"; then - curl_ldap_msg="enabled (winldap)" - -printf "%s\n" "#define USE_WIN32_LDAP 1" >>confdefs.h - - else - curl_ldap_msg="enabled (OpenLDAP)" - if test "x$ac_cv_func_ldap_init_fd" = "xyes"; then - -printf "%s\n" "#define USE_OPENLDAP 1" >>confdefs.h - - USE_OPENLDAP=1 - - fi - fi -fi - -if test x$CURL_DISABLE_LDAPS != x1 ; then - curl_ldaps_msg="enabled" -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable IPv6" >&5 -printf %s "checking whether to enable IPv6... " >&6; } -# Check whether --enable-ipv6 was given. -if test ${enable_ipv6+y} -then : - enableval=$enable_ipv6; case "$enableval" in - no) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ipv6=no - ;; - *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ipv6=yes - ;; - esac -else $as_nop - if test "$cross_compiling" = yes -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ipv6=yes - -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* are AF_INET6 and sockaddr_in6 available? */ -#include -#ifdef HAVE_WINSOCK2_H -#include -#include -#else -#include -#include -#if defined (__TANDEM) -# include -#endif -#endif -#include /* for exit() */ -main() -{ - struct sockaddr_in6 s; - (void)s; - if (socket(AF_INET6, SOCK_STREAM, 0) < 0) - exit(1); - else - exit(0); -} - - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ipv6=yes -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ipv6=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi - - -if test "$ipv6" = yes; then - curl_ipv6_msg="enabled" - -printf "%s\n" "#define ENABLE_IPV6 1" >>confdefs.h - - IPV6_ENABLED=1 - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if struct sockaddr_in6 has sin6_scope_id member" >&5 -printf %s "checking if struct sockaddr_in6 has sin6_scope_id member... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#ifdef HAVE_WINSOCK2_H -#include -#include -#else -#include -#if defined (__TANDEM) -# include -#endif -#endif - -int main (void) -{ - - struct sockaddr_in6 s; - s.sin6_scope_id = 0; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1" >>confdefs.h - - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if argv can be written to" >&5 -printf %s "checking if argv can be written to... " >&6; } - - case $host_os in - darwin*) - if test "$cross_compiling" = yes -then : - curl_cv_writable_argv=cross - -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int main(int argc, char **argv) -{ - (void)argc; - argv[0][0] = ' '; - return (argv[0][0] == ' ')?0:1; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - curl_cv_writable_argv=yes - -else $as_nop - curl_cv_writable_argv=no - -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - ;; - *) - old=$LD_LIBRARY_PATH - LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old - export LD_LIBRARY_PATH - if test "$cross_compiling" = yes -then : - curl_cv_writable_argv=cross - -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int main(int argc, char **argv) -{ - (void)argc; - argv[0][0] = ' '; - return (argv[0][0] == ' ')?0:1; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - curl_cv_writable_argv=yes - -else $as_nop - curl_cv_writable_argv=no - -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - LD_LIBRARY_PATH=$old # restore - ;; - esac - -case $curl_cv_writable_argv in -yes) - -printf "%s\n" "#define HAVE_WRITABLE_ARGV 1" >>confdefs.h - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; -no) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; -*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: the previous check could not be made default was used" >&5 -printf "%s\n" "$as_me: WARNING: the previous check could not be made default was used" >&2;} - ;; -esac - - - -GSSAPI_ROOT="/usr" - -# Check whether --with-gssapi-includes was given. -if test ${with_gssapi_includes+y} -then : - withval=$with_gssapi_includes; GSSAPI_INCS="-I$withval" - want_gss="yes" - -fi - - - -# Check whether --with-gssapi-libs was given. -if test ${with_gssapi_libs+y} -then : - withval=$with_gssapi_libs; GSSAPI_LIB_DIR="-L$withval" - want_gss="yes" - -fi - - - -# Check whether --with-gssapi was given. -if test ${with_gssapi+y} -then : - withval=$with_gssapi; - GSSAPI_ROOT="$withval" - if test x"$GSSAPI_ROOT" != xno; then - want_gss="yes" - if test x"$GSSAPI_ROOT" = xyes; then - GSSAPI_ROOT="/usr" - fi - fi - -fi - - -: ${KRB5CONFIG:="$GSSAPI_ROOT/bin/krb5-config"} - -save_CPPFLAGS="$CPPFLAGS" -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if GSS-API support is requested" >&5 -printf %s "checking if GSS-API support is requested... " >&6; } -if test x"$want_gss" = xyes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - - if test $GSSAPI_ROOT != "/usr"; then - - if test -n "$PKG_CONFIG"; then - PKGCONFIG="$PKG_CONFIG" - else - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKGCONFIG=$ac_cv_path_PKGCONFIG -if test -n "$PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 -printf "%s\n" "$PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKGCONFIG"; then - ac_pt_PKGCONFIG=$PKGCONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $ac_pt_PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG -if test -n "$ac_pt_PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 -printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_PKGCONFIG" = x; then - PKGCONFIG="no" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKGCONFIG=$ac_pt_PKGCONFIG - fi -else - PKGCONFIG="$ac_cv_path_PKGCONFIG" -fi - - fi - - if test "x$PKGCONFIG" != "xno"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mit-krb5-gssapi options with pkg-config" >&5 -printf %s "checking for mit-krb5-gssapi options with pkg-config... " >&6; } - itexists=` - if test -n "$GSSAPI_ROOT/lib/pkgconfig"; then - PKG_CONFIG_LIBDIR="$GSSAPI_ROOT/lib/pkgconfig" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --exists mit-krb5-gssapi >/dev/null 2>&1 && echo 1` - - if test -z "$itexists"; then - PKGCONFIG="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 -printf "%s\n" "found" >&6; } - fi - fi - - else - - if test -n "$PKG_CONFIG"; then - PKGCONFIG="$PKG_CONFIG" - else - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKGCONFIG=$ac_cv_path_PKGCONFIG -if test -n "$PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 -printf "%s\n" "$PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKGCONFIG"; then - ac_pt_PKGCONFIG=$PKGCONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $ac_pt_PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG -if test -n "$ac_pt_PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 -printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_PKGCONFIG" = x; then - PKGCONFIG="no" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKGCONFIG=$ac_pt_PKGCONFIG - fi -else - PKGCONFIG="$ac_cv_path_PKGCONFIG" -fi - - fi - - if test "x$PKGCONFIG" != "xno"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mit-krb5-gssapi options with pkg-config" >&5 -printf %s "checking for mit-krb5-gssapi options with pkg-config... " >&6; } - itexists=` - if test -n ""; then - PKG_CONFIG_LIBDIR="" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --exists mit-krb5-gssapi >/dev/null 2>&1 && echo 1` - - if test -z "$itexists"; then - PKGCONFIG="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 -printf "%s\n" "found" >&6; } - fi - fi - - fi - if test -z "$GSSAPI_INCS"; then - if test -n "$host_alias" -a -f "$GSSAPI_ROOT/bin/$host_alias-krb5-config"; then - GSSAPI_INCS=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --cflags gssapi` - elif test "$PKGCONFIG" != "no" ; then - GSSAPI_INCS=`$PKGCONFIG --cflags mit-krb5-gssapi` - elif test -f "$KRB5CONFIG"; then - GSSAPI_INCS=`$KRB5CONFIG --cflags gssapi` - elif test "$GSSAPI_ROOT" != "yes"; then - GSSAPI_INCS="-I$GSSAPI_ROOT/include" - fi - fi - - CPPFLAGS="$CPPFLAGS $GSSAPI_INCS" - - ac_fn_c_check_header_compile "$LINENO" "gss.h" "ac_cv_header_gss_h" "$ac_includes_default" -if test "x$ac_cv_header_gss_h" = xyes -then : - - -printf "%s\n" "#define HAVE_GSSGNU 1" >>confdefs.h - - gnu_gss=yes - -else $as_nop - - for ac_header in gssapi/gssapi.h -do : - ac_fn_c_check_header_compile "$LINENO" "gssapi/gssapi.h" "ac_cv_header_gssapi_gssapi_h" "$ac_includes_default" -if test "x$ac_cv_header_gssapi_gssapi_h" = xyes -then : - printf "%s\n" "#define HAVE_GSSAPI_GSSAPI_H 1" >>confdefs.h - -else $as_nop - not_mit=1 -fi - -done - for ac_header in gssapi/gssapi_generic.h gssapi/gssapi_krb5.h -do : - as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" " -$ac_includes_default -#ifdef HAVE_GSSAPI_GSSAPI_H -#include -#endif - -" -if eval test \"x\$"$as_ac_Header"\" = x"yes" -then : - cat >>confdefs.h <<_ACEOF -#define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -else $as_nop - not_mit=1 -fi - -done - if test "x$not_mit" = "x1"; then - ac_fn_c_check_header_compile "$LINENO" "gssapi.h" "ac_cv_header_gssapi_h" "$ac_includes_default" -if test "x$ac_cv_header_gssapi_h" = xyes -then : - - -printf "%s\n" "#define HAVE_GSSHEIMDAL 1" >>confdefs.h - - -else $as_nop - - want_gss=no - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: disabling GSS-API support since no header files were found" >&5 -printf "%s\n" "$as_me: WARNING: disabling GSS-API support since no header files were found" >&2;} - - -fi - - else - -printf "%s\n" "#define HAVE_GSSMIT 1" >>confdefs.h - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if GSS-API headers declare GSS_C_NT_HOSTBASED_SERVICE" >&5 -printf %s "checking if GSS-API headers declare GSS_C_NT_HOSTBASED_SERVICE... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#include -#include -#include - -int main (void) -{ - - gss_import_name( - (OM_uint32 *)0, - (gss_buffer_t)0, - GSS_C_NT_HOSTBASED_SERVICE, - (gss_name_t *)0); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -printf "%s\n" "#define HAVE_OLD_GSSMIT 1" >>confdefs.h - - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - - -fi - -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi -if test x"$want_gss" = xyes; then - -printf "%s\n" "#define HAVE_GSSAPI 1" >>confdefs.h - - HAVE_GSSAPI=1 - curl_gss_msg="enabled (MIT Kerberos/Heimdal)" - - if test -n "$gnu_gss"; then - curl_gss_msg="enabled (GNU GSS)" - LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR" - LIBS="-lgss $LIBS" - elif test -z "$GSSAPI_LIB_DIR"; then - case $host in - *-*-darwin*) - LIBS="-lgssapi_krb5 -lresolv $LIBS" - ;; - *) - if test $GSSAPI_ROOT != "/usr"; then - - if test -n "$PKG_CONFIG"; then - PKGCONFIG="$PKG_CONFIG" - else - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKGCONFIG=$ac_cv_path_PKGCONFIG -if test -n "$PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 -printf "%s\n" "$PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKGCONFIG"; then - ac_pt_PKGCONFIG=$PKGCONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $ac_pt_PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG -if test -n "$ac_pt_PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 -printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_PKGCONFIG" = x; then - PKGCONFIG="no" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKGCONFIG=$ac_pt_PKGCONFIG - fi -else - PKGCONFIG="$ac_cv_path_PKGCONFIG" -fi - - fi - - if test "x$PKGCONFIG" != "xno"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mit-krb5-gssapi options with pkg-config" >&5 -printf %s "checking for mit-krb5-gssapi options with pkg-config... " >&6; } - itexists=` - if test -n "$GSSAPI_ROOT/lib/pkgconfig"; then - PKG_CONFIG_LIBDIR="$GSSAPI_ROOT/lib/pkgconfig" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --exists mit-krb5-gssapi >/dev/null 2>&1 && echo 1` - - if test -z "$itexists"; then - PKGCONFIG="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 -printf "%s\n" "found" >&6; } - fi - fi - - else - - if test -n "$PKG_CONFIG"; then - PKGCONFIG="$PKG_CONFIG" - else - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKGCONFIG=$ac_cv_path_PKGCONFIG -if test -n "$PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 -printf "%s\n" "$PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKGCONFIG"; then - ac_pt_PKGCONFIG=$PKGCONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $ac_pt_PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG -if test -n "$ac_pt_PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 -printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_PKGCONFIG" = x; then - PKGCONFIG="no" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKGCONFIG=$ac_pt_PKGCONFIG - fi -else - PKGCONFIG="$ac_cv_path_PKGCONFIG" -fi - - fi - - if test "x$PKGCONFIG" != "xno"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mit-krb5-gssapi options with pkg-config" >&5 -printf %s "checking for mit-krb5-gssapi options with pkg-config... " >&6; } - itexists=` - if test -n ""; then - PKG_CONFIG_LIBDIR="" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --exists mit-krb5-gssapi >/dev/null 2>&1 && echo 1` - - if test -z "$itexists"; then - PKGCONFIG="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 -printf "%s\n" "found" >&6; } - fi - fi - - fi - if test -n "$host_alias" -a -f "$GSSAPI_ROOT/bin/$host_alias-krb5-config"; then - gss_libs=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --libs gssapi` - LIBS="$gss_libs $LIBS" - elif test "$PKGCONFIG" != "no" ; then - gss_libs=`$PKGCONFIG --libs mit-krb5-gssapi` - LIBS="$gss_libs $LIBS" - elif test -f "$KRB5CONFIG"; then - gss_libs=`$KRB5CONFIG --libs gssapi` - LIBS="$gss_libs $LIBS" - else - case $host in - *-hp-hpux*) - gss_libname="gss" - ;; - *) - gss_libname="gssapi" - ;; - esac - - if test "$GSSAPI_ROOT" != "yes"; then - LDFLAGS="$LDFLAGS -L$GSSAPI_ROOT/lib$libsuff" - LIBS="-l$gss_libname $LIBS" - else - LIBS="-l$gss_libname $LIBS" - fi - fi - ;; - esac - else - LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR" - case $host in - *-hp-hpux*) - LIBS="-lgss $LIBS" - ;; - *) - LIBS="-lgssapi $LIBS" - ;; - esac - fi -else - CPPFLAGS="$save_CPPFLAGS" -fi - -if test x"$want_gss" = xyes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can link against GSS-API library" >&5 -printf %s "checking if we can link against GSS-API library... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#define gss_init_sec_context innocuous_gss_init_sec_context -#ifdef __STDC__ -# include -#else -# include -#endif -#undef gss_init_sec_context -#ifdef __cplusplus -extern "C" -#endif -char gss_init_sec_context (); -#if defined __stub_gss_init_sec_context || defined __stub___gss_init_sec_context -choke me -#endif - -int main (void) -{ -return gss_init_sec_context (); - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - as_fn_error $? "--with-gssapi was specified, but a GSS-API library was not found." "$LINENO" 5 - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -fi - -build_libstubgss=no -if test x"$want_gss" = "xyes"; then - build_libstubgss=yes -fi - - if test "x$build_libstubgss" = "xyes"; then - BUILD_STUB_GSS_TRUE= - BUILD_STUB_GSS_FALSE='#' -else - BUILD_STUB_GSS_TRUE='#' - BUILD_STUB_GSS_FALSE= -fi - - - -DEFAULT_SSL_BACKEND=no -VALID_DEFAULT_SSL_BACKEND= - -# Check whether --with-default-ssl-backend was given. -if test ${with_default_ssl_backend+y} -then : - withval=$with_default_ssl_backend; DEFAULT_SSL_BACKEND=$withval -fi - -case "$DEFAULT_SSL_BACKEND" in - no) - ;; - default|yes) - as_fn_error $? "The name of the default SSL backend is required." "$LINENO" 5 - ;; - *) - - VALID_DEFAULT_SSL_BACKEND=no - ;; -esac - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable Windows native SSL/TLS" >&5 -printf %s "checking whether to enable Windows native SSL/TLS... " >&6; } -if test "x$OPT_SCHANNEL" != xno; then - ssl_msg= - if test "x$OPT_SCHANNEL" != "xno" && - test "x$curl_cv_native_windows" = "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define USE_SCHANNEL 1" >>confdefs.h - - USE_SCHANNEL=1 - - ssl_msg="Schannel" - test schannel != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes - SCHANNEL_ENABLED=1 - # --with-schannel implies --enable-sspi - -printf "%s\n" "#define USE_WINDOWS_SSPI 1" >>confdefs.h - - USE_WINDOWS_SSPI=1 - - curl_sspi_msg="enabled" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - fi - test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg" -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable Secure Transport" >&5 -printf %s "checking whether to enable Secure Transport... " >&6; } -if test "x$OPT_SECURETRANSPORT" != xno; then - if test "x$OPT_SECURETRANSPORT" != "xno" && - (test "x$cross_compiling" != "xno" || test -d "/System/Library/Frameworks/Security.framework"); then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define USE_SECTRANSP 1" >>confdefs.h - - USE_SECTRANSP=1 - - ssl_msg="Secure Transport" - test secure-transport != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes - SECURETRANSPORT_ENABLED=1 - LDFLAGS="$LDFLAGS -framework CoreFoundation -framework Security" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - fi - test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg" -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable Amiga native SSL/TLS (AmiSSL v5)" >&5 -printf %s "checking whether to enable Amiga native SSL/TLS (AmiSSL v5)... " >&6; } -if test "$HAVE_PROTO_BSDSOCKET_H" = "1"; then - if test "x$OPT_AMISSL" != xno; then - ssl_msg= - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - #include - #include - -int main (void) -{ - - #if defined(AMISSL_CURRENT_VERSION) && (AMISSL_CURRENT_VERSION >= AMISSL_V303) && \ - defined(OPENSSL_VERSION_MAJOR) && (OPENSSL_VERSION_MAJOR >= 3) && \ - defined(PROTO_AMISSL_H) - return 0; - #else - #error not AmiSSL v5 / OpenSSL 3 - #endif - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ssl_msg="AmiSSL" - test amissl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes - AMISSL_ENABLED=1 - OPENSSL_ENABLED=1 - # Use AmiSSL's built-in ca bundle - check_for_ca_bundle=1 - with_ca_fallback=yes - LIBS="-lamisslstubs -lamisslauto $LIBS" - -printf "%s\n" "#define USE_AMISSL 1" >>confdefs.h - - -printf "%s\n" "#define USE_OPENSSL 1" >>confdefs.h - - -printf "%s\n" "#define HAVE_OPENSSL3 1" >>confdefs.h - - ac_fn_c_check_header_compile "$LINENO" "openssl/x509.h" "ac_cv_header_openssl_x509_h" "$ac_includes_default" -if test "x$ac_cv_header_openssl_x509_h" = xyes -then : - printf "%s\n" "#define HAVE_OPENSSL_X509_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "openssl/rsa.h" "ac_cv_header_openssl_rsa_h" "$ac_includes_default" -if test "x$ac_cv_header_openssl_rsa_h" = xyes -then : - printf "%s\n" "#define HAVE_OPENSSL_RSA_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "openssl/crypto.h" "ac_cv_header_openssl_crypto_h" "$ac_includes_default" -if test "x$ac_cv_header_openssl_crypto_h" = xyes -then : - printf "%s\n" "#define HAVE_OPENSSL_CRYPTO_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "openssl/pem.h" "ac_cv_header_openssl_pem_h" "$ac_includes_default" -if test "x$ac_cv_header_openssl_pem_h" = xyes -then : - printf "%s\n" "#define HAVE_OPENSSL_PEM_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "openssl/ssl.h" "ac_cv_header_openssl_ssl_h" "$ac_includes_default" -if test "x$ac_cv_header_openssl_ssl_h" = xyes -then : - printf "%s\n" "#define HAVE_OPENSSL_SSL_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "openssl/err.h" "ac_cv_header_openssl_err_h" "$ac_includes_default" -if test "x$ac_cv_header_openssl_err_h" = xyes -then : - printf "%s\n" "#define HAVE_OPENSSL_ERR_H 1" >>confdefs.h - -fi - - CPPFLAGS="$CPPFLAGS -DOPENSSL_SUPPRESS_DEPRECATED" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - fi -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - -if test "x$OPT_OPENSSL" != xno; then - ssl_msg= - - CLEANLDFLAGS="$LDFLAGS" - CLEANCPPFLAGS="$CPPFLAGS" - CLEANLIBS="$LIBS" - - case $host in - *-*-msys* | *-*-mingw*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gdi32" >&5 -printf %s "checking for gdi32... " >&6; } - my_ac_save_LIBS=$LIBS - LIBS="-lgdi32 $LIBS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include - #include - -int main (void) -{ - - GdiFlush(); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } -else $as_nop - LIBS=$my_ac_save_LIBS - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - ;; - esac - - case "$OPT_OPENSSL" in - yes) - PKGTEST="yes" - PREFIX_OPENSSL= - ;; - *) - PKGTEST="no" - PREFIX_OPENSSL=$OPT_OPENSSL - - OPENSSL_PCDIR="$OPT_OPENSSL/lib/pkgconfig" - if test -f "$OPENSSL_PCDIR/openssl.pc"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: PKG_CONFIG_LIBDIR will be set to \"$OPENSSL_PCDIR\"" >&5 -printf "%s\n" "$as_me: PKG_CONFIG_LIBDIR will be set to \"$OPENSSL_PCDIR\"" >&6;} - PKGTEST="yes" - fi - - if test "$PKGTEST" != "yes"; then - # try lib64 instead - OPENSSL_PCDIR="$OPT_OPENSSL/lib64/pkgconfig" - if test -f "$OPENSSL_PCDIR/openssl.pc"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: PKG_CONFIG_LIBDIR will be set to \"$OPENSSL_PCDIR\"" >&5 -printf "%s\n" "$as_me: PKG_CONFIG_LIBDIR will be set to \"$OPENSSL_PCDIR\"" >&6;} - PKGTEST="yes" - fi - fi - - if test "$PKGTEST" != "yes"; then - if test ! -f "$PREFIX_OPENSSL/include/openssl/ssl.h"; then - as_fn_error $? "$PREFIX_OPENSSL is a bad --with-openssl prefix!" "$LINENO" 5 - fi - fi - - LIB_OPENSSL="$PREFIX_OPENSSL/lib$libsuff" - if test "$PREFIX_OPENSSL" != "/usr" ; then - SSL_LDFLAGS="-L$LIB_OPENSSL" - SSL_CPPFLAGS="-I$PREFIX_OPENSSL/include" - fi - SSL_CPPFLAGS="$SSL_CPPFLAGS -I$PREFIX_OPENSSL/include/openssl" - ;; - esac - - if test "$PKGTEST" = "yes"; then - - - if test -n "$PKG_CONFIG"; then - PKGCONFIG="$PKG_CONFIG" - else - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKGCONFIG=$ac_cv_path_PKGCONFIG -if test -n "$PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 -printf "%s\n" "$PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKGCONFIG"; then - ac_pt_PKGCONFIG=$PKGCONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $ac_pt_PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG -if test -n "$ac_pt_PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 -printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_PKGCONFIG" = x; then - PKGCONFIG="no" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKGCONFIG=$ac_pt_PKGCONFIG - fi -else - PKGCONFIG="$ac_cv_path_PKGCONFIG" -fi - - fi - - if test "x$PKGCONFIG" != "xno"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for openssl options with pkg-config" >&5 -printf %s "checking for openssl options with pkg-config... " >&6; } - itexists=` - if test -n "$OPENSSL_PCDIR"; then - PKG_CONFIG_LIBDIR="$OPENSSL_PCDIR" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --exists openssl >/dev/null 2>&1 && echo 1` - - if test -z "$itexists"; then - PKGCONFIG="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 -printf "%s\n" "found" >&6; } - fi - fi - - - if test "$PKGCONFIG" != "no" ; then - SSL_LIBS=` - if test -n "$OPENSSL_PCDIR"; then - PKG_CONFIG_LIBDIR="$OPENSSL_PCDIR" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --libs-only-l --libs-only-other openssl 2>/dev/null` - - SSL_LDFLAGS=` - if test -n "$OPENSSL_PCDIR"; then - PKG_CONFIG_LIBDIR="$OPENSSL_PCDIR" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --libs-only-L openssl 2>/dev/null` - - SSL_CPPFLAGS=` - if test -n "$OPENSSL_PCDIR"; then - PKG_CONFIG_LIBDIR="$OPENSSL_PCDIR" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --cflags-only-I openssl 2>/dev/null` - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: SSL_LIBS: \"$SSL_LIBS\"" >&5 -printf "%s\n" "$as_me: pkg-config: SSL_LIBS: \"$SSL_LIBS\"" >&6;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: SSL_LDFLAGS: \"$SSL_LDFLAGS\"" >&5 -printf "%s\n" "$as_me: pkg-config: SSL_LDFLAGS: \"$SSL_LDFLAGS\"" >&6;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: SSL_CPPFLAGS: \"$SSL_CPPFLAGS\"" >&5 -printf "%s\n" "$as_me: pkg-config: SSL_CPPFLAGS: \"$SSL_CPPFLAGS\"" >&6;} - - LIB_OPENSSL=`echo $SSL_LDFLAGS | sed -e 's/^-L//'` - - LIBS="$SSL_LIBS $LIBS" - fi - fi - - CPPFLAGS="$CPPFLAGS $SSL_CPPFLAGS" - LDFLAGS="$LDFLAGS $SSL_LDFLAGS" - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for HMAC_Update in -lcrypto" >&5 -printf %s "checking for HMAC_Update in -lcrypto... " >&6; } -if test ${ac_cv_lib_crypto_HMAC_Update+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lcrypto $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char HMAC_Update (); -int main (void) -{ -return HMAC_Update (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_crypto_HMAC_Update=yes -else $as_nop - ac_cv_lib_crypto_HMAC_Update=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_HMAC_Update" >&5 -printf "%s\n" "$ac_cv_lib_crypto_HMAC_Update" >&6; } -if test "x$ac_cv_lib_crypto_HMAC_Update" = xyes -then : - - HAVECRYPTO="yes" - LIBS="-lcrypto $LIBS" - -else $as_nop - - if test -n "$LIB_OPENSSL" ; then - LDFLAGS="$CLEANLDFLAGS -L$LIB_OPENSSL" - fi - if test "$PKGCONFIG" = "no" -a -n "$PREFIX_OPENSSL" ; then - # only set this if pkg-config wasn't used - CPPFLAGS="$CLEANCPPFLAGS -I$PREFIX_OPENSSL/include/openssl -I$PREFIX_OPENSSL/include" - fi - # Linking previously failed, try extra paths from --with-openssl or - # pkg-config. Use a different function name to avoid reusing the earlier - # cached result. - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for HMAC_Init_ex in -lcrypto" >&5 -printf %s "checking for HMAC_Init_ex in -lcrypto... " >&6; } -if test ${ac_cv_lib_crypto_HMAC_Init_ex+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lcrypto $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char HMAC_Init_ex (); -int main (void) -{ -return HMAC_Init_ex (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_crypto_HMAC_Init_ex=yes -else $as_nop - ac_cv_lib_crypto_HMAC_Init_ex=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_HMAC_Init_ex" >&5 -printf "%s\n" "$ac_cv_lib_crypto_HMAC_Init_ex" >&6; } -if test "x$ac_cv_lib_crypto_HMAC_Init_ex" = xyes -then : - - HAVECRYPTO="yes" - LIBS="-lcrypto $LIBS" -else $as_nop - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking OpenSSL linking with -ldl" >&5 -printf %s "checking OpenSSL linking with -ldl... " >&6; } - LIBS="-lcrypto $CLEANLIBS -ldl" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include - -int main (void) -{ - - ERR_clear_error(); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - HAVECRYPTO="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking OpenSSL linking with -ldl and -lpthread" >&5 -printf %s "checking OpenSSL linking with -ldl and -lpthread... " >&6; } - LIBS="-lcrypto $CLEANLIBS -ldl -lpthread" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - #include - -int main (void) -{ - - ERR_clear_error(); - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - HAVECRYPTO="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - LDFLAGS="$CLEANLDFLAGS" - CPPFLAGS="$CLEANCPPFLAGS" - LIBS="$CLEANLIBS" - - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - - -fi - - -fi - - - if test X"$HAVECRYPTO" = X"yes"; then - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SSL_connect in -lssl" >&5 -printf %s "checking for SSL_connect in -lssl... " >&6; } -if test ${ac_cv_lib_ssl_SSL_connect+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lssl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char SSL_connect (); -int main (void) -{ -return SSL_connect (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_ssl_SSL_connect=yes -else $as_nop - ac_cv_lib_ssl_SSL_connect=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ssl_SSL_connect" >&5 -printf "%s\n" "$ac_cv_lib_ssl_SSL_connect" >&6; } -if test "x$ac_cv_lib_ssl_SSL_connect" = xyes -then : - printf "%s\n" "#define HAVE_LIBSSL 1" >>confdefs.h - - LIBS="-lssl $LIBS" - -fi - - - if test "$ac_cv_lib_ssl_SSL_connect" != yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ssl with RSAglue/rsaref libs in use" >&5 -printf %s "checking for ssl with RSAglue/rsaref libs in use... " >&6; }; - OLIBS=$LIBS - LIBS="-lRSAglue -lrsaref $LIBS" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SSL_connect in -lssl" >&5 -printf %s "checking for SSL_connect in -lssl... " >&6; } -if test ${ac_cv_lib_ssl_SSL_connect+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lssl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char SSL_connect (); -int main (void) -{ -return SSL_connect (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_ssl_SSL_connect=yes -else $as_nop - ac_cv_lib_ssl_SSL_connect=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ssl_SSL_connect" >&5 -printf "%s\n" "$ac_cv_lib_ssl_SSL_connect" >&6; } -if test "x$ac_cv_lib_ssl_SSL_connect" = xyes -then : - printf "%s\n" "#define HAVE_LIBSSL 1" >>confdefs.h - - LIBS="-lssl $LIBS" - -fi - - if test "$ac_cv_lib_ssl_SSL_connect" != yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - LIBS=$OLIBS - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - fi - - else - - for ac_header in openssl/x509.h openssl/rsa.h openssl/crypto.h openssl/pem.h openssl/ssl.h openssl/err.h -do : - as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes" -then : - cat >>confdefs.h <<_ACEOF -#define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - ssl_msg="OpenSSL" - test openssl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes - OPENSSL_ENABLED=1 - -printf "%s\n" "#define USE_OPENSSL 1" >>confdefs.h - -fi - -done - - if test $ac_cv_header_openssl_x509_h = no; then - ac_fn_c_check_header_compile "$LINENO" "x509.h" "ac_cv_header_x509_h" "$ac_includes_default" -if test "x$ac_cv_header_x509_h" = xyes -then : - printf "%s\n" "#define HAVE_X509_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "rsa.h" "ac_cv_header_rsa_h" "$ac_includes_default" -if test "x$ac_cv_header_rsa_h" = xyes -then : - printf "%s\n" "#define HAVE_RSA_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "crypto.h" "ac_cv_header_crypto_h" "$ac_includes_default" -if test "x$ac_cv_header_crypto_h" = xyes -then : - printf "%s\n" "#define HAVE_CRYPTO_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "pem.h" "ac_cv_header_pem_h" "$ac_includes_default" -if test "x$ac_cv_header_pem_h" = xyes -then : - printf "%s\n" "#define HAVE_PEM_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "ssl.h" "ac_cv_header_ssl_h" "$ac_includes_default" -if test "x$ac_cv_header_ssl_h" = xyes -then : - printf "%s\n" "#define HAVE_SSL_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "err.h" "ac_cv_header_err_h" "$ac_includes_default" -if test "x$ac_cv_header_err_h" = xyes -then : - printf "%s\n" "#define HAVE_ERR_H 1" >>confdefs.h - -fi - - - if test $ac_cv_header_x509_h = yes && - test $ac_cv_header_crypto_h = yes && - test $ac_cv_header_ssl_h = yes; then - ssl_msg="OpenSSL" - OPENSSL_ENABLED=1 - fi - fi - fi - - if test X"$OPENSSL_ENABLED" != X"1"; then - LIBS="$CLEANLIBS" - fi - - if test X"$OPT_OPENSSL" != Xoff && - test "$OPENSSL_ENABLED" != "1"; then - as_fn_error $? "OpenSSL libs and/or directories were not found where specified!" "$LINENO" 5 - fi - fi - - if test X"$OPENSSL_ENABLED" = X"1"; then - - ac_fn_c_check_func "$LINENO" "RAND_egd" "ac_cv_func_RAND_egd" -if test "x$ac_cv_func_RAND_egd" = xyes -then : - printf "%s\n" "#define HAVE_RAND_EGD 1" >>confdefs.h - -fi - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BoringSSL" >&5 -printf %s "checking for BoringSSL... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - #include - -int main (void) -{ - - #ifndef OPENSSL_IS_BORINGSSL - #error not boringssl - #endif - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_BORINGSSL 1" >>confdefs.h - - ssl_msg="BoringSSL" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libressl" >&5 -printf %s "checking for libressl... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#include - -int main (void) -{ - - int dummy = LIBRESSL_VERSION_NUMBER; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_LIBRESSL 1" >>confdefs.h - - ssl_msg="libressl" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for OpenSSL >= v3" >&5 -printf %s "checking for OpenSSL >= v3... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#include - -int main (void) -{ - - #if defined(OPENSSL_VERSION_MAJOR) && (OPENSSL_VERSION_MAJOR >= 3) - return 0; - #else - #error older than 3 - #endif - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_OPENSSL3 1" >>confdefs.h - - CPPFLAGS="$CPPFLAGS -DOPENSSL_SUPPRESS_DEPRECATED" - ssl_msg="OpenSSL v3+" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - - if test "$OPENSSL_ENABLED" = "1"; then - if test -n "$LIB_OPENSSL"; then - if test "x$cross_compiling" != "xyes"; then - CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$LIB_OPENSSL" - export CURL_LIBRARY_PATH - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $LIB_OPENSSL to CURL_LIBRARY_PATH" >&5 -printf "%s\n" "$as_me: Added $LIB_OPENSSL to CURL_LIBRARY_PATH" >&6;} - fi - fi - check_for_ca_bundle=1 - fi - - test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg" -fi - -if test X"$OPT_OPENSSL" != Xno && - test "$OPENSSL_ENABLED" != "1"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: OPT_OPENSSL: $OPT_OPENSSL" >&5 -printf "%s\n" "$as_me: OPT_OPENSSL: $OPT_OPENSSL" >&6;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: OPENSSL_ENABLED: $OPENSSL_ENABLED" >&5 -printf "%s\n" "$as_me: OPENSSL_ENABLED: $OPENSSL_ENABLED" >&6;} - as_fn_error $? "--with-openssl was given but OpenSSL could not be detected" "$LINENO" 5 -fi - - -if test X"$OPENSSL_ENABLED" = X"1"; then - -# Check whether --with-egd-socket was given. -if test ${with_egd_socket+y} -then : - withval=$with_egd_socket; EGD_SOCKET="$withval" - -fi - - if test -n "$EGD_SOCKET" ; then - -printf "%s\n" "#define EGD_SOCKET \"$EGD_SOCKET\"" >>confdefs.h - - fi - - -# Check whether --with-random was given. -if test ${with_random+y} -then : - withval=$with_random; RANDOM_FILE="$withval" -else $as_nop - - if test x$cross_compiling != xyes; then - as_ac_File=`printf "%s\n" "ac_cv_file_"/dev/urandom"" | $as_tr_sh` -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for \"/dev/urandom\"" >&5 -printf %s "checking for \"/dev/urandom\"... " >&6; } -if eval test \${$as_ac_File+y} -then : - printf %s "(cached) " >&6 -else $as_nop - test "$cross_compiling" = yes && - as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 -if test -r ""/dev/urandom""; then - eval "$as_ac_File=yes" -else - eval "$as_ac_File=no" -fi -fi -eval ac_res=\$$as_ac_File - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } -if eval test \"x\$"$as_ac_File"\" = x"yes" -then : - RANDOM_FILE="/dev/urandom" -fi - - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: skipped the /dev/urandom detection when cross-compiling" >&5 -printf "%s\n" "$as_me: WARNING: skipped the /dev/urandom detection when cross-compiling" >&2;} - fi - - -fi - - if test -n "$RANDOM_FILE" && test X"$RANDOM_FILE" != Xno ; then - - -printf "%s\n" "#define RANDOM_FILE \"$RANDOM_FILE\"" >>confdefs.h - - fi -fi - -if test "$OPENSSL_ENABLED" = "1"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SRP support in OpenSSL" >&5 -printf %s "checking for SRP support in OpenSSL... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#include - -int main (void) -{ - - SSL_CTX_set_srp_username(NULL, ""); - SSL_CTX_set_srp_password(NULL, ""); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_OPENSSL_SRP 1" >>confdefs.h - - HAVE_OPENSSL_SRP=1 - - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -fi - -if test X"$OPENSSL_ENABLED" = X"1"; then -# Check whether --enable-openssl-auto-load-config was given. -if test ${enable_openssl_auto_load_config+y} -then : - enableval=$enable_openssl_auto_load_config; if test X"$enableval" = X"no"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: automatic loading of OpenSSL configuration disabled" >&5 -printf "%s\n" "$as_me: automatic loading of OpenSSL configuration disabled" >&6;} - -printf "%s\n" "#define CURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG 1" >>confdefs.h - - fi - -fi - -fi - - - -if test "x$OPT_GNUTLS" != xno; then - ssl_msg= - - if test X"$OPT_GNUTLS" != Xno; then - - addld="" - addlib="" - gtlslib="" - version="" - addcflags="" - - if test "x$OPT_GNUTLS" = "xyes"; then - - if test -n "$PKG_CONFIG"; then - PKGCONFIG="$PKG_CONFIG" - else - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKGCONFIG=$ac_cv_path_PKGCONFIG -if test -n "$PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 -printf "%s\n" "$PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKGCONFIG"; then - ac_pt_PKGCONFIG=$PKGCONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $ac_pt_PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG -if test -n "$ac_pt_PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 -printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_PKGCONFIG" = x; then - PKGCONFIG="no" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKGCONFIG=$ac_pt_PKGCONFIG - fi -else - PKGCONFIG="$ac_cv_path_PKGCONFIG" -fi - - fi - - if test "x$PKGCONFIG" != "xno"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gnutls options with pkg-config" >&5 -printf %s "checking for gnutls options with pkg-config... " >&6; } - itexists=` - if test -n ""; then - PKG_CONFIG_LIBDIR="" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --exists gnutls >/dev/null 2>&1 && echo 1` - - if test -z "$itexists"; then - PKGCONFIG="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 -printf "%s\n" "found" >&6; } - fi - fi - - - if test "$PKGCONFIG" != "no" ; then - addlib=`$PKGCONFIG --libs-only-l gnutls` - addld=`$PKGCONFIG --libs-only-L gnutls` - addcflags=`$PKGCONFIG --cflags-only-I gnutls` - version=`$PKGCONFIG --modversion gnutls` - gtlslib=`echo $addld | $SED -e 's/^-L//'` - else - check=`libgnutls-config --version 2>/dev/null` - if test -n "$check"; then - addlib=`libgnutls-config --libs` - addcflags=`libgnutls-config --cflags` - version=`libgnutls-config --version` - gtlslib=`libgnutls-config --prefix`/lib$libsuff - fi - fi - else - cfg=$OPT_GNUTLS/bin/libgnutls-config - check=`$cfg --version 2>/dev/null` - if test -n "$check"; then - addlib=`$cfg --libs` - addcflags=`$cfg --cflags` - version=`$cfg --version` - gtlslib=`$cfg --prefix`/lib$libsuff - else - addlib=-lgnutls - addld=-L$OPT_GNUTLS/lib$libsuff - addcflags=-I$OPT_GNUTLS/include - version="" # we just don't know - gtlslib=$OPT_GNUTLS/lib$libsuff - fi - fi - - if test -z "$version"; then - version="unknown" - fi - - if test -n "$addlib"; then - - CLEANLIBS="$LIBS" - CLEANCPPFLAGS="$CPPFLAGS" - CLEANLDFLAGS="$LDFLAGS" - - LIBS="$addlib $LIBS" - LDFLAGS="$LDFLAGS $addld" - if test "$addcflags" != "-I/usr/include"; then - CPPFLAGS="$CPPFLAGS $addcflags" - fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gnutls_x509_crt_get_dn2 in -lgnutls" >&5 -printf %s "checking for gnutls_x509_crt_get_dn2 in -lgnutls... " >&6; } -if test ${ac_cv_lib_gnutls_gnutls_x509_crt_get_dn2+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lgnutls $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char gnutls_x509_crt_get_dn2 (); -int main (void) -{ -return gnutls_x509_crt_get_dn2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_gnutls_gnutls_x509_crt_get_dn2=yes -else $as_nop - ac_cv_lib_gnutls_gnutls_x509_crt_get_dn2=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gnutls_gnutls_x509_crt_get_dn2" >&5 -printf "%s\n" "$ac_cv_lib_gnutls_gnutls_x509_crt_get_dn2" >&6; } -if test "x$ac_cv_lib_gnutls_gnutls_x509_crt_get_dn2" = xyes -then : - - -printf "%s\n" "#define USE_GNUTLS 1" >>confdefs.h - - USE_GNUTLS=1 - - GNUTLS_ENABLED=1 - USE_GNUTLS="yes" - ssl_msg="GnuTLS" - test gnutls != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes - -else $as_nop - - LIBS="$CLEANLIBS" - CPPFLAGS="$CLEANCPPFLAGS" - -fi - - - if test "x$USE_GNUTLS" = "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: detected GnuTLS version $version" >&5 -printf "%s\n" "$as_me: detected GnuTLS version $version" >&6;} - check_for_ca_bundle=1 - if test -n "$gtlslib"; then - if test "x$cross_compiling" != "xyes"; then - CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$gtlslib" - export CURL_LIBRARY_PATH - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $gtlslib to CURL_LIBRARY_PATH" >&5 -printf "%s\n" "$as_me: Added $gtlslib to CURL_LIBRARY_PATH" >&6;} - fi - fi - fi - - fi - - fi - test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg" -fi - - -if test "$GNUTLS_ENABLED" = "1"; then - USE_GNUTLS_NETTLE= - # First check if we can detect either crypto library via transitive linking - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for nettle_MD5Init in -lgnutls" >&5 -printf %s "checking for nettle_MD5Init in -lgnutls... " >&6; } -if test ${ac_cv_lib_gnutls_nettle_MD5Init+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lgnutls $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char nettle_MD5Init (); -int main (void) -{ -return nettle_MD5Init (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_gnutls_nettle_MD5Init=yes -else $as_nop - ac_cv_lib_gnutls_nettle_MD5Init=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gnutls_nettle_MD5Init" >&5 -printf "%s\n" "$ac_cv_lib_gnutls_nettle_MD5Init" >&6; } -if test "x$ac_cv_lib_gnutls_nettle_MD5Init" = xyes -then : - USE_GNUTLS_NETTLE=1 -fi - - - # If not, try linking directly to both of them to see if they are available - if test "$USE_GNUTLS_NETTLE" = ""; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for nettle_MD5Init in -lnettle" >&5 -printf %s "checking for nettle_MD5Init in -lnettle... " >&6; } -if test ${ac_cv_lib_nettle_nettle_MD5Init+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lnettle $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char nettle_MD5Init (); -int main (void) -{ -return nettle_MD5Init (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_nettle_nettle_MD5Init=yes -else $as_nop - ac_cv_lib_nettle_nettle_MD5Init=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nettle_nettle_MD5Init" >&5 -printf "%s\n" "$ac_cv_lib_nettle_nettle_MD5Init" >&6; } -if test "x$ac_cv_lib_nettle_nettle_MD5Init" = xyes -then : - USE_GNUTLS_NETTLE=1 -fi - - fi - if test "$USE_GNUTLS_NETTLE" = ""; then - as_fn_error $? "GnuTLS found, but nettle was not found" "$LINENO" 5 - fi - LIBS="-lnettle $LIBS" -fi - -if test "$GNUTLS_ENABLED" = "1"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gnutls_srp_verifier in -lgnutls" >&5 -printf %s "checking for gnutls_srp_verifier in -lgnutls... " >&6; } -if test ${ac_cv_lib_gnutls_gnutls_srp_verifier+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lgnutls $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char gnutls_srp_verifier (); -int main (void) -{ -return gnutls_srp_verifier (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_gnutls_gnutls_srp_verifier=yes -else $as_nop - ac_cv_lib_gnutls_gnutls_srp_verifier=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gnutls_gnutls_srp_verifier" >&5 -printf "%s\n" "$ac_cv_lib_gnutls_gnutls_srp_verifier" >&6; } -if test "x$ac_cv_lib_gnutls_gnutls_srp_verifier" = xyes -then : - - -printf "%s\n" "#define HAVE_GNUTLS_SRP 1" >>confdefs.h - - HAVE_GNUTLS_SRP=1 - - -fi - -fi - - - - -if test "x$OPT_MBEDTLS" != xno; then - _cppflags=$CPPFLAGS - _ldflags=$LDFLAGS - ssl_msg= - - if test X"$OPT_MBEDTLS" != Xno; then - - if test "$OPT_MBEDTLS" = "yes"; then - OPT_MBEDTLS="" - fi - - if test -z "$OPT_MBEDTLS" ; then - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mbedtls_havege_init in -lmbedtls" >&5 -printf %s "checking for mbedtls_havege_init in -lmbedtls... " >&6; } -if test ${ac_cv_lib_mbedtls_mbedtls_havege_init+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lmbedtls -lmbedx509 -lmbedcrypto $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char mbedtls_havege_init (); -int main (void) -{ -return mbedtls_havege_init (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_mbedtls_mbedtls_havege_init=yes -else $as_nop - ac_cv_lib_mbedtls_mbedtls_havege_init=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mbedtls_mbedtls_havege_init" >&5 -printf "%s\n" "$ac_cv_lib_mbedtls_mbedtls_havege_init" >&6; } -if test "x$ac_cv_lib_mbedtls_mbedtls_havege_init" = xyes -then : - - -printf "%s\n" "#define USE_MBEDTLS 1" >>confdefs.h - - USE_MBEDTLS=1 - - MBEDTLS_ENABLED=1 - USE_MBEDTLS="yes" - ssl_msg="mbedTLS" - test mbedtls != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes - -fi - - fi - - addld="" - addlib="" - addcflags="" - mbedtlslib="" - - if test "x$USE_MBEDTLS" != "xyes"; then - addld=-L$OPT_MBEDTLS/lib$libsuff - addcflags=-I$OPT_MBEDTLS/include - mbedtlslib=$OPT_MBEDTLS/lib$libsuff - - LDFLAGS="$LDFLAGS $addld" - if test "$addcflags" != "-I/usr/include"; then - CPPFLAGS="$CPPFLAGS $addcflags" - fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mbedtls_ssl_init in -lmbedtls" >&5 -printf %s "checking for mbedtls_ssl_init in -lmbedtls... " >&6; } -if test ${ac_cv_lib_mbedtls_mbedtls_ssl_init+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lmbedtls -lmbedx509 -lmbedcrypto $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char mbedtls_ssl_init (); -int main (void) -{ -return mbedtls_ssl_init (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_mbedtls_mbedtls_ssl_init=yes -else $as_nop - ac_cv_lib_mbedtls_mbedtls_ssl_init=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mbedtls_mbedtls_ssl_init" >&5 -printf "%s\n" "$ac_cv_lib_mbedtls_mbedtls_ssl_init" >&6; } -if test "x$ac_cv_lib_mbedtls_mbedtls_ssl_init" = xyes -then : - - -printf "%s\n" "#define USE_MBEDTLS 1" >>confdefs.h - - USE_MBEDTLS=1 - - MBEDTLS_ENABLED=1 - USE_MBEDTLS="yes" - ssl_msg="mbedTLS" - test mbedtls != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes - -else $as_nop - - CPPFLAGS=$_cppflags - LDFLAGS=$_ldflags - -fi - - fi - - if test "x$USE_MBEDTLS" = "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: detected mbedTLS" >&5 -printf "%s\n" "$as_me: detected mbedTLS" >&6;} - check_for_ca_bundle=1 - - LIBS="-lmbedtls -lmbedx509 -lmbedcrypto $LIBS" - - if test -n "$mbedtlslib"; then - if test "x$cross_compiling" != "xyes"; then - CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$mbedtlslib" - export CURL_LIBRARY_PATH - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $mbedtlslib to CURL_LIBRARY_PATH" >&5 -printf "%s\n" "$as_me: Added $mbedtlslib to CURL_LIBRARY_PATH" >&6;} - fi - fi - fi - - fi - test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg" -fi - - - - -case "$OPT_WOLFSSL" in - yes|no) - wolfpkg="" - ;; - *) - wolfpkg="$withval/lib/pkgconfig" - ;; -esac - -if test "x$OPT_WOLFSSL" != xno; then - _cppflags=$CPPFLAGS - _ldflags=$LDFLAGS - - ssl_msg= - - if test X"$OPT_WOLFSSL" != Xno; then - - if test "$OPT_WOLFSSL" = "yes"; then - OPT_WOLFSSL="" - fi - - - if test -n "$PKG_CONFIG"; then - PKGCONFIG="$PKG_CONFIG" - else - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKGCONFIG=$ac_cv_path_PKGCONFIG -if test -n "$PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 -printf "%s\n" "$PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKGCONFIG"; then - ac_pt_PKGCONFIG=$PKGCONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $ac_pt_PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG -if test -n "$ac_pt_PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 -printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_PKGCONFIG" = x; then - PKGCONFIG="no" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKGCONFIG=$ac_pt_PKGCONFIG - fi -else - PKGCONFIG="$ac_cv_path_PKGCONFIG" -fi - - fi - - if test "x$PKGCONFIG" != "xno"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for wolfssl options with pkg-config" >&5 -printf %s "checking for wolfssl options with pkg-config... " >&6; } - itexists=` - if test -n "$wolfpkg"; then - PKG_CONFIG_LIBDIR="$wolfpkg" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --exists wolfssl >/dev/null 2>&1 && echo 1` - - if test -z "$itexists"; then - PKGCONFIG="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 -printf "%s\n" "found" >&6; } - fi - fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Check dir $wolfpkg" >&5 -printf "%s\n" "$as_me: Check dir $wolfpkg" >&6;} - - addld="" - addlib="" - addcflags="" - if test "$PKGCONFIG" != "no" ; then - addlib=` - if test -n "$wolfpkg"; then - PKG_CONFIG_LIBDIR="$wolfpkg" - export PKG_CONFIG_LIBDIR - fi - - $PKGCONFIG --libs-only-l wolfssl` - addld=` - if test -n "$wolfpkg"; then - PKG_CONFIG_LIBDIR="$wolfpkg" - export PKG_CONFIG_LIBDIR - fi - - $PKGCONFIG --libs-only-L wolfssl` - addcflags=` - if test -n "$wolfpkg"; then - PKG_CONFIG_LIBDIR="$wolfpkg" - export PKG_CONFIG_LIBDIR - fi - - $PKGCONFIG --cflags-only-I wolfssl` - version=` - if test -n "$wolfpkg"; then - PKG_CONFIG_LIBDIR="$wolfpkg" - export PKG_CONFIG_LIBDIR - fi - - $PKGCONFIG --modversion wolfssl` - wolfssllibpath=`echo $addld | $SED -e 's/^-L//'` - else - addlib=-lwolfssl - if test -n "$OPT_WOLFSSL"; then - addld=-L$OPT_WOLFSSL/lib$libsuff - addcflags=-I$OPT_WOLFSSL/include - wolfssllibpath=$OPT_WOLFSSL/lib$libsuff - fi - fi - - if test "x$USE_WOLFSSL" != "xyes"; then - - LDFLAGS="$LDFLAGS $addld" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Add $addld to LDFLAGS" >&5 -printf "%s\n" "$as_me: Add $addld to LDFLAGS" >&6;} - if test "$addcflags" != "-I/usr/include"; then - CPPFLAGS="$CPPFLAGS $addcflags" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Add $addcflags to CPPFLAGS" >&5 -printf "%s\n" "$as_me: Add $addcflags to CPPFLAGS" >&6;} - fi - - my_ac_save_LIBS="$LIBS" - LIBS="$addlib $LIBS" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Add $addlib to LIBS" >&5 -printf "%s\n" "$as_me: Add $addlib to LIBS" >&6;} - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for wolfSSL_Init in -lwolfssl" >&5 -printf %s "checking for wolfSSL_Init in -lwolfssl... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -/* These aren't needed for detection and confuse WolfSSL. - They are set up properly later if it is detected. */ -#undef SIZEOF_LONG -#undef SIZEOF_LONG_LONG -#include -#include - -int main (void) -{ - - return wolfSSL_Init(); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define USE_WOLFSSL 1" >>confdefs.h - - USE_WOLFSSL=1 - - WOLFSSL_ENABLED=1 - USE_WOLFSSL="yes" - ssl_msg="WolfSSL" - test wolfssl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - CPPFLAGS=$_cppflags - LDFLAGS=$_ldflags - wolfssllibpath="" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - LIBS="$my_ac_save_LIBS" - fi - - if test "x$USE_WOLFSSL" = "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: detected wolfSSL" >&5 -printf "%s\n" "$as_me: detected wolfSSL" >&6;} - check_for_ca_bundle=1 - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5 -printf %s "checking size of long long... " >&6; } - r=0 - for typesize in 8 4 2 16 1; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include - - -int main (void) -{ -switch(0) { - case 0: - case (sizeof(long long) == $typesize):; - } - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - r=$typesize -else $as_nop - - r=0 -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - if test $r -gt 0; then - break; - fi - done - if test $r -eq 0; then - as_fn_error $? "Failed to find size of long long" "$LINENO" 5 - fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $r" >&5 -printf "%s\n" "$r" >&6; } - tname=$(echo "ac_cv_sizeof_long long" | tr A-Z a-z | tr " " "_") - eval "$tname=$r" - - -printf "%s\n" "#define SIZEOF_LONG_LONG $r" >>confdefs.h - - - - - LIBS="$addlib -lm $LIBS" - - ac_fn_c_check_func "$LINENO" "wolfSSL_get_peer_certificate" "ac_cv_func_wolfSSL_get_peer_certificate" -if test "x$ac_cv_func_wolfSSL_get_peer_certificate" = xyes -then : - printf "%s\n" "#define HAVE_WOLFSSL_GET_PEER_CERTIFICATE 1" >>confdefs.h - -fi -ac_fn_c_check_func "$LINENO" "wolfSSL_UseALPN" "ac_cv_func_wolfSSL_UseALPN" -if test "x$ac_cv_func_wolfSSL_UseALPN" = xyes -then : - printf "%s\n" "#define HAVE_WOLFSSL_USEALPN 1" >>confdefs.h - -fi - - - ac_fn_c_check_func "$LINENO" "wolfSSL_DES_ecb_encrypt" "ac_cv_func_wolfSSL_DES_ecb_encrypt" -if test "x$ac_cv_func_wolfSSL_DES_ecb_encrypt" = xyes -then : - - -printf "%s\n" "#define HAVE_WOLFSSL_DES_ECB_ENCRYPT 1" >>confdefs.h - - WOLFSSL_NTLM=1 - - -fi - - - if test -n "$wolfssllibpath"; then - if test "x$cross_compiling" != "xyes"; then - CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$wolfssllibpath" - export CURL_LIBRARY_PATH - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $wolfssllibpath to CURL_LIBRARY_PATH" >&5 -printf "%s\n" "$as_me: Added $wolfssllibpath to CURL_LIBRARY_PATH" >&6;} - fi - fi - - fi - - fi - test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg" -fi - - - - -if test "x$OPT_BEARSSL" != xno; then - _cppflags=$CPPFLAGS - _ldflags=$LDFLAGS - ssl_msg= - - if test X"$OPT_BEARSSL" != Xno; then - - if test "$OPT_BEARSSL" = "yes"; then - OPT_BEARSSL="" - fi - - if test -z "$OPT_BEARSSL" ; then - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for br_ssl_client_init_full in -lbearssl" >&5 -printf %s "checking for br_ssl_client_init_full in -lbearssl... " >&6; } -if test ${ac_cv_lib_bearssl_br_ssl_client_init_full+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lbearssl -lbearssl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char br_ssl_client_init_full (); -int main (void) -{ -return br_ssl_client_init_full (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_bearssl_br_ssl_client_init_full=yes -else $as_nop - ac_cv_lib_bearssl_br_ssl_client_init_full=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bearssl_br_ssl_client_init_full" >&5 -printf "%s\n" "$ac_cv_lib_bearssl_br_ssl_client_init_full" >&6; } -if test "x$ac_cv_lib_bearssl_br_ssl_client_init_full" = xyes -then : - - -printf "%s\n" "#define USE_BEARSSL 1" >>confdefs.h - - USE_BEARSSL=1 - - BEARSSL_ENABLED=1 - USE_BEARSSL="yes" - ssl_msg="BearSSL" - test bearssl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes - -fi - - fi - - addld="" - addlib="" - addcflags="" - bearssllib="" - - if test "x$USE_BEARSSL" != "xyes"; then - addld=-L$OPT_BEARSSL/lib$libsuff - addcflags=-I$OPT_BEARSSL/include - bearssllib=$OPT_BEARSSL/lib$libsuff - - LDFLAGS="$LDFLAGS $addld" - if test "$addcflags" != "-I/usr/include"; then - CPPFLAGS="$CPPFLAGS $addcflags" - fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for br_ssl_client_init_full in -lbearssl" >&5 -printf %s "checking for br_ssl_client_init_full in -lbearssl... " >&6; } -if test ${ac_cv_lib_bearssl_br_ssl_client_init_full+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lbearssl -lbearssl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char br_ssl_client_init_full (); -int main (void) -{ -return br_ssl_client_init_full (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_bearssl_br_ssl_client_init_full=yes -else $as_nop - ac_cv_lib_bearssl_br_ssl_client_init_full=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bearssl_br_ssl_client_init_full" >&5 -printf "%s\n" "$ac_cv_lib_bearssl_br_ssl_client_init_full" >&6; } -if test "x$ac_cv_lib_bearssl_br_ssl_client_init_full" = xyes -then : - - -printf "%s\n" "#define USE_BEARSSL 1" >>confdefs.h - - USE_BEARSSL=1 - - BEARSSL_ENABLED=1 - USE_BEARSSL="yes" - ssl_msg="BearSSL" - test bearssl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes - -else $as_nop - - CPPFLAGS=$_cppflags - LDFLAGS=$_ldflags - -fi - - fi - - if test "x$USE_BEARSSL" = "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: detected BearSSL" >&5 -printf "%s\n" "$as_me: detected BearSSL" >&6;} - check_for_ca_bundle=1 - - LIBS="-lbearssl $LIBS" - - if test -n "$bearssllib"; then - if test "x$cross_compiling" != "xyes"; then - CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$bearssllib" - export CURL_LIBRARY_PATH - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $bearssllib to CURL_LIBRARY_PATH" >&5 -printf "%s\n" "$as_me: Added $bearssllib to CURL_LIBRARY_PATH" >&6;} - fi - fi - fi - - fi - test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg" -fi - - - -if test "x$OPT_RUSTLS" != xno; then - _cppflags=$CPPFLAGS - _ldflags=$LDFLAGS - ssl_msg= - - if test X"$OPT_RUSTLS" != Xno; then - - if test "$OPT_RUSTLS" = "yes"; then - OPT_RUSTLS="" - fi - - if test -z "$OPT_RUSTLS" ; then - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for rustls_client_session_read in -lrustls" >&5 -printf %s "checking for rustls_client_session_read in -lrustls... " >&6; } -if test ${ac_cv_lib_rustls_rustls_client_session_read+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lrustls -lpthread -ldl -lm $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char rustls_client_session_read (); -int main (void) -{ -return rustls_client_session_read (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_rustls_rustls_client_session_read=yes -else $as_nop - ac_cv_lib_rustls_rustls_client_session_read=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rustls_rustls_client_session_read" >&5 -printf "%s\n" "$ac_cv_lib_rustls_rustls_client_session_read" >&6; } -if test "x$ac_cv_lib_rustls_rustls_client_session_read" = xyes -then : - - -printf "%s\n" "#define USE_RUSTLS 1" >>confdefs.h - - USE_RUSTLS=1 - - RUSTLS_ENABLED=1 - USE_RUSTLS="yes" - ssl_msg="rustls" - test rustls != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes - -fi - - fi - - if test "x$USE_RUSTLS" != "xyes"; then - addld=-L$OPT_RUSTLS/lib$libsuff - addcflags=-I$OPT_RUSTLS/include - rustlslib=$OPT_RUSTLS/lib$libsuff - - LDFLAGS="$LDFLAGS $addld" - if test "$addcflags" != "-I/usr/include"; then - CPPFLAGS="$CPPFLAGS $addcflags" - fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for rustls_connection_read in -lrustls" >&5 -printf %s "checking for rustls_connection_read in -lrustls... " >&6; } -if test ${ac_cv_lib_rustls_rustls_connection_read+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lrustls -lpthread -ldl -lm $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char rustls_connection_read (); -int main (void) -{ -return rustls_connection_read (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_rustls_rustls_connection_read=yes -else $as_nop - ac_cv_lib_rustls_rustls_connection_read=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rustls_rustls_connection_read" >&5 -printf "%s\n" "$ac_cv_lib_rustls_rustls_connection_read" >&6; } -if test "x$ac_cv_lib_rustls_rustls_connection_read" = xyes -then : - - -printf "%s\n" "#define USE_RUSTLS 1" >>confdefs.h - - USE_RUSTLS=1 - - RUSTLS_ENABLED=1 - USE_RUSTLS="yes" - ssl_msg="rustls" - test rustls != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes - -else $as_nop - as_fn_error $? "--with-rustls was specified but could not find rustls." "$LINENO" 5 -fi - - fi - - if test "x$USE_RUSTLS" = "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: detected rustls" >&5 -printf "%s\n" "$as_me: detected rustls" >&6;} - check_for_ca_bundle=1 - - LIBS="-lrustls -lpthread -ldl -lm $LIBS" - - if test -n "$rustlslib"; then - if test "x$cross_compiling" != "xyes"; then - CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$rustlslib" - export CURL_LIBRARY_PATH - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $rustlslib to CURL_LIBRARY_PATH" >&5 -printf "%s\n" "$as_me: Added $rustlslib to CURL_LIBRARY_PATH" >&6;} - fi - fi - fi - - fi - test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg" -fi - - -if test "x$OPT_NSS" != xno; then - ssl_msg= - - if test X"$OPT_NSS" != Xno; then - - addld="" - addlib="" - addcflags="" - nssprefix="" - version="" - - if test "x$OPT_NSS" = "xyes"; then - - - if test -n "$PKG_CONFIG"; then - PKGCONFIG="$PKG_CONFIG" - else - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKGCONFIG=$ac_cv_path_PKGCONFIG -if test -n "$PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 -printf "%s\n" "$PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKGCONFIG"; then - ac_pt_PKGCONFIG=$PKGCONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $ac_pt_PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG -if test -n "$ac_pt_PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 -printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_PKGCONFIG" = x; then - PKGCONFIG="no" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKGCONFIG=$ac_pt_PKGCONFIG - fi -else - PKGCONFIG="$ac_cv_path_PKGCONFIG" -fi - - fi - - if test "x$PKGCONFIG" != "xno"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for nss options with pkg-config" >&5 -printf %s "checking for nss options with pkg-config... " >&6; } - itexists=` - if test -n ""; then - PKG_CONFIG_LIBDIR="" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --exists nss >/dev/null 2>&1 && echo 1` - - if test -z "$itexists"; then - PKGCONFIG="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 -printf "%s\n" "found" >&6; } - fi - fi - - - if test "$PKGCONFIG" != "no" ; then - addlib=`$PKGCONFIG --libs nss` - addcflags=`$PKGCONFIG --cflags nss` - version=`$PKGCONFIG --modversion nss` - nssprefix=`$PKGCONFIG --variable=prefix nss` - else - - check=`nss-config --version 2>/dev/null` - if test -n "$check"; then - addlib=`nss-config --libs` - addcflags=`nss-config --cflags` - version=`nss-config --version` - nssprefix=`nss-config --prefix` - else - addlib="-lnss3" - addcflags="" - version="unknown" - fi - fi - else - NSS_PCDIR="$OPT_NSS/lib/pkgconfig" - if test -f "$NSS_PCDIR/nss.pc"; then - - if test -n "$PKG_CONFIG"; then - PKGCONFIG="$PKG_CONFIG" - else - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKGCONFIG=$ac_cv_path_PKGCONFIG -if test -n "$PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 -printf "%s\n" "$PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKGCONFIG"; then - ac_pt_PKGCONFIG=$PKGCONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $ac_pt_PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG -if test -n "$ac_pt_PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 -printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_PKGCONFIG" = x; then - PKGCONFIG="no" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKGCONFIG=$ac_pt_PKGCONFIG - fi -else - PKGCONFIG="$ac_cv_path_PKGCONFIG" -fi - - fi - - if test "x$PKGCONFIG" != "xno"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for nss options with pkg-config" >&5 -printf %s "checking for nss options with pkg-config... " >&6; } - itexists=` - if test -n "$NSS_PCDIR"; then - PKG_CONFIG_LIBDIR="$NSS_PCDIR" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --exists nss >/dev/null 2>&1 && echo 1` - - if test -z "$itexists"; then - PKGCONFIG="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 -printf "%s\n" "found" >&6; } - fi - fi - - if test "$PKGCONFIG" != "no" ; then - addld=` - if test -n "$NSS_PCDIR"; then - PKG_CONFIG_LIBDIR="$NSS_PCDIR" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --libs-only-L nss` - addlib=` - if test -n "$NSS_PCDIR"; then - PKG_CONFIG_LIBDIR="$NSS_PCDIR" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --libs-only-l nss` - addcflags=` - if test -n "$NSS_PCDIR"; then - PKG_CONFIG_LIBDIR="$NSS_PCDIR" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --cflags nss` - version=` - if test -n "$NSS_PCDIR"; then - PKG_CONFIG_LIBDIR="$NSS_PCDIR" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --modversion nss` - nssprefix=` - if test -n "$NSS_PCDIR"; then - PKG_CONFIG_LIBDIR="$NSS_PCDIR" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --variable=prefix nss` - fi - fi - fi - - if test -z "$addlib"; then - # Without pkg-config, we'll kludge in some defaults - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Using hard-wired libraries and compilation flags for NSS." >&5 -printf "%s\n" "$as_me: WARNING: Using hard-wired libraries and compilation flags for NSS." >&2;} - addld="-L$OPT_NSS/lib" - addlib="-lssl3 -lsmime3 -lnss3 -lplds4 -lplc4 -lnspr4" - addcflags="-I$OPT_NSS/include" - version="unknown" - nssprefix=$OPT_NSS - fi - - CLEANLDFLAGS="$LDFLAGS" - CLEANLIBS="$LIBS" - CLEANCPPFLAGS="$CPPFLAGS" - - LDFLAGS="$addld $LDFLAGS" - LIBS="$addlib $LIBS" - if test "$addcflags" != "-I/usr/include"; then - CPPFLAGS="$CPPFLAGS $addcflags" - fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SSL_VersionRangeSet in -lnss3" >&5 -printf %s "checking for SSL_VersionRangeSet in -lnss3... " >&6; } -if test ${ac_cv_lib_nss3_SSL_VersionRangeSet+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lnss3 $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char SSL_VersionRangeSet (); -int main (void) -{ -return SSL_VersionRangeSet (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_nss3_SSL_VersionRangeSet=yes -else $as_nop - ac_cv_lib_nss3_SSL_VersionRangeSet=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nss3_SSL_VersionRangeSet" >&5 -printf "%s\n" "$ac_cv_lib_nss3_SSL_VersionRangeSet" >&6; } -if test "x$ac_cv_lib_nss3_SSL_VersionRangeSet" = xyes -then : - - -printf "%s\n" "#define USE_NSS 1" >>confdefs.h - - USE_NSS=1 - - USE_NSS="yes" - NSS_ENABLED=1 - ssl_msg="NSS" - test nss != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes - -else $as_nop - - LDFLAGS="$CLEANLDFLAGS" - LIBS="$CLEANLIBS" - CPPFLAGS="$CLEANCPPFLAGS" - -fi - - - if test "x$USE_NSS" = "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: detected NSS version $version" >&5 -printf "%s\n" "$as_me: detected NSS version $version" >&6;} - - ac_fn_c_check_func "$LINENO" "PK11_CreateManagedGenericObject" "ac_cv_func_PK11_CreateManagedGenericObject" -if test "x$ac_cv_func_PK11_CreateManagedGenericObject" = xyes -then : - - -printf "%s\n" "#define HAVE_PK11_CREATEMANAGEDGENERICOBJECT 1" >>confdefs.h - - -fi - - - NSS_LIBS=$addlib - - - if test "x$cross_compiling" != "xyes"; then - CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$nssprefix/lib$libsuff" - export CURL_LIBRARY_PATH - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $nssprefix/lib$libsuff to CURL_LIBRARY_PATH" >&5 -printf "%s\n" "$as_me: Added $nssprefix/lib$libsuff to CURL_LIBRARY_PATH" >&6;} - fi - - fi - fi - test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg" -fi - - - -if test "x$USE_WIN32_CRYPTO" = "x1" -o "x$USE_SCHANNEL" = "x1"; then - LIBS="-ladvapi32 -lcrypt32 $LIBS" -fi - -if test "x$curl_cv_native_windows" = "xyes" && - test "x$curl_mingw_original" = "xno"; then - LIBS="-lbcrypt $LIBS" -fi - -case "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$MBEDTLS_ENABLED$WOLFSSL_ENABLED$SCHANNEL_ENABLED$SECURETRANSPORT_ENABLED$BEARSSL_ENABLED$RUSTLS_ENABLED$SSL_DISABLED" -in -x) - as_fn_error $? "TLS not detected, you will not be able to use HTTPS, FTPS, NTLM and more. -Use --with-openssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-nss, --with-schannel, --with-secure-transport, --with-amissl, --with-bearssl or --with-rustls to address this." "$LINENO" 5 - ;; -x1) - # one SSL backend is enabled - - SSL_ENABLED="1" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: built with one SSL backend" >&5 -printf "%s\n" "$as_me: built with one SSL backend" >&6;} - ;; -xD) - # explicitly built without TLS - ;; -*) - # more than one SSL backend is enabled - - SSL_ENABLED="1" - - CURL_WITH_MULTI_SSL="1" - -printf "%s\n" "#define CURL_WITH_MULTI_SSL 1" >>confdefs.h - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: built with multiple SSL backends" >&5 -printf "%s\n" "$as_me: built with multiple SSL backends" >&6;} - ;; -esac - -if test -n "$ssl_backends"; then - curl_ssl_msg="enabled ($ssl_backends)" -fi - -if test no = "$VALID_DEFAULT_SSL_BACKEND" -then - if test -n "$SSL_ENABLED" - then - as_fn_error $? "Default SSL backend $DEFAULT_SSL_BACKEND not enabled!" "$LINENO" 5 - else - as_fn_error $? "Default SSL backend requires SSL!" "$LINENO" 5 - fi -elif test yes = "$VALID_DEFAULT_SSL_BACKEND" -then - -printf "%s\n" "#define CURL_DEFAULT_SSL_BACKEND \"$DEFAULT_SSL_BACKEND\"" >>confdefs.h - -fi - - -if test -n "$check_for_ca_bundle"; then - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking default CA cert bundle/path" >&5 -printf %s "checking default CA cert bundle/path... " >&6; } - - -# Check whether --with-ca-bundle was given. -if test ${with_ca_bundle+y} -then : - withval=$with_ca_bundle; - want_ca="$withval" - if test "x$want_ca" = "xyes"; then - as_fn_error $? "--with-ca-bundle=FILE requires a path to the CA bundle" "$LINENO" 5 - fi - -else $as_nop - want_ca="unset" -fi - - -# Check whether --with-ca-path was given. -if test ${with_ca_path+y} -then : - withval=$with_ca_path; - want_capath="$withval" - if test "x$want_capath" = "xyes"; then - as_fn_error $? "--with-ca-path=DIRECTORY requires a path to the CA path directory" "$LINENO" 5 - fi - -else $as_nop - want_capath="unset" -fi - - - ca_warning=" (warning: certs not found)" - capath_warning=" (warning: certs not found)" - check_capath="" - - if test "x$want_ca" != "xno" -a "x$want_ca" != "xunset" -a \ - "x$want_capath" != "xno" -a "x$want_capath" != "xunset"; then - ca="$want_ca" - capath="$want_capath" - elif test "x$want_ca" != "xno" -a "x$want_ca" != "xunset"; then - ca="$want_ca" - capath="no" - elif test "x$want_capath" != "xno" -a "x$want_capath" != "xunset"; then - if test "x$OPENSSL_ENABLED" != "x1" -a "x$GNUTLS_ENABLED" != "x1" -a "x$MBEDTLS_ENABLED" != "x1"; then - as_fn_error $? "--with-ca-path only works with OpenSSL, GnuTLS or mbedTLS" "$LINENO" 5 - fi - capath="$want_capath" - ca="no" - else - ca="no" - capath="no" - if test "x$cross_compiling" != "xyes"; then - if test "x$want_ca" = "xunset"; then - if test "x$prefix" != xNONE; then - cac="${prefix}/share/curl/curl-ca-bundle.crt" - else - cac="$ac_default_prefix/share/curl/curl-ca-bundle.crt" - fi - - for a in /etc/ssl/certs/ca-certificates.crt \ - /etc/pki/tls/certs/ca-bundle.crt \ - /usr/share/ssl/certs/ca-bundle.crt \ - /usr/local/share/certs/ca-root-nss.crt \ - /etc/ssl/cert.pem \ - "$cac"; do - if test -f "$a"; then - ca="$a" - break - fi - done - fi - if test "x$want_capath" = "xunset" -a "x$ca" = "xno" -a \ - "x$OPENSSL_ENABLED" = "x1"; then - check_capath="/etc/ssl/certs/" - fi - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: skipped the ca-cert path detection when cross-compiling" >&5 -printf "%s\n" "$as_me: WARNING: skipped the ca-cert path detection when cross-compiling" >&2;} - fi - fi - - if test "x$ca" = "xno" || test -f "$ca"; then - ca_warning="" - fi - - if test "x$capath" != "xno"; then - check_capath="$capath" - fi - - if test ! -z "$check_capath"; then - for a in "$check_capath"; do - if test -d "$a" && ls "$a"/[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f].0 >/dev/null 2>/dev/null; then - if test "x$capath" = "xno"; then - capath="$a" - fi - capath_warning="" - break - fi - done - fi - - if test "x$capath" = "xno"; then - capath_warning="" - fi - - if test "x$ca" != "xno"; then - CURL_CA_BUNDLE='"'$ca'"' - -printf "%s\n" "#define CURL_CA_BUNDLE \"$ca\"" >>confdefs.h - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ca" >&5 -printf "%s\n" "$ca" >&6; } - fi - if test "x$capath" != "xno"; then - CURL_CA_PATH="\"$capath\"" - -printf "%s\n" "#define CURL_CA_PATH \"$capath\"" >>confdefs.h - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $capath (capath)" >&5 -printf "%s\n" "$capath (capath)" >&6; } - fi - if test "x$ca" = "xno" && test "x$capath" = "xno"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use builtin CA store of SSL library" >&5 -printf %s "checking whether to use builtin CA store of SSL library... " >&6; } - -# Check whether --with-ca-fallback was given. -if test ${with_ca_fallback+y} -then : - withval=$with_ca_fallback; - if test "x$with_ca_fallback" != "xyes" -a "x$with_ca_fallback" != "xno"; then - as_fn_error $? "--with-ca-fallback only allows yes or no as parameter" "$LINENO" 5 - fi - -else $as_nop - with_ca_fallback="no" -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_ca_fallback" >&5 -printf "%s\n" "$with_ca_fallback" >&6; } - if test "x$with_ca_fallback" = "xyes"; then - if test "x$OPENSSL_ENABLED" != "x1" -a "x$GNUTLS_ENABLED" != "x1"; then - as_fn_error $? "--with-ca-fallback only works with OpenSSL or GnuTLS" "$LINENO" 5 - fi - -printf "%s\n" "#define CURL_CA_FALLBACK 1" >>confdefs.h - - fi - -fi - - - -# Check whether --with-libpsl was given. -if test ${with_libpsl+y} -then : - withval=$with_libpsl; with_libpsl=$withval -else $as_nop - with_libpsl=yes -fi - -if test $with_libpsl != "no"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing psl_builtin" >&5 -printf %s "checking for library containing psl_builtin... " >&6; } -if test ${ac_cv_search_psl_builtin+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char psl_builtin (); -int main (void) -{ -return psl_builtin (); - ; - return 0; -} -_ACEOF -for ac_lib in '' psl -do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO" -then : - ac_cv_search_psl_builtin=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext - if test ${ac_cv_search_psl_builtin+y} -then : - break -fi -done -if test ${ac_cv_search_psl_builtin+y} -then : - -else $as_nop - ac_cv_search_psl_builtin=no -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_psl_builtin" >&5 -printf "%s\n" "$ac_cv_search_psl_builtin" >&6; } -ac_res=$ac_cv_search_psl_builtin -if test "$ac_res" != no -then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - curl_psl_msg="enabled"; - -printf "%s\n" "#define USE_LIBPSL 1" >>confdefs.h - - -else $as_nop - curl_psl_msg="no (libpsl not found)"; - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: libpsl was not found" >&5 -printf "%s\n" "$as_me: WARNING: libpsl was not found" >&2;} - - -fi - -fi - if test "$curl_psl_msg" = "enabled"; then - USE_LIBPSL_TRUE= - USE_LIBPSL_FALSE='#' -else - USE_LIBPSL_TRUE='#' - USE_LIBPSL_FALSE= -fi - - - - - -# Check whether --with-libgsasl was given. -if test ${with_libgsasl+y} -then : - withval=$with_libgsasl; with_libgsasl=$withval -else $as_nop - with_libgsasl=yes -fi - -if test $with_libgsasl != "no"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing gsasl_init" >&5 -printf %s "checking for library containing gsasl_init... " >&6; } -if test ${ac_cv_search_gsasl_init+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char gsasl_init (); -int main (void) -{ -return gsasl_init (); - ; - return 0; -} -_ACEOF -for ac_lib in '' gsasl -do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO" -then : - ac_cv_search_gsasl_init=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext - if test ${ac_cv_search_gsasl_init+y} -then : - break -fi -done -if test ${ac_cv_search_gsasl_init+y} -then : - -else $as_nop - ac_cv_search_gsasl_init=no -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gsasl_init" >&5 -printf "%s\n" "$ac_cv_search_gsasl_init" >&6; } -ac_res=$ac_cv_search_gsasl_init -if test "$ac_res" != no -then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - curl_gsasl_msg="enabled"; - -printf "%s\n" "#define USE_GSASL 1" >>confdefs.h - - -else $as_nop - curl_gsasl_msg="no (libgsasl not found)"; - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: libgsasl was not found" >&5 -printf "%s\n" "$as_me: WARNING: libgsasl was not found" >&2;} - - -fi - -fi - if test "$curl_gsasl_msg" = "enabled"; then - USE_GSASL_TRUE= - USE_GSASL_FALSE='#' -else - USE_GSASL_TRUE='#' - USE_GSASL_FALSE= -fi - - - -# Check whether --with-libmetalink was given. -if test ${with_libmetalink+y} -then : - withval=$with_libmetalink; as_fn_error $? "--with-libmetalink no longer works!" "$LINENO" 5 -fi - - - -OPT_LIBSSH2=off - -# Check whether --with-libssh2 was given. -if test ${with_libssh2+y} -then : - withval=$with_libssh2; OPT_LIBSSH2=$withval -else $as_nop - OPT_LIBSSH2=no -fi - - - -OPT_LIBSSH=off - -# Check whether --with-libssh was given. -if test ${with_libssh+y} -then : - withval=$with_libssh; OPT_LIBSSH=$withval -else $as_nop - OPT_LIBSSH=no -fi - - -OPT_WOLFSSH=off - -# Check whether --with-wolfssh was given. -if test ${with_wolfssh+y} -then : - withval=$with_wolfssh; OPT_WOLFSSH=$withval -else $as_nop - OPT_WOLFSSH=no -fi - - -if test X"$OPT_LIBSSH2" != Xno; then - CLEANLDFLAGS="$LDFLAGS" - CLEANCPPFLAGS="$CPPFLAGS" - CLEANLIBS="$LIBS" - - case "$OPT_LIBSSH2" in - yes) - - if test -n "$PKG_CONFIG"; then - PKGCONFIG="$PKG_CONFIG" - else - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKGCONFIG=$ac_cv_path_PKGCONFIG -if test -n "$PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 -printf "%s\n" "$PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKGCONFIG"; then - ac_pt_PKGCONFIG=$PKGCONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $ac_pt_PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG -if test -n "$ac_pt_PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 -printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_PKGCONFIG" = x; then - PKGCONFIG="no" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKGCONFIG=$ac_pt_PKGCONFIG - fi -else - PKGCONFIG="$ac_cv_path_PKGCONFIG" -fi - - fi - - if test "x$PKGCONFIG" != "xno"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libssh2 options with pkg-config" >&5 -printf %s "checking for libssh2 options with pkg-config... " >&6; } - itexists=` - if test -n ""; then - PKG_CONFIG_LIBDIR="" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --exists libssh2 >/dev/null 2>&1 && echo 1` - - if test -z "$itexists"; then - PKGCONFIG="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 -printf "%s\n" "found" >&6; } - fi - fi - - - if test "$PKGCONFIG" != "no" ; then - LIB_SSH2=`$PKGCONFIG --libs libssh2` - LD_SSH2=`$PKGCONFIG --libs-only-L libssh2` - CPP_SSH2=`$PKGCONFIG --cflags-only-I libssh2` - version=`$PKGCONFIG --modversion libssh2` - DIR_SSH2=`echo $LD_SSH2 | $SED -e 's/^-L//'` - fi - - ;; - off) - ;; - *) - PREFIX_SSH2=$OPT_LIBSSH2 - ;; - esac - - if test -n "$PREFIX_SSH2"; then - LIB_SSH2="-lssh2" - LD_SSH2=-L${PREFIX_SSH2}/lib$libsuff - CPP_SSH2=-I${PREFIX_SSH2}/include - DIR_SSH2=${PREFIX_SSH2}/lib$libsuff - fi - - LDFLAGS="$LDFLAGS $LD_SSH2" - CPPFLAGS="$CPPFLAGS $CPP_SSH2" - LIBS="$LIB_SSH2 $LIBS" - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libssh2_session_block_directions in -lssh2" >&5 -printf %s "checking for libssh2_session_block_directions in -lssh2... " >&6; } -if test ${ac_cv_lib_ssh2_libssh2_session_block_directions+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lssh2 $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char libssh2_session_block_directions (); -int main (void) -{ -return libssh2_session_block_directions (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_ssh2_libssh2_session_block_directions=yes -else $as_nop - ac_cv_lib_ssh2_libssh2_session_block_directions=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ssh2_libssh2_session_block_directions" >&5 -printf "%s\n" "$ac_cv_lib_ssh2_libssh2_session_block_directions" >&6; } -if test "x$ac_cv_lib_ssh2_libssh2_session_block_directions" = xyes -then : - printf "%s\n" "#define HAVE_LIBSSH2 1" >>confdefs.h - - LIBS="-lssh2 $LIBS" - -fi - - - for ac_header in libssh2.h -do : - ac_fn_c_check_header_compile "$LINENO" "libssh2.h" "ac_cv_header_libssh2_h" "$ac_includes_default" -if test "x$ac_cv_header_libssh2_h" = xyes -then : - printf "%s\n" "#define HAVE_LIBSSH2_H 1" >>confdefs.h - curl_ssh_msg="enabled (libSSH2)" - LIBSSH2_ENABLED=1 - -printf "%s\n" "#define USE_LIBSSH2 1" >>confdefs.h - - USE_LIBSSH2=1 - - -fi - -done - - if test X"$OPT_LIBSSH2" != Xoff && - test "$LIBSSH2_ENABLED" != "1"; then - as_fn_error $? "libSSH2 libs and/or directories were not found where specified!" "$LINENO" 5 - fi - - if test "$LIBSSH2_ENABLED" = "1"; then - if test -n "$DIR_SSH2"; then - - if test "x$cross_compiling" != "xyes"; then - CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_SSH2" - export CURL_LIBRARY_PATH - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_SSH2 to CURL_LIBRARY_PATH" >&5 -printf "%s\n" "$as_me: Added $DIR_SSH2 to CURL_LIBRARY_PATH" >&6;} - fi - fi - else - LDFLAGS=$CLEANLDFLAGS - CPPFLAGS=$CLEANCPPFLAGS - LIBS=$CLEANLIBS - fi -elif test X"$OPT_LIBSSH" != Xno; then - CLEANLDFLAGS="$LDFLAGS" - CLEANCPPFLAGS="$CPPFLAGS" - CLEANLIBS="$LIBS" - - case "$OPT_LIBSSH" in - yes) - - if test -n "$PKG_CONFIG"; then - PKGCONFIG="$PKG_CONFIG" - else - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKGCONFIG=$ac_cv_path_PKGCONFIG -if test -n "$PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 -printf "%s\n" "$PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKGCONFIG"; then - ac_pt_PKGCONFIG=$PKGCONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $ac_pt_PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG -if test -n "$ac_pt_PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 -printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_PKGCONFIG" = x; then - PKGCONFIG="no" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKGCONFIG=$ac_pt_PKGCONFIG - fi -else - PKGCONFIG="$ac_cv_path_PKGCONFIG" -fi - - fi - - if test "x$PKGCONFIG" != "xno"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libssh options with pkg-config" >&5 -printf %s "checking for libssh options with pkg-config... " >&6; } - itexists=` - if test -n ""; then - PKG_CONFIG_LIBDIR="" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --exists libssh >/dev/null 2>&1 && echo 1` - - if test -z "$itexists"; then - PKGCONFIG="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 -printf "%s\n" "found" >&6; } - fi - fi - - - if test "$PKGCONFIG" != "no" ; then - LIB_SSH=`$PKGCONFIG --libs-only-l libssh` - LD_SSH=`$PKGCONFIG --libs-only-L libssh` - CPP_SSH=`$PKGCONFIG --cflags-only-I libssh` - version=`$PKGCONFIG --modversion libssh` - DIR_SSH=`echo $LD_SSH | $SED -e 's/^-L//'` - fi - - ;; - off) - ;; - *) - PREFIX_SSH=$OPT_LIBSSH - ;; - esac - - if test -n "$PREFIX_SSH"; then - LIB_SSH="-lssh" - LD_SSH=-L${PREFIX_SSH}/lib$libsuff - CPP_SSH=-I${PREFIX_SSH}/include - DIR_SSH=${PREFIX_SSH}/lib$libsuff - fi - - LDFLAGS="$LDFLAGS $LD_SSH" - CPPFLAGS="$CPPFLAGS $CPP_SSH" - LIBS="$LIB_SSH $LIBS" - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ssh_new in -lssh" >&5 -printf %s "checking for ssh_new in -lssh... " >&6; } -if test ${ac_cv_lib_ssh_ssh_new+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lssh $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char ssh_new (); -int main (void) -{ -return ssh_new (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_ssh_ssh_new=yes -else $as_nop - ac_cv_lib_ssh_ssh_new=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ssh_ssh_new" >&5 -printf "%s\n" "$ac_cv_lib_ssh_ssh_new" >&6; } -if test "x$ac_cv_lib_ssh_ssh_new" = xyes -then : - printf "%s\n" "#define HAVE_LIBSSH 1" >>confdefs.h - - LIBS="-lssh $LIBS" - -fi - - - for ac_header in libssh/libssh.h -do : - ac_fn_c_check_header_compile "$LINENO" "libssh/libssh.h" "ac_cv_header_libssh_libssh_h" "$ac_includes_default" -if test "x$ac_cv_header_libssh_libssh_h" = xyes -then : - printf "%s\n" "#define HAVE_LIBSSH_LIBSSH_H 1" >>confdefs.h - curl_ssh_msg="enabled (libSSH)" - LIBSSH_ENABLED=1 - -printf "%s\n" "#define USE_LIBSSH 1" >>confdefs.h - - USE_LIBSSH=1 - - -fi - -done - - if test X"$OPT_LIBSSH" != Xoff && - test "$LIBSSH_ENABLED" != "1"; then - as_fn_error $? "libSSH libs and/or directories were not found where specified!" "$LINENO" 5 - fi - - if test "$LIBSSH_ENABLED" = "1"; then - if test -n "$DIR_SSH"; then - - if test "x$cross_compiling" != "xyes"; then - CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_SSH" - export CURL_LIBRARY_PATH - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_SSH to CURL_LIBRARY_PATH" >&5 -printf "%s\n" "$as_me: Added $DIR_SSH to CURL_LIBRARY_PATH" >&6;} - fi - fi - else - LDFLAGS=$CLEANLDFLAGS - CPPFLAGS=$CLEANCPPFLAGS - LIBS=$CLEANLIBS - fi -elif test X"$OPT_WOLFSSH" != Xno; then - CLEANLDFLAGS="$LDFLAGS" - CLEANCPPFLAGS="$CPPFLAGS" - CLEANLIBS="$LIBS" - - - if test "$OPT_WOLFSSH" != yes; then - WOLFCONFIG="$OPT_WOLFSSH/bin/wolfssh-config" - LDFLAGS="$LDFLAGS `$WOLFCONFIG --libs`" - CPPFLAGS="$CPPFLAGS `$WOLFCONFIG --cflags`" - fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for wolfSSH_Init in -lwolfssh" >&5 -printf %s "checking for wolfSSH_Init in -lwolfssh... " >&6; } -if test ${ac_cv_lib_wolfssh_wolfSSH_Init+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lwolfssh $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char wolfSSH_Init (); -int main (void) -{ -return wolfSSH_Init (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_wolfssh_wolfSSH_Init=yes -else $as_nop - ac_cv_lib_wolfssh_wolfSSH_Init=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_wolfssh_wolfSSH_Init" >&5 -printf "%s\n" "$ac_cv_lib_wolfssh_wolfSSH_Init" >&6; } -if test "x$ac_cv_lib_wolfssh_wolfSSH_Init" = xyes -then : - printf "%s\n" "#define HAVE_LIBWOLFSSH 1" >>confdefs.h - - LIBS="-lwolfssh $LIBS" - -fi - - - for ac_header in wolfssh/ssh.h -do : - ac_fn_c_check_header_compile "$LINENO" "wolfssh/ssh.h" "ac_cv_header_wolfssh_ssh_h" "$ac_includes_default" -if test "x$ac_cv_header_wolfssh_ssh_h" = xyes -then : - printf "%s\n" "#define HAVE_WOLFSSH_SSH_H 1" >>confdefs.h - curl_ssh_msg="enabled (wolfSSH)" - WOLFSSH_ENABLED=1 - -printf "%s\n" "#define USE_WOLFSSH 1" >>confdefs.h - - USE_WOLFSSH=1 - - -fi - -done - -fi - - -OPT_LIBRTMP=off - -# Check whether --with-librtmp was given. -if test ${with_librtmp+y} -then : - withval=$with_librtmp; OPT_LIBRTMP=$withval -fi - - -if test X"$OPT_LIBRTMP" != Xno; then - CLEANLDFLAGS="$LDFLAGS" - CLEANCPPFLAGS="$CPPFLAGS" - CLEANLIBS="$LIBS" - - case "$OPT_LIBRTMP" in - yes) - - if test -n "$PKG_CONFIG"; then - PKGCONFIG="$PKG_CONFIG" - else - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKGCONFIG=$ac_cv_path_PKGCONFIG -if test -n "$PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 -printf "%s\n" "$PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKGCONFIG"; then - ac_pt_PKGCONFIG=$PKGCONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $ac_pt_PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG -if test -n "$ac_pt_PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 -printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_PKGCONFIG" = x; then - PKGCONFIG="no" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKGCONFIG=$ac_pt_PKGCONFIG - fi -else - PKGCONFIG="$ac_cv_path_PKGCONFIG" -fi - - fi - - if test "x$PKGCONFIG" != "xno"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for librtmp options with pkg-config" >&5 -printf %s "checking for librtmp options with pkg-config... " >&6; } - itexists=` - if test -n ""; then - PKG_CONFIG_LIBDIR="" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --exists librtmp >/dev/null 2>&1 && echo 1` - - if test -z "$itexists"; then - PKGCONFIG="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 -printf "%s\n" "found" >&6; } - fi - fi - - - if test "$PKGCONFIG" != "no" ; then - LIB_RTMP=`$PKGCONFIG --libs-only-l librtmp` - LD_RTMP=`$PKGCONFIG --libs-only-L librtmp` - CPP_RTMP=`$PKGCONFIG --cflags-only-I librtmp` - version=`$PKGCONFIG --modversion librtmp` - DIR_RTMP=`echo $LD_RTMP | $SED -e 's/^-L//'` - else - as_fn_error $? "--librtmp was specified but could not find librtmp pkgconfig file." "$LINENO" 5 - fi - - ;; - off) - LIB_RTMP="-lrtmp" - ;; - *) - LIB_RTMP="-lrtmp" - PREFIX_RTMP=$OPT_LIBRTMP - ;; - esac - - if test -n "$PREFIX_RTMP"; then - LD_RTMP=-L${PREFIX_RTMP}/lib$libsuff - CPP_RTMP=-I${PREFIX_RTMP}/include - DIR_RTMP=${PREFIX_RTMP}/lib$libsuff - fi - - LDFLAGS="$LDFLAGS $LD_RTMP" - CPPFLAGS="$CPPFLAGS $CPP_RTMP" - LIBS="$LIB_RTMP $LIBS" - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for RTMP_Init in -lrtmp" >&5 -printf %s "checking for RTMP_Init in -lrtmp... " >&6; } -if test ${ac_cv_lib_rtmp_RTMP_Init+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lrtmp $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char RTMP_Init (); -int main (void) -{ -return RTMP_Init (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_rtmp_RTMP_Init=yes -else $as_nop - ac_cv_lib_rtmp_RTMP_Init=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rtmp_RTMP_Init" >&5 -printf "%s\n" "$ac_cv_lib_rtmp_RTMP_Init" >&6; } -if test "x$ac_cv_lib_rtmp_RTMP_Init" = xyes -then : - - for ac_header in librtmp/rtmp.h -do : - ac_fn_c_check_header_compile "$LINENO" "librtmp/rtmp.h" "ac_cv_header_librtmp_rtmp_h" "$ac_includes_default" -if test "x$ac_cv_header_librtmp_rtmp_h" = xyes -then : - printf "%s\n" "#define HAVE_LIBRTMP_RTMP_H 1" >>confdefs.h - curl_rtmp_msg="enabled (librtmp)" - LIBRTMP_ENABLED=1 - -printf "%s\n" "#define USE_LIBRTMP 1" >>confdefs.h - - USE_LIBRTMP=1 - - -fi - -done - -else $as_nop - LDFLAGS=$CLEANLDFLAGS - CPPFLAGS=$CLEANCPPFLAGS - LIBS=$CLEANLIBS - -fi - - - if test X"$OPT_LIBRTMP" != Xoff && - test "$LIBRTMP_ENABLED" != "1"; then - as_fn_error $? "librtmp libs and/or directories were not found where specified!" "$LINENO" 5 - fi - -fi - - -versioned_symbols_flavour= -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether versioned symbols are wanted" >&5 -printf %s "checking whether versioned symbols are wanted... " >&6; } -# Check whether --enable-versioned-symbols was given. -if test ${enable_versioned_symbols+y} -then : - enableval=$enable_versioned_symbols; case "$enableval" in - yes) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libraries can be versioned" >&5 -printf %s "checking if libraries can be versioned... " >&6; } - GLD=`$LD --help < /dev/null 2>/dev/null | grep version-script` - if test -z "$GLD"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: You need an ld version supporting the --version-script option" >&5 -printf "%s\n" "$as_me: WARNING: You need an ld version supporting the --version-script option" >&2;} - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - if test "x$CURL_WITH_MULTI_SSL" = "x1"; then - versioned_symbols_flavour="MULTISSL_" - elif test "x$OPENSSL_ENABLED" = "x1"; then - versioned_symbols_flavour="OPENSSL_" - elif test "x$GNUTLS_ENABLED" = "x1"; then - versioned_symbols_flavour="GNUTLS_" - elif test "x$NSS_ENABLED" = "x1"; then - versioned_symbols_flavour="NSS_" - elif test "x$WOLFSSL_ENABLED" = "x1"; then - versioned_symbols_flavour="WOLFSSL_" - elif test "x$SCHANNEL_ENABLED" = "x1"; then - versioned_symbols_flavour="SCHANNEL_" - elif test "x$SECURETRANSPORT_ENABLED" = "x1"; then - versioned_symbols_flavour="SECURE_TRANSPORT_" - else - versioned_symbols_flavour="" - fi - versioned_symbols="yes" - fi - ;; - - *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; - esac - -else $as_nop - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - - -fi - - -CURL_LT_SHLIB_VERSIONED_FLAVOUR="$versioned_symbols_flavour" - - if test "x$versioned_symbols" = 'xyes'; then - CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_TRUE= - CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_FALSE='#' -else - CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_TRUE='#' - CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_FALSE= -fi - - -CURL_PLIST_VERSION="$CURLVERSION" - - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable Windows native IDN (Windows native builds only)" >&5 -printf %s "checking whether to enable Windows native IDN (Windows native builds only)... " >&6; } -OPT_WINIDN="default" - -# Check whether --with-winidn was given. -if test ${with_winidn+y} -then : - withval=$with_winidn; OPT_WINIDN=$withval -fi - -case "$OPT_WINIDN" in - no|default) - want_winidn="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; - yes) - want_winidn="yes" - want_winidn_path="default" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - *) - want_winidn="yes" - want_winidn_path="$withval" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes ($withval)" >&5 -printf "%s\n" "yes ($withval)" >&6; } - ;; -esac - -if test "$want_winidn" = "yes"; then - clean_CFLAGS="$CFLAGS" - clean_CPPFLAGS="$CPPFLAGS" - clean_LDFLAGS="$LDFLAGS" - clean_LIBS="$LIBS" - WINIDN_LIBS="-lnormaliz" - WINIDN_CPPFLAGS="" - # - if test "$want_winidn_path" != "default"; then - WINIDN_LDFLAGS="-L$want_winidn_path/lib$libsuff" - WINIDN_CPPFLAGS="-I$want_winidn_path/include" - WINIDN_DIR="$want_winidn_path/lib$libsuff" - fi - # - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - #include - -int main (void) -{ - - #if (WINVER < 0x600) && (_WIN32_WINNT < 0x600) - #error - #endif - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - -else $as_nop - - CFLAGS=`echo $CFLAGS | $SED -e 's/-DWINVER=[^ ]*//g'` - CFLAGS=`echo $CFLAGS | $SED -e 's/-D_WIN32_WINNT=[^ ]*//g'` - CPPFLAGS=`echo $CPPFLAGS | $SED -e 's/-DWINVER=[^ ]*//g'` - CPPFLAGS=`echo $CPPFLAGS | $SED -e 's/-D_WIN32_WINNT=[^ ]*//g'` - WINIDN_CPPFLAGS="$WINIDN_CPPFLAGS -DWINVER=0x0600" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - # - CPPFLAGS="$CPPFLAGS $WINIDN_CPPFLAGS" - LDFLAGS="$LDFLAGS $WINIDN_LDFLAGS" - LIBS="$WINIDN_LIBS $LIBS" - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if IdnToUnicode can be linked" >&5 -printf %s "checking if IdnToUnicode can be linked... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - #include - -int main (void) -{ - - IdnToUnicode(0, NULL, 0, NULL, 0); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_links_winidn="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_links_winidn="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$tst_links_winidn" = "yes"; then - -printf "%s\n" "#define USE_WIN32_IDN 1" >>confdefs.h - - -printf "%s\n" "#define WANT_IDN_PROTOTYPES 1" >>confdefs.h - - IDN_ENABLED=1 - - curl_idn_msg="enabled (Windows-native)" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Cannot find libraries for IDN support: IDN disabled" >&5 -printf "%s\n" "$as_me: WARNING: Cannot find libraries for IDN support: IDN disabled" >&2;} - CFLAGS="$clean_CFLAGS" - CPPFLAGS="$clean_CPPFLAGS" - LDFLAGS="$clean_LDFLAGS" - LIBS="$clean_LIBS" - fi -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build with libidn2" >&5 -printf %s "checking whether to build with libidn2... " >&6; } -OPT_IDN="default" - -# Check whether --with-libidn2 was given. -if test ${with_libidn2+y} -then : - withval=$with_libidn2; OPT_IDN=$withval -fi - -if test "x$tst_links_winidn" = "xyes"; then - want_idn="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no (using winidn instead)" >&5 -printf "%s\n" "no (using winidn instead)" >&6; } -else - case "$OPT_IDN" in - no) - want_idn="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - ;; - default) - want_idn="yes" - want_idn_path="default" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: (assumed) yes" >&5 -printf "%s\n" "(assumed) yes" >&6; } - ;; - yes) - want_idn="yes" - want_idn_path="default" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - *) - want_idn="yes" - want_idn_path="$withval" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes ($withval)" >&5 -printf "%s\n" "yes ($withval)" >&6; } - ;; - esac -fi - -if test "$want_idn" = "yes"; then - clean_CPPFLAGS="$CPPFLAGS" - clean_LDFLAGS="$LDFLAGS" - clean_LIBS="$LIBS" - PKGCONFIG="no" - # - if test "$want_idn_path" != "default"; then - IDN_PCDIR="$want_idn_path/lib$libsuff/pkgconfig" - - if test -n "$PKG_CONFIG"; then - PKGCONFIG="$PKG_CONFIG" - else - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKGCONFIG=$ac_cv_path_PKGCONFIG -if test -n "$PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 -printf "%s\n" "$PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKGCONFIG"; then - ac_pt_PKGCONFIG=$PKGCONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $ac_pt_PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG -if test -n "$ac_pt_PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 -printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_PKGCONFIG" = x; then - PKGCONFIG="no" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKGCONFIG=$ac_pt_PKGCONFIG - fi -else - PKGCONFIG="$ac_cv_path_PKGCONFIG" -fi - - fi - - if test "x$PKGCONFIG" != "xno"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libidn2 options with pkg-config" >&5 -printf %s "checking for libidn2 options with pkg-config... " >&6; } - itexists=` - if test -n "$IDN_PCDIR"; then - PKG_CONFIG_LIBDIR="$IDN_PCDIR" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --exists libidn2 >/dev/null 2>&1 && echo 1` - - if test -z "$itexists"; then - PKGCONFIG="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 -printf "%s\n" "found" >&6; } - fi - fi - - if test "$PKGCONFIG" != "no"; then - IDN_LIBS=` - if test -n "$IDN_PCDIR"; then - PKG_CONFIG_LIBDIR="$IDN_PCDIR" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --libs-only-l libidn2 2>/dev/null` - IDN_LDFLAGS=` - if test -n "$IDN_PCDIR"; then - PKG_CONFIG_LIBDIR="$IDN_PCDIR" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --libs-only-L libidn2 2>/dev/null` - IDN_CPPFLAGS=` - if test -n "$IDN_PCDIR"; then - PKG_CONFIG_LIBDIR="$IDN_PCDIR" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --cflags-only-I libidn2 2>/dev/null` - IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/^-L//'` - else - IDN_LIBS="-lidn2" - IDN_LDFLAGS="-L$want_idn_path/lib$libsuff" - IDN_CPPFLAGS="-I$want_idn_path/include" - IDN_DIR="$want_idn_path/lib$libsuff" - fi - else - - if test -n "$PKG_CONFIG"; then - PKGCONFIG="$PKG_CONFIG" - else - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKGCONFIG=$ac_cv_path_PKGCONFIG -if test -n "$PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 -printf "%s\n" "$PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKGCONFIG"; then - ac_pt_PKGCONFIG=$PKGCONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $ac_pt_PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG -if test -n "$ac_pt_PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 -printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_PKGCONFIG" = x; then - PKGCONFIG="no" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKGCONFIG=$ac_pt_PKGCONFIG - fi -else - PKGCONFIG="$ac_cv_path_PKGCONFIG" -fi - - fi - - if test "x$PKGCONFIG" != "xno"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libidn2 options with pkg-config" >&5 -printf %s "checking for libidn2 options with pkg-config... " >&6; } - itexists=` - if test -n ""; then - PKG_CONFIG_LIBDIR="" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --exists libidn2 >/dev/null 2>&1 && echo 1` - - if test -z "$itexists"; then - PKGCONFIG="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 -printf "%s\n" "found" >&6; } - fi - fi - - if test "$PKGCONFIG" != "no"; then - IDN_LIBS=`$PKGCONFIG --libs-only-l libidn2 2>/dev/null` - IDN_LDFLAGS=`$PKGCONFIG --libs-only-L libidn2 2>/dev/null` - IDN_CPPFLAGS=`$PKGCONFIG --cflags-only-I libidn2 2>/dev/null` - IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/^-L//'` - else - IDN_LIBS="-lidn2" - fi - fi - # - if test "$PKGCONFIG" != "no"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: IDN_LIBS: \"$IDN_LIBS\"" >&5 -printf "%s\n" "$as_me: pkg-config: IDN_LIBS: \"$IDN_LIBS\"" >&6;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: IDN_LDFLAGS: \"$IDN_LDFLAGS\"" >&5 -printf "%s\n" "$as_me: pkg-config: IDN_LDFLAGS: \"$IDN_LDFLAGS\"" >&6;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: IDN_CPPFLAGS: \"$IDN_CPPFLAGS\"" >&5 -printf "%s\n" "$as_me: pkg-config: IDN_CPPFLAGS: \"$IDN_CPPFLAGS\"" >&6;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: IDN_DIR: \"$IDN_DIR\"" >&5 -printf "%s\n" "$as_me: pkg-config: IDN_DIR: \"$IDN_DIR\"" >&6;} - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: IDN_LIBS: \"$IDN_LIBS\"" >&5 -printf "%s\n" "$as_me: IDN_LIBS: \"$IDN_LIBS\"" >&6;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: IDN_LDFLAGS: \"$IDN_LDFLAGS\"" >&5 -printf "%s\n" "$as_me: IDN_LDFLAGS: \"$IDN_LDFLAGS\"" >&6;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: IDN_CPPFLAGS: \"$IDN_CPPFLAGS\"" >&5 -printf "%s\n" "$as_me: IDN_CPPFLAGS: \"$IDN_CPPFLAGS\"" >&6;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: IDN_DIR: \"$IDN_DIR\"" >&5 -printf "%s\n" "$as_me: IDN_DIR: \"$IDN_DIR\"" >&6;} - fi - # - CPPFLAGS="$CPPFLAGS $IDN_CPPFLAGS" - LDFLAGS="$LDFLAGS $IDN_LDFLAGS" - LIBS="$IDN_LIBS $LIBS" - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if idn2_lookup_ul can be linked" >&5 -printf %s "checking if idn2_lookup_ul can be linked... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#define idn2_lookup_ul innocuous_idn2_lookup_ul -#ifdef __STDC__ -# include -#else -# include -#endif -#undef idn2_lookup_ul -#ifdef __cplusplus -extern "C" -#endif -char idn2_lookup_ul (); -#if defined __stub_idn2_lookup_ul || defined __stub___idn2_lookup_ul -choke me -#endif - -int main (void) -{ -return idn2_lookup_ul (); - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_links_libidn="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_links_libidn="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - ac_fn_c_check_header_compile "$LINENO" "idn2.h" "ac_cv_header_idn2_h" "$ac_includes_default" -if test "x$ac_cv_header_idn2_h" = xyes -then : - printf "%s\n" "#define HAVE_IDN2_H 1" >>confdefs.h - -fi - - - if test "$tst_links_libidn" = "yes"; then - -printf "%s\n" "#define HAVE_LIBIDN2 1" >>confdefs.h - - - IDN_ENABLED=1 - - curl_idn_msg="enabled (libidn2)" - if test -n "$IDN_DIR" -a "x$cross_compiling" != "xyes"; then - CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$IDN_DIR" - export CURL_LIBRARY_PATH - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $IDN_DIR to CURL_LIBRARY_PATH" >&5 -printf "%s\n" "$as_me: Added $IDN_DIR to CURL_LIBRARY_PATH" >&6;} - fi - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Cannot find libraries for IDN support: IDN disabled" >&5 -printf "%s\n" "$as_me: WARNING: Cannot find libraries for IDN support: IDN disabled" >&2;} - CPPFLAGS="$clean_CPPFLAGS" - LDFLAGS="$clean_LDFLAGS" - LIBS="$clean_LIBS" - fi -fi - - -OPT_H2="yes" - -if test "x$disable_http" = "xyes" -o X"$want_hyper" != Xno; then - # without HTTP or with Hyper, nghttp2 is no use - OPT_H2="no" -fi - - -# Check whether --with-nghttp2 was given. -if test ${with_nghttp2+y} -then : - withval=$with_nghttp2; OPT_H2=$withval -fi - -case "$OPT_H2" in - no) - want_nghttp2="no" - ;; - yes) - want_nghttp2="default" - want_nghttp2_path="" - want_nghttp2_pkg_config_path="" - ;; - *) - want_nghttp2="yes" - want_nghttp2_path="$withval" - want_nghttp2_pkg_config_path="$withval/lib/pkgconfig" - ;; -esac - -if test X"$want_nghttp2" != Xno; then - CLEANLDFLAGS="$LDFLAGS" - CLEANCPPFLAGS="$CPPFLAGS" - CLEANLIBS="$LIBS" - - - if test -n "$PKG_CONFIG"; then - PKGCONFIG="$PKG_CONFIG" - else - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKGCONFIG=$ac_cv_path_PKGCONFIG -if test -n "$PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 -printf "%s\n" "$PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKGCONFIG"; then - ac_pt_PKGCONFIG=$PKGCONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $ac_pt_PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG -if test -n "$ac_pt_PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 -printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_PKGCONFIG" = x; then - PKGCONFIG="no" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKGCONFIG=$ac_pt_PKGCONFIG - fi -else - PKGCONFIG="$ac_cv_path_PKGCONFIG" -fi - - fi - - if test "x$PKGCONFIG" != "xno"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libnghttp2 options with pkg-config" >&5 -printf %s "checking for libnghttp2 options with pkg-config... " >&6; } - itexists=` - if test -n "$want_nghttp2_pkg_config_path"; then - PKG_CONFIG_LIBDIR="$want_nghttp2_pkg_config_path" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --exists libnghttp2 >/dev/null 2>&1 && echo 1` - - if test -z "$itexists"; then - PKGCONFIG="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 -printf "%s\n" "found" >&6; } - fi - fi - - - if test "$PKGCONFIG" != "no" ; then - LIB_H2=` - if test -n "$want_nghttp2_pkg_config_path"; then - PKG_CONFIG_LIBDIR="$want_nghttp2_pkg_config_path" - export PKG_CONFIG_LIBDIR - fi - - $PKGCONFIG --libs-only-l libnghttp2` - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -l is $LIB_H2" >&5 -printf "%s\n" "$as_me: -l is $LIB_H2" >&6;} - - CPP_H2=` - if test -n "$want_nghttp2_pkg_config_path"; then - PKG_CONFIG_LIBDIR="$want_nghttp2_pkg_config_path" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --cflags-only-I libnghttp2` - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -I is $CPP_H2" >&5 -printf "%s\n" "$as_me: -I is $CPP_H2" >&6;} - - LD_H2=` - if test -n "$want_nghttp2_pkg_config_path"; then - PKG_CONFIG_LIBDIR="$want_nghttp2_pkg_config_path" - export PKG_CONFIG_LIBDIR - fi - - $PKGCONFIG --libs-only-L libnghttp2` - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -L is $LD_H2" >&5 -printf "%s\n" "$as_me: -L is $LD_H2" >&6;} - - DIR_H2=`echo $LD_H2 | $SED -e 's/^-L//'` - elif test x"$want_nghttp2_path" != x; then - LIB_H2="-lnghttp2" - LD_H2=-L${want_nghttp2_path}/lib$libsuff - CPP_H2=-I${want_nghttp2_path}/include - DIR_H2=${want_nghttp2_path}/lib$libsuff - elif test X"$want_nghttp2" != Xdefault; then - as_fn_error $? "--with-nghttp2 was specified but could not find libnghttp2 pkg-config file." "$LINENO" 5 - fi - - LDFLAGS="$LDFLAGS $LD_H2" - CPPFLAGS="$CPPFLAGS $CPP_H2" - LIBS="$LIB_H2 $LIBS" - - # use nghttp2_session_set_local_window_size to require nghttp2 - # >= 1.12.0 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for nghttp2_session_set_local_window_size in -lnghttp2" >&5 -printf %s "checking for nghttp2_session_set_local_window_size in -lnghttp2... " >&6; } -if test ${ac_cv_lib_nghttp2_nghttp2_session_set_local_window_size+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lnghttp2 $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char nghttp2_session_set_local_window_size (); -int main (void) -{ -return nghttp2_session_set_local_window_size (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_nghttp2_nghttp2_session_set_local_window_size=yes -else $as_nop - ac_cv_lib_nghttp2_nghttp2_session_set_local_window_size=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nghttp2_nghttp2_session_set_local_window_size" >&5 -printf "%s\n" "$ac_cv_lib_nghttp2_nghttp2_session_set_local_window_size" >&6; } -if test "x$ac_cv_lib_nghttp2_nghttp2_session_set_local_window_size" = xyes -then : - - for ac_header in nghttp2/nghttp2.h -do : - ac_fn_c_check_header_compile "$LINENO" "nghttp2/nghttp2.h" "ac_cv_header_nghttp2_nghttp2_h" "$ac_includes_default" -if test "x$ac_cv_header_nghttp2_nghttp2_h" = xyes -then : - printf "%s\n" "#define HAVE_NGHTTP2_NGHTTP2_H 1" >>confdefs.h - curl_h2_msg="enabled (nghttp2)" - NGHTTP2_ENABLED=1 - -printf "%s\n" "#define USE_NGHTTP2 1" >>confdefs.h - - USE_NGHTTP2=1 - - -fi - -done - - CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_H2" - export CURL_LIBRARY_PATH - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_H2 to CURL_LIBRARY_PATH" >&5 -printf "%s\n" "$as_me: Added $DIR_H2 to CURL_LIBRARY_PATH" >&6;} - -else $as_nop - LDFLAGS=$CLEANLDFLAGS - CPPFLAGS=$CLEANCPPFLAGS - LIBS=$CLEANLIBS - -fi - -fi - - -OPT_TCP2="yes" - -if test "x$disable_http" = "xyes"; then - # without HTTP, ngtcp2 is no use - OPT_TCP2="no" -fi - - -# Check whether --with-ngtcp2 was given. -if test ${with_ngtcp2+y} -then : - withval=$with_ngtcp2; OPT_TCP2=$withval -fi - -case "$OPT_TCP2" in - no) - want_tcp2="no" - ;; - yes) - want_tcp2="default" - want_tcp2_path="" - ;; - *) - want_tcp2="yes" - want_tcp2_path="$withval/lib/pkgconfig" - ;; -esac - -curl_tcp2_msg="no (--with-ngtcp2)" -if test X"$want_tcp2" != Xno; then - CLEANLDFLAGS="$LDFLAGS" - CLEANCPPFLAGS="$CPPFLAGS" - CLEANLIBS="$LIBS" - - - if test -n "$PKG_CONFIG"; then - PKGCONFIG="$PKG_CONFIG" - else - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKGCONFIG=$ac_cv_path_PKGCONFIG -if test -n "$PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 -printf "%s\n" "$PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKGCONFIG"; then - ac_pt_PKGCONFIG=$PKGCONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $ac_pt_PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG -if test -n "$ac_pt_PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 -printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_PKGCONFIG" = x; then - PKGCONFIG="no" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKGCONFIG=$ac_pt_PKGCONFIG - fi -else - PKGCONFIG="$ac_cv_path_PKGCONFIG" -fi - - fi - - if test "x$PKGCONFIG" != "xno"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libngtcp2 options with pkg-config" >&5 -printf %s "checking for libngtcp2 options with pkg-config... " >&6; } - itexists=` - if test -n "$want_tcp2_path"; then - PKG_CONFIG_LIBDIR="$want_tcp2_path" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --exists libngtcp2 >/dev/null 2>&1 && echo 1` - - if test -z "$itexists"; then - PKGCONFIG="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 -printf "%s\n" "found" >&6; } - fi - fi - - - if test "$PKGCONFIG" != "no" ; then - LIB_TCP2=` - if test -n "$want_tcp2_path"; then - PKG_CONFIG_LIBDIR="$want_tcp2_path" - export PKG_CONFIG_LIBDIR - fi - - $PKGCONFIG --libs-only-l libngtcp2` - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -l is $LIB_TCP2" >&5 -printf "%s\n" "$as_me: -l is $LIB_TCP2" >&6;} - - CPP_TCP2=` - if test -n "$want_tcp2_path"; then - PKG_CONFIG_LIBDIR="$want_tcp2_path" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --cflags-only-I libngtcp2` - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -I is $CPP_TCP2" >&5 -printf "%s\n" "$as_me: -I is $CPP_TCP2" >&6;} - - LD_TCP2=` - if test -n "$want_tcp2_path"; then - PKG_CONFIG_LIBDIR="$want_tcp2_path" - export PKG_CONFIG_LIBDIR - fi - - $PKGCONFIG --libs-only-L libngtcp2` - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -L is $LD_TCP2" >&5 -printf "%s\n" "$as_me: -L is $LD_TCP2" >&6;} - - LDFLAGS="$LDFLAGS $LD_TCP2" - CPPFLAGS="$CPPFLAGS $CPP_TCP2" - LIBS="$LIB_TCP2 $LIBS" - - if test "x$cross_compiling" != "xyes"; then - DIR_TCP2=`echo $LD_TCP2 | $SED -e 's/^-L//'` - fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ngtcp2_conn_client_new_versioned in -lngtcp2" >&5 -printf %s "checking for ngtcp2_conn_client_new_versioned in -lngtcp2... " >&6; } -if test ${ac_cv_lib_ngtcp2_ngtcp2_conn_client_new_versioned+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lngtcp2 $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char ngtcp2_conn_client_new_versioned (); -int main (void) -{ -return ngtcp2_conn_client_new_versioned (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_ngtcp2_ngtcp2_conn_client_new_versioned=yes -else $as_nop - ac_cv_lib_ngtcp2_ngtcp2_conn_client_new_versioned=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ngtcp2_ngtcp2_conn_client_new_versioned" >&5 -printf "%s\n" "$ac_cv_lib_ngtcp2_ngtcp2_conn_client_new_versioned" >&6; } -if test "x$ac_cv_lib_ngtcp2_ngtcp2_conn_client_new_versioned" = xyes -then : - - for ac_header in ngtcp2/ngtcp2.h -do : - ac_fn_c_check_header_compile "$LINENO" "ngtcp2/ngtcp2.h" "ac_cv_header_ngtcp2_ngtcp2_h" "$ac_includes_default" -if test "x$ac_cv_header_ngtcp2_ngtcp2_h" = xyes -then : - printf "%s\n" "#define HAVE_NGTCP2_NGTCP2_H 1" >>confdefs.h - NGTCP2_ENABLED=1 - -printf "%s\n" "#define USE_NGTCP2 1" >>confdefs.h - - USE_NGTCP2=1 - - CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_TCP2" - export CURL_LIBRARY_PATH - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_TCP2 to CURL_LIBRARY_PATH" >&5 -printf "%s\n" "$as_me: Added $DIR_TCP2 to CURL_LIBRARY_PATH" >&6;} - -fi - -done - -else $as_nop - LDFLAGS=$CLEANLDFLAGS - CPPFLAGS=$CLEANCPPFLAGS - LIBS=$CLEANLIBS - -fi - - - else - if test X"$want_tcp2" != Xdefault; then - as_fn_error $? "--with-ngtcp2 was specified but could not find ngtcp2 pkg-config file." "$LINENO" 5 - fi - fi - -fi - -if test "x$NGTCP2_ENABLED" = "x1" -a "x$OPENSSL_ENABLED" = "x1"; then - CLEANLDFLAGS="$LDFLAGS" - CLEANCPPFLAGS="$CPPFLAGS" - CLEANLIBS="$LIBS" - - - if test -n "$PKG_CONFIG"; then - PKGCONFIG="$PKG_CONFIG" - else - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKGCONFIG=$ac_cv_path_PKGCONFIG -if test -n "$PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 -printf "%s\n" "$PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKGCONFIG"; then - ac_pt_PKGCONFIG=$PKGCONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $ac_pt_PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG -if test -n "$ac_pt_PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 -printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_PKGCONFIG" = x; then - PKGCONFIG="no" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKGCONFIG=$ac_pt_PKGCONFIG - fi -else - PKGCONFIG="$ac_cv_path_PKGCONFIG" -fi - - fi - - if test "x$PKGCONFIG" != "xno"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libngtcp2_crypto_openssl options with pkg-config" >&5 -printf %s "checking for libngtcp2_crypto_openssl options with pkg-config... " >&6; } - itexists=` - if test -n "$want_tcp2_path"; then - PKG_CONFIG_LIBDIR="$want_tcp2_path" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --exists libngtcp2_crypto_openssl >/dev/null 2>&1 && echo 1` - - if test -z "$itexists"; then - PKGCONFIG="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 -printf "%s\n" "found" >&6; } - fi - fi - - - if test "$PKGCONFIG" != "no" ; then - LIB_NGTCP2_CRYPTO_OPENSSL=` - if test -n "$want_tcp2_path"; then - PKG_CONFIG_LIBDIR="$want_tcp2_path" - export PKG_CONFIG_LIBDIR - fi - - $PKGCONFIG --libs-only-l libngtcp2_crypto_openssl` - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -l is $LIB_NGTCP2_CRYPTO_OPENSSL" >&5 -printf "%s\n" "$as_me: -l is $LIB_NGTCP2_CRYPTO_OPENSSL" >&6;} - - CPP_NGTCP2_CRYPTO_OPENSSL=` - if test -n "$want_tcp2_path"; then - PKG_CONFIG_LIBDIR="$want_tcp2_path" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --cflags-only-I libngtcp2_crypto_openssl` - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -I is $CPP_NGTCP2_CRYPTO_OPENSSL" >&5 -printf "%s\n" "$as_me: -I is $CPP_NGTCP2_CRYPTO_OPENSSL" >&6;} - - LD_NGTCP2_CRYPTO_OPENSSL=` - if test -n "$want_tcp2_path"; then - PKG_CONFIG_LIBDIR="$want_tcp2_path" - export PKG_CONFIG_LIBDIR - fi - - $PKGCONFIG --libs-only-L libngtcp2_crypto_openssl` - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -L is $LD_NGTCP2_CRYPTO_OPENSSL" >&5 -printf "%s\n" "$as_me: -L is $LD_NGTCP2_CRYPTO_OPENSSL" >&6;} - - LDFLAGS="$LDFLAGS $LD_NGTCP2_CRYPTO_OPENSSL" - CPPFLAGS="$CPPFLAGS $CPP_NGTCP2_CRYPTO_OPENSSL" - LIBS="$LIB_NGTCP2_CRYPTO_OPENSSL $LIBS" - - if test "x$cross_compiling" != "xyes"; then - DIR_NGTCP2_CRYPTO_OPENSSL=`echo $LD_NGTCP2_CRYPTO_OPENSSL | $SED -e 's/^-L//'` - fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ngtcp2_crypto_recv_client_initial_cb in -lngtcp2_crypto_openssl" >&5 -printf %s "checking for ngtcp2_crypto_recv_client_initial_cb in -lngtcp2_crypto_openssl... " >&6; } -if test ${ac_cv_lib_ngtcp2_crypto_openssl_ngtcp2_crypto_recv_client_initial_cb+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lngtcp2_crypto_openssl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char ngtcp2_crypto_recv_client_initial_cb (); -int main (void) -{ -return ngtcp2_crypto_recv_client_initial_cb (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_ngtcp2_crypto_openssl_ngtcp2_crypto_recv_client_initial_cb=yes -else $as_nop - ac_cv_lib_ngtcp2_crypto_openssl_ngtcp2_crypto_recv_client_initial_cb=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ngtcp2_crypto_openssl_ngtcp2_crypto_recv_client_initial_cb" >&5 -printf "%s\n" "$ac_cv_lib_ngtcp2_crypto_openssl_ngtcp2_crypto_recv_client_initial_cb" >&6; } -if test "x$ac_cv_lib_ngtcp2_crypto_openssl_ngtcp2_crypto_recv_client_initial_cb" = xyes -then : - - for ac_header in ngtcp2/ngtcp2_crypto.h -do : - ac_fn_c_check_header_compile "$LINENO" "ngtcp2/ngtcp2_crypto.h" "ac_cv_header_ngtcp2_ngtcp2_crypto_h" "$ac_includes_default" -if test "x$ac_cv_header_ngtcp2_ngtcp2_crypto_h" = xyes -then : - printf "%s\n" "#define HAVE_NGTCP2_NGTCP2_CRYPTO_H 1" >>confdefs.h - NGTCP2_ENABLED=1 - -printf "%s\n" "#define USE_NGTCP2_CRYPTO_OPENSSL 1" >>confdefs.h - - USE_NGTCP2_CRYPTO_OPENSSL=1 - - CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGTCP2_CRYPTO_OPENSSL" - export CURL_LIBRARY_PATH - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_NGTCP2_CRYPTO_OPENSSL to CURL_LIBRARY_PATH" >&5 -printf "%s\n" "$as_me: Added $DIR_NGTCP2_CRYPTO_OPENSSL to CURL_LIBRARY_PATH" >&6;} - -fi - -done - -else $as_nop - LDFLAGS=$CLEANLDFLAGS - CPPFLAGS=$CLEANCPPFLAGS - LIBS=$CLEANLIBS - -fi - - - else - if test X"$want_tcp2" != Xdefault; then - as_fn_error $? "--with-ngtcp2 was specified but could not find ngtcp2_crypto_openssl pkg-config file." "$LINENO" 5 - fi - fi -fi - -if test "x$NGTCP2_ENABLED" = "x1" -a "x$GNUTLS_ENABLED" = "x1"; then - CLEANLDFLAGS="$LDFLAGS" - CLEANCPPFLAGS="$CPPFLAGS" - CLEANLIBS="$LIBS" - - - if test -n "$PKG_CONFIG"; then - PKGCONFIG="$PKG_CONFIG" - else - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKGCONFIG=$ac_cv_path_PKGCONFIG -if test -n "$PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 -printf "%s\n" "$PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKGCONFIG"; then - ac_pt_PKGCONFIG=$PKGCONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $ac_pt_PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG -if test -n "$ac_pt_PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 -printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_PKGCONFIG" = x; then - PKGCONFIG="no" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKGCONFIG=$ac_pt_PKGCONFIG - fi -else - PKGCONFIG="$ac_cv_path_PKGCONFIG" -fi - - fi - - if test "x$PKGCONFIG" != "xno"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libngtcp2_crypto_gnutls options with pkg-config" >&5 -printf %s "checking for libngtcp2_crypto_gnutls options with pkg-config... " >&6; } - itexists=` - if test -n "$want_tcp2_path"; then - PKG_CONFIG_LIBDIR="$want_tcp2_path" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --exists libngtcp2_crypto_gnutls >/dev/null 2>&1 && echo 1` - - if test -z "$itexists"; then - PKGCONFIG="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 -printf "%s\n" "found" >&6; } - fi - fi - - - if test "$PKGCONFIG" != "no" ; then - LIB_NGTCP2_CRYPTO_GNUTLS=` - if test -n "$want_tcp2_path"; then - PKG_CONFIG_LIBDIR="$want_tcp2_path" - export PKG_CONFIG_LIBDIR - fi - - $PKGCONFIG --libs-only-l libngtcp2_crypto_gnutls` - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -l is $LIB_NGTCP2_CRYPTO_GNUTLS" >&5 -printf "%s\n" "$as_me: -l is $LIB_NGTCP2_CRYPTO_GNUTLS" >&6;} - - CPP_NGTCP2_CRYPTO_GNUTLS=` - if test -n "$want_tcp2_path"; then - PKG_CONFIG_LIBDIR="$want_tcp2_path" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --cflags-only-I libngtcp2_crypto_gnutls` - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -I is $CPP_NGTCP2_CRYPTO_GNUTLS" >&5 -printf "%s\n" "$as_me: -I is $CPP_NGTCP2_CRYPTO_GNUTLS" >&6;} - - LD_NGTCP2_CRYPTO_GNUTLS=` - if test -n "$want_tcp2_path"; then - PKG_CONFIG_LIBDIR="$want_tcp2_path" - export PKG_CONFIG_LIBDIR - fi - - $PKGCONFIG --libs-only-L libngtcp2_crypto_gnutls` - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -L is $LD_NGTCP2_CRYPTO_GNUTLS" >&5 -printf "%s\n" "$as_me: -L is $LD_NGTCP2_CRYPTO_GNUTLS" >&6;} - - LDFLAGS="$LDFLAGS $LD_NGTCP2_CRYPTO_GNUTLS" - CPPFLAGS="$CPPFLAGS $CPP_NGTCP2_CRYPTO_GNUTLS" - LIBS="$LIB_NGTCP2_CRYPTO_GNUTLS $LIBS" - - if test "x$cross_compiling" != "xyes"; then - DIR_NGTCP2_CRYPTO_GNUTLS=`echo $LD_NGTCP2_CRYPTO_GNUTLS | $SED -e 's/^-L//'` - fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ngtcp2_crypto_recv_client_initial_cb in -lngtcp2_crypto_gnutls" >&5 -printf %s "checking for ngtcp2_crypto_recv_client_initial_cb in -lngtcp2_crypto_gnutls... " >&6; } -if test ${ac_cv_lib_ngtcp2_crypto_gnutls_ngtcp2_crypto_recv_client_initial_cb+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lngtcp2_crypto_gnutls $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char ngtcp2_crypto_recv_client_initial_cb (); -int main (void) -{ -return ngtcp2_crypto_recv_client_initial_cb (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_ngtcp2_crypto_gnutls_ngtcp2_crypto_recv_client_initial_cb=yes -else $as_nop - ac_cv_lib_ngtcp2_crypto_gnutls_ngtcp2_crypto_recv_client_initial_cb=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ngtcp2_crypto_gnutls_ngtcp2_crypto_recv_client_initial_cb" >&5 -printf "%s\n" "$ac_cv_lib_ngtcp2_crypto_gnutls_ngtcp2_crypto_recv_client_initial_cb" >&6; } -if test "x$ac_cv_lib_ngtcp2_crypto_gnutls_ngtcp2_crypto_recv_client_initial_cb" = xyes -then : - - for ac_header in ngtcp2/ngtcp2_crypto.h -do : - ac_fn_c_check_header_compile "$LINENO" "ngtcp2/ngtcp2_crypto.h" "ac_cv_header_ngtcp2_ngtcp2_crypto_h" "$ac_includes_default" -if test "x$ac_cv_header_ngtcp2_ngtcp2_crypto_h" = xyes -then : - printf "%s\n" "#define HAVE_NGTCP2_NGTCP2_CRYPTO_H 1" >>confdefs.h - NGTCP2_ENABLED=1 - -printf "%s\n" "#define USE_NGTCP2_CRYPTO_GNUTLS 1" >>confdefs.h - - USE_NGTCP2_CRYPTO_GNUTLS=1 - - CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGTCP2_CRYPTO_GNUTLS" - export CURL_LIBRARY_PATH - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_NGTCP2_CRYPTO_GNUTLS to CURL_LIBRARY_PATH" >&5 -printf "%s\n" "$as_me: Added $DIR_NGTCP2_CRYPTO_GNUTLS to CURL_LIBRARY_PATH" >&6;} - -fi - -done - -else $as_nop - LDFLAGS=$CLEANLDFLAGS - CPPFLAGS=$CLEANCPPFLAGS - LIBS=$CLEANLIBS - -fi - - - else - if test X"$want_tcp2" != Xdefault; then - as_fn_error $? "--with-ngtcp2 was specified but could not find ngtcp2_crypto_gnutls pkg-config file." "$LINENO" 5 - fi - fi -fi - -if test "x$NGTCP2_ENABLED" = "x1" -a "x$WOLFSSL_ENABLED" = "x1"; then - CLEANLDFLAGS="$LDFLAGS" - CLEANCPPFLAGS="$CPPFLAGS" - CLEANLIBS="$LIBS" - - - if test -n "$PKG_CONFIG"; then - PKGCONFIG="$PKG_CONFIG" - else - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKGCONFIG=$ac_cv_path_PKGCONFIG -if test -n "$PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 -printf "%s\n" "$PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKGCONFIG"; then - ac_pt_PKGCONFIG=$PKGCONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $ac_pt_PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG -if test -n "$ac_pt_PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 -printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_PKGCONFIG" = x; then - PKGCONFIG="no" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKGCONFIG=$ac_pt_PKGCONFIG - fi -else - PKGCONFIG="$ac_cv_path_PKGCONFIG" -fi - - fi - - if test "x$PKGCONFIG" != "xno"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libngtcp2_crypto_wolfssl options with pkg-config" >&5 -printf %s "checking for libngtcp2_crypto_wolfssl options with pkg-config... " >&6; } - itexists=` - if test -n "$want_tcp2_path"; then - PKG_CONFIG_LIBDIR="$want_tcp2_path" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --exists libngtcp2_crypto_wolfssl >/dev/null 2>&1 && echo 1` - - if test -z "$itexists"; then - PKGCONFIG="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 -printf "%s\n" "found" >&6; } - fi - fi - - - if test "$PKGCONFIG" != "no" ; then - LIB_NGTCP2_CRYPTO_WOLFSSL=` - if test -n "$want_tcp2_path"; then - PKG_CONFIG_LIBDIR="$want_tcp2_path" - export PKG_CONFIG_LIBDIR - fi - - $PKGCONFIG --libs-only-l libngtcp2_crypto_wolfssl` - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -l is $LIB_NGTCP2_CRYPTO_WOLFSSL" >&5 -printf "%s\n" "$as_me: -l is $LIB_NGTCP2_CRYPTO_WOLFSSL" >&6;} - - CPP_NGTCP2_CRYPTO_WOLFSSL=` - if test -n "$want_tcp2_path"; then - PKG_CONFIG_LIBDIR="$want_tcp2_path" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --cflags-only-I libngtcp2_crypto_wolfssl` - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -I is $CPP_NGTCP2_CRYPTO_WOLFSSL" >&5 -printf "%s\n" "$as_me: -I is $CPP_NGTCP2_CRYPTO_WOLFSSL" >&6;} - - LD_NGTCP2_CRYPTO_WOLFSSL=` - if test -n "$want_tcp2_path"; then - PKG_CONFIG_LIBDIR="$want_tcp2_path" - export PKG_CONFIG_LIBDIR - fi - - $PKGCONFIG --libs-only-L libngtcp2_crypto_wolfssl` - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -L is $LD_NGTCP2_CRYPTO_WOLFSSL" >&5 -printf "%s\n" "$as_me: -L is $LD_NGTCP2_CRYPTO_WOLFSSL" >&6;} - - LDFLAGS="$LDFLAGS $LD_NGTCP2_CRYPTO_WOLFSSL" - CPPFLAGS="$CPPFLAGS $CPP_NGTCP2_CRYPTO_WOLFSSL" - LIBS="$LIB_NGTCP2_CRYPTO_WOLFSSL $LIBS" - - if test "x$cross_compiling" != "xyes"; then - DIR_NGTCP2_CRYPTO_WOLFSSL=`echo $LD_NGTCP2_CRYPTO_WOLFSSL | $SED -e 's/^-L//'` - fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ngtcp2_crypto_recv_client_initial_cb in -lngtcp2_crypto_wolfssl" >&5 -printf %s "checking for ngtcp2_crypto_recv_client_initial_cb in -lngtcp2_crypto_wolfssl... " >&6; } -if test ${ac_cv_lib_ngtcp2_crypto_wolfssl_ngtcp2_crypto_recv_client_initial_cb+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lngtcp2_crypto_wolfssl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char ngtcp2_crypto_recv_client_initial_cb (); -int main (void) -{ -return ngtcp2_crypto_recv_client_initial_cb (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_ngtcp2_crypto_wolfssl_ngtcp2_crypto_recv_client_initial_cb=yes -else $as_nop - ac_cv_lib_ngtcp2_crypto_wolfssl_ngtcp2_crypto_recv_client_initial_cb=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ngtcp2_crypto_wolfssl_ngtcp2_crypto_recv_client_initial_cb" >&5 -printf "%s\n" "$ac_cv_lib_ngtcp2_crypto_wolfssl_ngtcp2_crypto_recv_client_initial_cb" >&6; } -if test "x$ac_cv_lib_ngtcp2_crypto_wolfssl_ngtcp2_crypto_recv_client_initial_cb" = xyes -then : - - for ac_header in ngtcp2/ngtcp2_crypto.h -do : - ac_fn_c_check_header_compile "$LINENO" "ngtcp2/ngtcp2_crypto.h" "ac_cv_header_ngtcp2_ngtcp2_crypto_h" "$ac_includes_default" -if test "x$ac_cv_header_ngtcp2_ngtcp2_crypto_h" = xyes -then : - printf "%s\n" "#define HAVE_NGTCP2_NGTCP2_CRYPTO_H 1" >>confdefs.h - NGTCP2_ENABLED=1 - -printf "%s\n" "#define USE_NGTCP2_CRYPTO_WOLFSSL 1" >>confdefs.h - - USE_NGTCP2_CRYPTO_WOLFSSL=1 - - CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGTCP2_CRYPTO_WOLFSSL" - export CURL_LIBRARY_PATH - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_NGTCP2_CRYPTO_WOLFSSL to CURL_LIBRARY_PATH" >&5 -printf "%s\n" "$as_me: Added $DIR_NGTCP2_CRYPTO_WOLFSSL to CURL_LIBRARY_PATH" >&6;} - -fi - -done - -else $as_nop - LDFLAGS=$CLEANLDFLAGS - CPPFLAGS=$CLEANCPPFLAGS - LIBS=$CLEANLIBS - -fi - - - else - if test X"$want_tcp2" != Xdefault; then - as_fn_error $? "--with-ngtcp2 was specified but could not find ngtcp2_crypto_wolfssl pkg-config file." "$LINENO" 5 - fi - fi -fi - - -OPT_NGHTTP3="yes" - -if test "x$NGTCP2_ENABLED" = "x"; then - # without ngtcp2, nghttp3 is of no use for us - OPT_NGHTTP3="no" -fi - - -# Check whether --with-nghttp3 was given. -if test ${with_nghttp3+y} -then : - withval=$with_nghttp3; OPT_NGHTTP3=$withval -fi - -case "$OPT_NGHTTP3" in - no) - want_nghttp3="no" - ;; - yes) - want_nghttp3="default" - want_nghttp3_path="" - ;; - *) - want_nghttp3="yes" - want_nghttp3_path="$withval/lib/pkgconfig" - ;; -esac - -curl_http3_msg="no (--with-nghttp3)" -if test X"$want_nghttp3" != Xno; then - CLEANLDFLAGS="$LDFLAGS" - CLEANCPPFLAGS="$CPPFLAGS" - CLEANLIBS="$LIBS" - - - if test -n "$PKG_CONFIG"; then - PKGCONFIG="$PKG_CONFIG" - else - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKGCONFIG=$ac_cv_path_PKGCONFIG -if test -n "$PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 -printf "%s\n" "$PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKGCONFIG"; then - ac_pt_PKGCONFIG=$PKGCONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $ac_pt_PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG -if test -n "$ac_pt_PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 -printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_PKGCONFIG" = x; then - PKGCONFIG="no" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKGCONFIG=$ac_pt_PKGCONFIG - fi -else - PKGCONFIG="$ac_cv_path_PKGCONFIG" -fi - - fi - - if test "x$PKGCONFIG" != "xno"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libnghttp3 options with pkg-config" >&5 -printf %s "checking for libnghttp3 options with pkg-config... " >&6; } - itexists=` - if test -n "$want_nghttp3_path"; then - PKG_CONFIG_LIBDIR="$want_nghttp3_path" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --exists libnghttp3 >/dev/null 2>&1 && echo 1` - - if test -z "$itexists"; then - PKGCONFIG="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 -printf "%s\n" "found" >&6; } - fi - fi - - - if test "$PKGCONFIG" != "no" ; then - LIB_NGHTTP3=` - if test -n "$want_nghttp3_path"; then - PKG_CONFIG_LIBDIR="$want_nghttp3_path" - export PKG_CONFIG_LIBDIR - fi - - $PKGCONFIG --libs-only-l libnghttp3` - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -l is $LIB_NGHTTP3" >&5 -printf "%s\n" "$as_me: -l is $LIB_NGHTTP3" >&6;} - - CPP_NGHTTP3=` - if test -n "$want_nghttp3_path"; then - PKG_CONFIG_LIBDIR="$want_nghttp3_path" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --cflags-only-I libnghttp3` - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -I is $CPP_NGHTTP3" >&5 -printf "%s\n" "$as_me: -I is $CPP_NGHTTP3" >&6;} - - LD_NGHTTP3=` - if test -n "$want_nghttp3_path"; then - PKG_CONFIG_LIBDIR="$want_nghttp3_path" - export PKG_CONFIG_LIBDIR - fi - - $PKGCONFIG --libs-only-L libnghttp3` - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -L is $LD_NGHTTP3" >&5 -printf "%s\n" "$as_me: -L is $LD_NGHTTP3" >&6;} - - LDFLAGS="$LDFLAGS $LD_NGHTTP3" - CPPFLAGS="$CPPFLAGS $CPP_NGHTTP3" - LIBS="$LIB_NGHTTP3 $LIBS" - - if test "x$cross_compiling" != "xyes"; then - DIR_NGHTTP3=`echo $LD_NGHTTP3 | $SED -e 's/^-L//'` - fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for nghttp3_conn_client_new_versioned in -lnghttp3" >&5 -printf %s "checking for nghttp3_conn_client_new_versioned in -lnghttp3... " >&6; } -if test ${ac_cv_lib_nghttp3_nghttp3_conn_client_new_versioned+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lnghttp3 $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char nghttp3_conn_client_new_versioned (); -int main (void) -{ -return nghttp3_conn_client_new_versioned (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_nghttp3_nghttp3_conn_client_new_versioned=yes -else $as_nop - ac_cv_lib_nghttp3_nghttp3_conn_client_new_versioned=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nghttp3_nghttp3_conn_client_new_versioned" >&5 -printf "%s\n" "$ac_cv_lib_nghttp3_nghttp3_conn_client_new_versioned" >&6; } -if test "x$ac_cv_lib_nghttp3_nghttp3_conn_client_new_versioned" = xyes -then : - - for ac_header in nghttp3/nghttp3.h -do : - ac_fn_c_check_header_compile "$LINENO" "nghttp3/nghttp3.h" "ac_cv_header_nghttp3_nghttp3_h" "$ac_includes_default" -if test "x$ac_cv_header_nghttp3_nghttp3_h" = xyes -then : - printf "%s\n" "#define HAVE_NGHTTP3_NGHTTP3_H 1" >>confdefs.h - curl_h3_msg="enabled (ngtcp2 + nghttp3)" - NGHTTP3_ENABLED=1 - -printf "%s\n" "#define USE_NGHTTP3 1" >>confdefs.h - - USE_NGHTTP3=1 - - CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGHTTP3" - export CURL_LIBRARY_PATH - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_NGHTTP3 to CURL_LIBRARY_PATH" >&5 -printf "%s\n" "$as_me: Added $DIR_NGHTTP3 to CURL_LIBRARY_PATH" >&6;} - experimental="$experimental HTTP3" - -fi - -done - -else $as_nop - LDFLAGS=$CLEANLDFLAGS - CPPFLAGS=$CLEANCPPFLAGS - LIBS=$CLEANLIBS - -fi - - - else - if test X"$want_nghttp3" != Xdefault; then - as_fn_error $? "--with-nghttp3 was specified but could not find nghttp3 pkg-config file." "$LINENO" 5 - fi - fi - -fi - - -OPT_QUICHE="no" - -if test "x$disable_http" = "xyes" -o "x$USE_NGTCP" = "x1"; then - # without HTTP or with ngtcp2, quiche is no use - OPT_QUICHE="no" -fi - - -# Check whether --with-quiche was given. -if test ${with_quiche+y} -then : - withval=$with_quiche; OPT_QUICHE=$withval -fi - -case "$OPT_QUICHE" in - no) - want_quiche="no" - ;; - yes) - want_quiche="default" - want_quiche_path="" - ;; - *) - want_quiche="yes" - want_quiche_path="$withval" - ;; -esac - -if test X"$want_quiche" != Xno; then - - if test "$NGHTTP3_ENABLED" = 1; then - as_fn_error $? "--with-quiche and --with-ngtcp2 are mutually exclusive" "$LINENO" 5 - fi - - CLEANLDFLAGS="$LDFLAGS" - CLEANCPPFLAGS="$CPPFLAGS" - CLEANLIBS="$LIBS" - - - if test -n "$PKG_CONFIG"; then - PKGCONFIG="$PKG_CONFIG" - else - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKGCONFIG=$ac_cv_path_PKGCONFIG -if test -n "$PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 -printf "%s\n" "$PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKGCONFIG"; then - ac_pt_PKGCONFIG=$PKGCONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $ac_pt_PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG -if test -n "$ac_pt_PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 -printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_PKGCONFIG" = x; then - PKGCONFIG="no" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKGCONFIG=$ac_pt_PKGCONFIG - fi -else - PKGCONFIG="$ac_cv_path_PKGCONFIG" -fi - - fi - - if test "x$PKGCONFIG" != "xno"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for quiche options with pkg-config" >&5 -printf %s "checking for quiche options with pkg-config... " >&6; } - itexists=` - if test -n "$want_quiche_path"; then - PKG_CONFIG_LIBDIR="$want_quiche_path" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --exists quiche >/dev/null 2>&1 && echo 1` - - if test -z "$itexists"; then - PKGCONFIG="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 -printf "%s\n" "found" >&6; } - fi - fi - - - if test "$PKGCONFIG" != "no" ; then - LIB_QUICHE=` - if test -n "$want_quiche_path"; then - PKG_CONFIG_LIBDIR="$want_quiche_path" - export PKG_CONFIG_LIBDIR - fi - - $PKGCONFIG --libs-only-l quiche` - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -l is $LIB_QUICHE" >&5 -printf "%s\n" "$as_me: -l is $LIB_QUICHE" >&6;} - - CPP_QUICHE=` - if test -n "$want_quiche_path"; then - PKG_CONFIG_LIBDIR="$want_quiche_path" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --cflags-only-I quiche` - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -I is $CPP_QUICHE" >&5 -printf "%s\n" "$as_me: -I is $CPP_QUICHE" >&6;} - - LD_QUICHE=` - if test -n "$want_quiche_path"; then - PKG_CONFIG_LIBDIR="$want_quiche_path" - export PKG_CONFIG_LIBDIR - fi - - $PKGCONFIG --libs-only-L quiche` - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: -L is $LD_QUICHE" >&5 -printf "%s\n" "$as_me: -L is $LD_QUICHE" >&6;} - - LDFLAGS="$LDFLAGS $LD_QUICHE" - CPPFLAGS="$CPPFLAGS $CPP_QUICHE" - LIBS="$LIB_QUICHE $LIBS" - - if test "x$cross_compiling" != "xyes"; then - DIR_QUICHE=`echo $LD_QUICHE | $SED -e 's/^-L//'` - fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for quiche_connect in -lquiche" >&5 -printf %s "checking for quiche_connect in -lquiche... " >&6; } -if test ${ac_cv_lib_quiche_quiche_connect+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lquiche $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char quiche_connect (); -int main (void) -{ -return quiche_connect (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_quiche_quiche_connect=yes -else $as_nop - ac_cv_lib_quiche_quiche_connect=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_quiche_quiche_connect" >&5 -printf "%s\n" "$ac_cv_lib_quiche_quiche_connect" >&6; } -if test "x$ac_cv_lib_quiche_quiche_connect" = xyes -then : - - for ac_header in quiche.h -do : - ac_fn_c_check_header_compile "$LINENO" "quiche.h" "ac_cv_header_quiche_h" " -$ac_includes_default -#include - - -" -if test "x$ac_cv_header_quiche_h" = xyes -then : - printf "%s\n" "#define HAVE_QUICHE_H 1" >>confdefs.h - experimental="$experimental HTTP3" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: HTTP3 support is experimental" >&5 -printf "%s\n" "$as_me: HTTP3 support is experimental" >&6;} - curl_h3_msg="enabled (quiche)" - QUICHE_ENABLED=1 - -printf "%s\n" "#define USE_QUICHE 1" >>confdefs.h - - USE_QUICHE=1 - - ac_fn_c_check_func "$LINENO" "quiche_conn_set_qlog_fd" "ac_cv_func_quiche_conn_set_qlog_fd" -if test "x$ac_cv_func_quiche_conn_set_qlog_fd" = xyes -then : - printf "%s\n" "#define HAVE_QUICHE_CONN_SET_QLOG_FD 1" >>confdefs.h - -fi - - CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_QUICHE" - export CURL_LIBRARY_PATH - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_QUICHE to CURL_LIBRARY_PATH" >&5 -printf "%s\n" "$as_me: Added $DIR_QUICHE to CURL_LIBRARY_PATH" >&6;} -fi - -done - -else $as_nop - as_fn_error $? "couldn't use quiche" "$LINENO" 5 - -fi - - else - if test X"$want_quiche" != Xdefault; then - as_fn_error $? "--with-quiche was specified but could not find quiche pkg-config file." "$LINENO" 5 - fi - fi -fi - - -OPT_MSH3="no" - -if test "x$disable_http" = "xyes" -o "x$USE_NGTCP" = "x1"; then - # without HTTP or with ngtcp2, msh3 is no use - OPT_MSH3="no" -fi - - -# Check whether --with-msh3 was given. -if test ${with_msh3+y} -then : - withval=$with_msh3; OPT_MSH3=$withval -fi - -case "$OPT_MSH3" in - no) - want_msh3="no" - ;; - yes) - want_msh3="default" - want_msh3_path="" - ;; - *) - want_msh3="yes" - want_msh3_path="$withval" - ;; -esac - -if test X"$want_msh3" != Xno; then - - if test "$NGHTTP3_ENABLED" = 1; then - as_fn_error $? "--with-msh3 and --with-ngtcp2 are mutually exclusive" "$LINENO" 5 - fi - - CLEANLDFLAGS="$LDFLAGS" - CLEANCPPFLAGS="$CPPFLAGS" - CLEANLIBS="$LIBS" - - if test -n "$want_msh3_path"; then - LD_MSH3="-L$want_msh3_path/lib" - CPP_MSH3="-I$want_msh3_path/include" - DIR_MSH3="$want_msh3_path/lib" - LDFLAGS="$LDFLAGS $LD_MSH3" - CPPFLAGS="$CPPFLAGS $CPP_MSH3" - fi - LIBS="-lmsh3 $LIBS" - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for MsH3ApiOpen in -lmsh3" >&5 -printf %s "checking for MsH3ApiOpen in -lmsh3... " >&6; } -if test ${ac_cv_lib_msh3_MsH3ApiOpen+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lmsh3 $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char MsH3ApiOpen (); -int main (void) -{ -return MsH3ApiOpen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_msh3_MsH3ApiOpen=yes -else $as_nop - ac_cv_lib_msh3_MsH3ApiOpen=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_msh3_MsH3ApiOpen" >&5 -printf "%s\n" "$ac_cv_lib_msh3_MsH3ApiOpen" >&6; } -if test "x$ac_cv_lib_msh3_MsH3ApiOpen" = xyes -then : - - for ac_header in msh3.h -do : - ac_fn_c_check_header_compile "$LINENO" "msh3.h" "ac_cv_header_msh3_h" "$ac_includes_default" -if test "x$ac_cv_header_msh3_h" = xyes -then : - printf "%s\n" "#define HAVE_MSH3_H 1" >>confdefs.h - curl_h3_msg="enabled (msh3)" - MSH3_ENABLED=1 - -printf "%s\n" "#define USE_MSH3 1" >>confdefs.h - - USE_MSH3=1 - - CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_MSH3" - export CURL_LIBRARY_PATH - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Added $DIR_MSH3 to CURL_LIBRARY_PATH" >&5 -printf "%s\n" "$as_me: Added $DIR_MSH3 to CURL_LIBRARY_PATH" >&6;} -else $as_nop - experimental="$experimental HTTP3" - -fi - -done - -else $as_nop - LDFLAGS=$CLEANLDFLAGS - CPPFLAGS=$CLEANCPPFLAGS - LIBS=$CLEANLIBS - -fi - -fi - - -OPT_ZSH_FPATH=default - -# Check whether --with-zsh-functions-dir was given. -if test ${with_zsh_functions_dir+y} -then : - withval=$with_zsh_functions_dir; OPT_ZSH_FPATH=$withval -fi - -case "$OPT_ZSH_FPATH" in - no) - ;; - default|yes) - ZSH_FUNCTIONS_DIR="$datarootdir/zsh/site-functions" - - ;; - *) - ZSH_FUNCTIONS_DIR="$withval" - - ;; -esac - - -OPT_FISH_FPATH=default - -# Check whether --with-fish-functions-dir was given. -if test ${with_fish_functions_dir+y} -then : - withval=$with_fish_functions_dir; OPT_FISH_FPATH=$withval -fi - -case "$OPT_FISH_FPATH" in - no) - ;; - default|yes) - - if test -n "$PKG_CONFIG"; then - PKGCONFIG="$PKG_CONFIG" - else - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKGCONFIG=$ac_cv_path_PKGCONFIG -if test -n "$PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 -printf "%s\n" "$PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKGCONFIG"; then - ac_pt_PKGCONFIG=$PKGCONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $ac_pt_PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG -if test -n "$ac_pt_PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 -printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_PKGCONFIG" = x; then - PKGCONFIG="no" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKGCONFIG=$ac_pt_PKGCONFIG - fi -else - PKGCONFIG="$ac_cv_path_PKGCONFIG" -fi - - fi - - if test "x$PKGCONFIG" != "xno"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fish options with pkg-config" >&5 -printf %s "checking for fish options with pkg-config... " >&6; } - itexists=` - if test -n ""; then - PKG_CONFIG_LIBDIR="" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --exists fish >/dev/null 2>&1 && echo 1` - - if test -z "$itexists"; then - PKGCONFIG="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 -printf "%s\n" "found" >&6; } - fi - fi - - if test "$PKGCONFIG" != "no" ; then - FISH_FUNCTIONS_DIR="$($PKGCONFIG --variable completionsdir fish)" - else - FISH_FUNCTIONS_DIR="$datarootdir/fish/vendor_completions.d" - fi - - ;; - *) - FISH_FUNCTIONS_DIR="$withval" - - ;; -esac - -ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_sys_types_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_sys_time_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_TIME_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_sys_select_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_SELECT_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_sys_socket_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_SOCKET_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/ioctl.h" "ac_cv_header_sys_ioctl_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_sys_ioctl_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_IOCTL_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/uio.h" "ac_cv_header_sys_uio_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_sys_uio_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_UIO_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "assert.h" "ac_cv_header_assert_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_assert_h" = xyes -then : - printf "%s\n" "#define HAVE_ASSERT_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_unistd_h" = xyes -then : - printf "%s\n" "#define HAVE_UNISTD_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_stdlib_h" = xyes -then : - printf "%s\n" "#define HAVE_STDLIB_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "arpa/inet.h" "ac_cv_header_arpa_inet_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_arpa_inet_h" = xyes -then : - printf "%s\n" "#define HAVE_ARPA_INET_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "net/if.h" "ac_cv_header_net_if_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_net_if_h" = xyes -then : - printf "%s\n" "#define HAVE_NET_IF_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "netinet/in.h" "ac_cv_header_netinet_in_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_netinet_in_h" = xyes -then : - printf "%s\n" "#define HAVE_NETINET_IN_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "netinet/in6.h" "ac_cv_header_netinet_in6_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_netinet_in6_h" = xyes -then : - printf "%s\n" "#define HAVE_NETINET_IN6_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/un.h" "ac_cv_header_sys_un_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_sys_un_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_UN_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "linux/tcp.h" "ac_cv_header_linux_tcp_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_linux_tcp_h" = xyes -then : - printf "%s\n" "#define HAVE_LINUX_TCP_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "netinet/tcp.h" "ac_cv_header_netinet_tcp_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_netinet_tcp_h" = xyes -then : - printf "%s\n" "#define HAVE_NETINET_TCP_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "netinet/udp.h" "ac_cv_header_netinet_udp_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_netinet_udp_h" = xyes -then : - printf "%s\n" "#define HAVE_NETINET_UDP_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "netdb.h" "ac_cv_header_netdb_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_netdb_h" = xyes -then : - printf "%s\n" "#define HAVE_NETDB_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/sockio.h" "ac_cv_header_sys_sockio_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_sys_sockio_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_SOCKIO_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/stat.h" "ac_cv_header_sys_stat_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_sys_stat_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_STAT_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_sys_param_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_PARAM_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "termios.h" "ac_cv_header_termios_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_termios_h" = xyes -then : - printf "%s\n" "#define HAVE_TERMIOS_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "termio.h" "ac_cv_header_termio_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_termio_h" = xyes -then : - printf "%s\n" "#define HAVE_TERMIO_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_fcntl_h" = xyes -then : - printf "%s\n" "#define HAVE_FCNTL_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "io.h" "ac_cv_header_io_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_io_h" = xyes -then : - printf "%s\n" "#define HAVE_IO_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "pwd.h" "ac_cv_header_pwd_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_pwd_h" = xyes -then : - printf "%s\n" "#define HAVE_PWD_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "utime.h" "ac_cv_header_utime_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_utime_h" = xyes -then : - printf "%s\n" "#define HAVE_UTIME_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/utime.h" "ac_cv_header_sys_utime_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_sys_utime_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_UTIME_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/poll.h" "ac_cv_header_sys_poll_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_sys_poll_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_POLL_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "poll.h" "ac_cv_header_poll_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_poll_h" = xyes -then : - printf "%s\n" "#define HAVE_POLL_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "socket.h" "ac_cv_header_socket_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_socket_h" = xyes -then : - printf "%s\n" "#define HAVE_SOCKET_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/resource.h" "ac_cv_header_sys_resource_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_sys_resource_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_RESOURCE_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "libgen.h" "ac_cv_header_libgen_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_libgen_h" = xyes -then : - printf "%s\n" "#define HAVE_LIBGEN_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "locale.h" "ac_cv_header_locale_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_locale_h" = xyes -then : - printf "%s\n" "#define HAVE_LOCALE_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "errno.h" "ac_cv_header_errno_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_errno_h" = xyes -then : - printf "%s\n" "#define HAVE_ERRNO_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "stdbool.h" "ac_cv_header_stdbool_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_stdbool_h" = xyes -then : - printf "%s\n" "#define HAVE_STDBOOL_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "arpa/tftp.h" "ac_cv_header_arpa_tftp_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_arpa_tftp_h" = xyes -then : - printf "%s\n" "#define HAVE_ARPA_TFTP_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/filio.h" "ac_cv_header_sys_filio_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_sys_filio_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_FILIO_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/wait.h" "ac_cv_header_sys_wait_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_sys_wait_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_WAIT_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "setjmp.h" "ac_cv_header_setjmp_h" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif - - -" -if test "x$ac_cv_header_setjmp_h" = xyes -then : - printf "%s\n" "#define HAVE_SETJMP_H 1" >>confdefs.h - -fi - - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 -printf %s "checking for an ANSI C-conforming const... " >&6; } -if test ${ac_cv_c_const+y} -then : - printf %s "(cached) " >&6 -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int main (void) -{ - -#ifndef __cplusplus - /* Ultrix mips cc rejects this sort of thing. */ - typedef int charset[2]; - const charset cs = { 0, 0 }; - /* SunOS 4.1.1 cc rejects this. */ - char const *const *pcpcc; - char **ppc; - /* NEC SVR4.0.2 mips cc rejects this. */ - struct point {int x, y;}; - static struct point const zero = {0,0}; - /* IBM 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"; - pcpcc = &g + (g ? g-g : 0); - /* HPUX 7.0 cc rejects these. */ - ++pcpcc; - ppc = (char**) pcpcc; - pcpcc = (char const *const *) ppc; - { /* SCO 3.2v4 cc rejects this sort of thing. */ - char tx; - char *t = &tx; - char const *s = 0 ? (char *) 0 : (char const *) 0; - - *t++ = 0; - if (s) return 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; - } - { /* IBM XL C 1.02.0.0 rejects this sort of thing, saying - "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ - struct s { int j; const int *ap[3]; } bx; - struct s *b = &bx; b->j = 5; - } - { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ - const int foo = 10; - if (!foo) return 0; - } - return !cs[0] && !zero.x; -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_c_const=yes -else $as_nop - ac_cv_c_const=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 -printf "%s\n" "$ac_cv_c_const" >&6; } -if test $ac_cv_c_const = no; then - -printf "%s\n" "#define const /**/" >>confdefs.h - -fi - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for compiler support of C99 variadic macro style" >&5 -printf %s "checking for compiler support of C99 variadic macro style... " >&6; } -if test ${curl_cv_variadic_macros_c99+y} -then : - printf %s "(cached) " >&6 -else $as_nop - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#define c99_vmacro3(first, ...) fun3(first, __VA_ARGS__) -#define c99_vmacro2(first, ...) fun2(first, __VA_ARGS__) - int fun3(int arg1, int arg2, int arg3); - int fun2(int arg1, int arg2); - int fun3(int arg1, int arg2, int arg3) - { return arg1 + arg2 + arg3; } - int fun2(int arg1, int arg2) - { return arg1 + arg2; } - -int main (void) -{ - - int res3 = c99_vmacro3(1, 2, 3); - int res2 = c99_vmacro2(1, 2); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - curl_cv_variadic_macros_c99="yes" - -else $as_nop - - curl_cv_variadic_macros_c99="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_variadic_macros_c99" >&5 -printf "%s\n" "$curl_cv_variadic_macros_c99" >&6; } - case "$curl_cv_variadic_macros_c99" in - yes) - -printf "%s\n" "#define HAVE_VARIADIC_MACROS_C99 1" >>confdefs.h - - ;; - esac - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for compiler support of old gcc variadic macro style" >&5 -printf %s "checking for compiler support of old gcc variadic macro style... " >&6; } -if test ${curl_cv_variadic_macros_gcc+y} -then : - printf %s "(cached) " >&6 -else $as_nop - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#define gcc_vmacro3(first, args...) fun3(first, args) -#define gcc_vmacro2(first, args...) fun2(first, args) - int fun3(int arg1, int arg2, int arg3); - int fun2(int arg1, int arg2); - int fun3(int arg1, int arg2, int arg3) - { return arg1 + arg2 + arg3; } - int fun2(int arg1, int arg2) - { return arg1 + arg2; } - -int main (void) -{ - - int res3 = gcc_vmacro3(1, 2, 3); - int res2 = gcc_vmacro2(1, 2); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - curl_cv_variadic_macros_gcc="yes" - -else $as_nop - - curl_cv_variadic_macros_gcc="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_variadic_macros_gcc" >&5 -printf "%s\n" "$curl_cv_variadic_macros_gcc" >&6; } - case "$curl_cv_variadic_macros_gcc" in - yes) - -printf "%s\n" "#define HAVE_VARIADIC_MACROS_GCC 1" >>confdefs.h - - ;; - esac - -ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" -if test "x$ac_cv_type_size_t" = xyes -then : - -else $as_nop - -printf "%s\n" "#define size_t unsigned int" >>confdefs.h - -fi - - - - ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_types_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_time_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_TIME_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_socket_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_SOCKET_H 1" >>confdefs.h - -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for struct timeval" >&5 -printf %s "checking for struct timeval... " >&6; } -if test ${curl_cv_struct_timeval+y} -then : - printf %s "(cached) " >&6 -else $as_nop - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#undef inline -#ifdef HAVE_WINDOWS_H -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#ifdef HAVE_WINSOCK2_H -#include -#endif -#endif -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#include -#ifdef HAVE_SYS_SOCKET_H -#include -#endif - -int main (void) -{ - - struct timeval ts; - ts.tv_sec = 0; - ts.tv_usec = 0; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - curl_cv_struct_timeval="yes" - -else $as_nop - - curl_cv_struct_timeval="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_struct_timeval" >&5 -printf "%s\n" "$curl_cv_struct_timeval" >&6; } - case "$curl_cv_struct_timeval" in - yes) - -printf "%s\n" "#define HAVE_STRUCT_TIMEVAL 1" >>confdefs.h - - ;; - esac - - - - if test "x$cross_compiling" != xyes; then - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking run-time libs availability" >&5 -printf %s "checking run-time libs availability... " >&6; } - - case $host_os in - darwin*) - if test "$cross_compiling" = yes -then : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5; } -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int main() -{ - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: fine" >&5 -printf "%s\n" "fine" >&6; } -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5 -printf "%s\n" "failed" >&6; } - as_fn_error $? "one or more libs available at link-time are not available run-time. Libs used at link-time: $LIBS" "$LINENO" 5 - -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - ;; - *) - old=$LD_LIBRARY_PATH - LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old - export LD_LIBRARY_PATH - if test "$cross_compiling" = yes -then : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5; } -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int main() -{ - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: fine" >&5 -printf "%s\n" "fine" >&6; } -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5 -printf "%s\n" "failed" >&6; } - as_fn_error $? "one or more libs available at link-time are not available run-time. Libs used at link-time: $LIBS" "$LINENO" 5 - -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - LD_LIBRARY_PATH=$old # restore - ;; - esac - - - fi - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5 -printf %s "checking size of size_t... " >&6; } - r=0 - for typesize in 8 4 2 16 1; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include - - -int main (void) -{ -switch(0) { - case 0: - case (sizeof(size_t) == $typesize):; - } - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - r=$typesize -else $as_nop - - r=0 -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - if test $r -gt 0; then - break; - fi - done - if test $r -eq 0; then - as_fn_error $? "Failed to find size of size_t" "$LINENO" 5 - fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $r" >&5 -printf "%s\n" "$r" >&6; } - tname=$(echo "ac_cv_sizeof_size_t" | tr A-Z a-z | tr " " "_") - eval "$tname=$r" - - -printf "%s\n" "#define SIZEOF_SIZE_T $r" >>confdefs.h - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 -printf %s "checking size of long... " >&6; } - r=0 - for typesize in 8 4 2 16 1; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include - - -int main (void) -{ -switch(0) { - case 0: - case (sizeof(long) == $typesize):; - } - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - r=$typesize -else $as_nop - - r=0 -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - if test $r -gt 0; then - break; - fi - done - if test $r -eq 0; then - as_fn_error $? "Failed to find size of long" "$LINENO" 5 - fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $r" >&5 -printf "%s\n" "$r" >&6; } - tname=$(echo "ac_cv_sizeof_long" | tr A-Z a-z | tr " " "_") - eval "$tname=$r" - - -printf "%s\n" "#define SIZEOF_LONG $r" >>confdefs.h - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of int" >&5 -printf %s "checking size of int... " >&6; } - r=0 - for typesize in 8 4 2 16 1; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include - - -int main (void) -{ -switch(0) { - case 0: - case (sizeof(int) == $typesize):; - } - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - r=$typesize -else $as_nop - - r=0 -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - if test $r -gt 0; then - break; - fi - done - if test $r -eq 0; then - as_fn_error $? "Failed to find size of int" "$LINENO" 5 - fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $r" >&5 -printf "%s\n" "$r" >&6; } - tname=$(echo "ac_cv_sizeof_int" | tr A-Z a-z | tr " " "_") - eval "$tname=$r" - - -printf "%s\n" "#define SIZEOF_INT $r" >>confdefs.h - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of time_t" >&5 -printf %s "checking size of time_t... " >&6; } - r=0 - for typesize in 8 4 2 16 1; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include - - -int main (void) -{ -switch(0) { - case 0: - case (sizeof(time_t) == $typesize):; - } - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - r=$typesize -else $as_nop - - r=0 -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - if test $r -gt 0; then - break; - fi - done - if test $r -eq 0; then - as_fn_error $? "Failed to find size of time_t" "$LINENO" 5 - fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $r" >&5 -printf "%s\n" "$r" >&6; } - tname=$(echo "ac_cv_sizeof_time_t" | tr A-Z a-z | tr " " "_") - eval "$tname=$r" - - -printf "%s\n" "#define SIZEOF_TIME_T $r" >>confdefs.h - - - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of off_t" >&5 -printf %s "checking size of off_t... " >&6; } - r=0 - for typesize in 8 4 2 16 1; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include - - -int main (void) -{ -switch(0) { - case 0: - case (sizeof(off_t) == $typesize):; - } - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - r=$typesize -else $as_nop - - r=0 -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - if test $r -gt 0; then - break; - fi - done - if test $r -eq 0; then - as_fn_error $? "Failed to find size of off_t" "$LINENO" 5 - fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $r" >&5 -printf "%s\n" "$r" >&6; } - tname=$(echo "ac_cv_sizeof_off_t" | tr A-Z a-z | tr " " "_") - eval "$tname=$r" - - -printf "%s\n" "#define SIZEOF_OFF_T $r" >>confdefs.h - - - - -o=$CPPFLAGS -CPPFLAGS="-I$srcdir/include $CPPFLAGS" - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of curl_off_t" >&5 -printf %s "checking size of curl_off_t... " >&6; } - r=0 - for typesize in 8 4 2 16 1; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include - -#include - - -int main (void) -{ -switch(0) { - case 0: - case (sizeof(curl_off_t) == $typesize):; - } - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - r=$typesize -else $as_nop - - r=0 -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - if test $r -gt 0; then - break; - fi - done - if test $r -eq 0; then - as_fn_error $? "Failed to find size of curl_off_t" "$LINENO" 5 - fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $r" >&5 -printf "%s\n" "$r" >&6; } - tname=$(echo "ac_cv_sizeof_curl_off_t" | tr A-Z a-z | tr " " "_") - eval "$tname=$r" - - -printf "%s\n" "#define SIZEOF_CURL_OFF_T $r" >>confdefs.h - - - -CPPFLAGS=$o - -ac_fn_c_check_type "$LINENO" "long long" "ac_cv_type_long_long" "$ac_includes_default" -if test "x$ac_cv_type_long_long" = xyes -then : - -printf "%s\n" "#define HAVE_LONGLONG 1" >>confdefs.h - - longlong="yes" - -fi - - - -# check for ssize_t -ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" -if test "x$ac_cv_type_ssize_t" = xyes -then : - -else $as_nop - -printf "%s\n" "#define ssize_t int" >>confdefs.h - -fi - - -# check for bool type -ac_fn_c_check_type "$LINENO" "bool" "ac_cv_type_bool" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_STDBOOL_H -#include -#endif - -" -if test "x$ac_cv_type_bool" = xyes -then : - - -printf "%s\n" "#define HAVE_BOOL_T 1" >>confdefs.h - - -fi - - -# check for sa_family_t -ac_fn_c_check_type "$LINENO" "sa_family_t" "ac_cv_type_sa_family_t" " -#ifdef HAVE_SYS_SOCKET_H -#include -#endif - -" -if test "x$ac_cv_type_sa_family_t" = xyes -then : - -printf "%s\n" "#define CURL_SA_FAMILY_T sa_family_t" >>confdefs.h - -else $as_nop - - # The windows name? - ac_fn_c_check_type "$LINENO" "ADDRESS_FAMILY" "ac_cv_type_ADDRESS_FAMILY" " -#ifdef HAVE_SYS_SOCKET_H -#include -#endif - -" -if test "x$ac_cv_type_ADDRESS_FAMILY" = xyes -then : - -printf "%s\n" "#define CURL_SA_FAMILY_T ADDRESS_FAMILY" >>confdefs.h - -else $as_nop - -printf "%s\n" "#define CURL_SA_FAMILY_T unsigned short" >>confdefs.h - -fi - - -fi - - -# check for suseconds_t -ac_fn_c_check_type "$LINENO" "suseconds_t" "ac_cv_type_suseconds_t" " -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif - -" -if test "x$ac_cv_type_suseconds_t" = xyes -then : - - -printf "%s\n" "#define HAVE_SUSECONDS_T 1" >>confdefs.h - - -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if time_t is unsigned" >&5 -printf %s "checking if time_t is unsigned... " >&6; } - - case $host_os in - darwin*) - if test "$cross_compiling" = yes -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include - #include - time_t t = -1; - return (t > 0); - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_TIME_T_UNSIGNED 1" >>confdefs.h - - -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - ;; - *) - old=$LD_LIBRARY_PATH - LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old - export LD_LIBRARY_PATH - if test "$cross_compiling" = yes -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include - #include - time_t t = -1; - return (t > 0); - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_TIME_T_UNSIGNED 1" >>confdefs.h - - -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - LD_LIBRARY_PATH=$old # restore - ;; - esac - - - -curl_includes_poll="\ -/* includes start */ -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_POLL_H -# include -#endif -#ifdef HAVE_SYS_POLL_H -# include -#endif -/* includes end */" - ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$curl_includes_poll -" -if test "x$ac_cv_header_sys_types_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "poll.h" "ac_cv_header_poll_h" "$curl_includes_poll -" -if test "x$ac_cv_header_poll_h" = xyes -then : - printf "%s\n" "#define HAVE_POLL_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/poll.h" "ac_cv_header_sys_poll_h" "$curl_includes_poll -" -if test "x$ac_cv_header_sys_poll_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_POLL_H 1" >>confdefs.h - -fi - - - - # - tst_poll_events_macro_defined="unknown" - # - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_poll - -int main (void) -{ - -#if defined(events) || defined(revents) - return 0; -#else - force compilation error -#endif - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - tst_poll_events_macro_defined="yes" - -else $as_nop - - tst_poll_events_macro_defined="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - # - if test "$tst_poll_events_macro_defined" = "yes"; then - if test "x$ac_cv_header_sys_poll_h" = "xyes"; then - -cat >>confdefs.h <<_EOF -#define CURL_PULL_SYS_POLL_H 1 -_EOF - - fi - fi - # - - - - ac_fn_c_check_type "$LINENO" "in_addr_t" "ac_cv_type_in_addr_t" " -#undef inline -#ifdef HAVE_WINDOWS_H -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#ifdef HAVE_WINSOCK2_H -#include -#endif -#else -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_ARPA_INET_H -#include -#endif -#endif - -" -if test "x$ac_cv_type_in_addr_t" = xyes -then : - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for in_addr_t equivalent" >&5 -printf %s "checking for in_addr_t equivalent... " >&6; } -if test ${curl_cv_in_addr_t_equiv+y} -then : - printf %s "(cached) " >&6 -else $as_nop - - curl_cv_in_addr_t_equiv="unknown" - for t in "unsigned long" int size_t unsigned long; do - if test "$curl_cv_in_addr_t_equiv" = "unknown"; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#undef inline -#ifdef HAVE_WINDOWS_H -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#ifdef HAVE_WINSOCK2_H -#include -#endif -#else -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_ARPA_INET_H -#include -#endif -#endif - -int main (void) -{ - - $t data = inet_addr ("1.2.3.4"); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - curl_cv_in_addr_t_equiv="$t" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - fi - done - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_in_addr_t_equiv" >&5 -printf "%s\n" "$curl_cv_in_addr_t_equiv" >&6; } - case "$curl_cv_in_addr_t_equiv" in - unknown) - as_fn_error $? "Cannot find a type to use in place of in_addr_t" "$LINENO" 5 - ;; - *) - -printf "%s\n" "#define in_addr_t $curl_cv_in_addr_t_equiv" >>confdefs.h - - ;; - esac - -fi - - - - - ac_fn_c_check_type "$LINENO" "struct sockaddr_storage" "ac_cv_type_struct_sockaddr_storage" " -#undef inline -#ifdef HAVE_WINDOWS_H -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#ifdef HAVE_WINSOCK2_H -#include -#endif -#else -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_ARPA_INET_H -#include -#endif -#endif - -" -if test "x$ac_cv_type_struct_sockaddr_storage" = xyes -then : - -printf "%s\n" "#define HAVE_STRUCT_SOCKADDR_STORAGE 1" >>confdefs.h - -fi - - - - - ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_select_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_SELECT_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_socket_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_SOCKET_H 1" >>confdefs.h - -fi - - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for select" >&5 -printf %s "checking for select... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#undef inline -#ifdef HAVE_WINDOWS_H -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#ifdef HAVE_WINSOCK2_H -#include -#endif -#endif -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#include -#ifndef HAVE_WINDOWS_H -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -$curl_includes_bsdsocket -#endif - -int main (void) -{ - - select(0, 0, 0, 0, 0); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - curl_cv_select="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_select="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$curl_cv_select" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking types of args and return type for select" >&5 -printf %s "checking types of args and return type for select... " >&6; } -if test ${curl_cv_func_select_args+y} -then : - printf %s "(cached) " >&6 -else $as_nop - - curl_cv_func_select_args="unknown" - for sel_retv in 'int' 'ssize_t'; do - for sel_arg1 in 'int' 'ssize_t' 'size_t' 'unsigned long int' 'unsigned int'; do - for sel_arg234 in 'fd_set *' 'int *' 'void *'; do - for sel_arg5 in 'struct timeval *' 'const struct timeval *'; do - if test "$curl_cv_func_select_args" = "unknown"; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#undef inline -#ifdef HAVE_WINDOWS_H -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#ifdef HAVE_WINSOCK2_H -#include -#endif -#define SELECTCALLCONV PASCAL -#endif -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#include -#ifndef HAVE_WINDOWS_H -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -$curl_includes_bsdsocket -#define SELECTCALLCONV -#endif -#ifndef HAVE_STRUCT_TIMEVAL - struct timeval { - long tv_sec; - long tv_usec; - }; -#endif -#ifndef HAVE_PROTO_BSDSOCKET_H - extern $sel_retv SELECTCALLCONV - select($sel_arg1, - $sel_arg234, - $sel_arg234, - $sel_arg234, - $sel_arg5); -#endif - -int main (void) -{ - - $sel_arg1 nfds=0; - $sel_arg234 rfds=0; - $sel_arg234 wfds=0; - $sel_arg234 efds=0; - $sel_retv res = select(nfds, rfds, wfds, efds, 0); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - curl_cv_func_select_args="$sel_arg1,$sel_arg234,$sel_arg5,$sel_retv" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - done - done - done - done - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_func_select_args" >&5 -printf "%s\n" "$curl_cv_func_select_args" >&6; } # AC-CACHE-CHECK - if test "$curl_cv_func_select_args" = "unknown"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Cannot find proper types to use for select args" >&5 -printf "%s\n" "$as_me: WARNING: Cannot find proper types to use for select args" >&2;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: HAVE_SELECT will not be defined" >&5 -printf "%s\n" "$as_me: WARNING: HAVE_SELECT will not be defined" >&2;} - else - select_prev_IFS=$IFS; IFS=',' - set dummy `echo "$curl_cv_func_select_args" | sed 's/\*/\*/g'` - IFS=$select_prev_IFS - shift - # - sel_qual_type_arg5=$3 - # - -printf "%s\n" "#define SELECT_TYPE_ARG1 $1" >>confdefs.h - - -printf "%s\n" "#define SELECT_TYPE_ARG234 $2" >>confdefs.h - - -printf "%s\n" "#define SELECT_TYPE_RETV $4" >>confdefs.h - - # - prev_sh_opts=$- - # - case $prev_sh_opts in - *f*) - ;; - *) - set -f - ;; - esac - # - case "$sel_qual_type_arg5" in - const*) - sel_qual_arg5=const - sel_type_arg5=`echo $sel_qual_type_arg5 | sed 's/^const //'` - ;; - *) - sel_qual_arg5= - sel_type_arg5=$sel_qual_type_arg5 - ;; - esac - # - -printf "%s\n" "#define SELECT_QUAL_ARG5 $sel_qual_arg5" >>confdefs.h - - -printf "%s\n" "#define SELECT_TYPE_ARG5 $sel_type_arg5" >>confdefs.h - - # - case $prev_sh_opts in - *f*) - ;; - *) - set +f - ;; - esac - # - -printf "%s\n" "#define HAVE_SELECT 1" >>confdefs.h - - curl_cv_func_select="yes" - fi - fi - - - - ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_types_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_socket_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_SOCKET_H 1" >>confdefs.h - -fi - - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for recv" >&5 -printf %s "checking for recv... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#undef inline -#ifdef HAVE_WINDOWS_H -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#ifdef HAVE_WINSOCK2_H -#include -#endif -#else -$curl_includes_bsdsocket -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#endif - -int main (void) -{ - - recv(0, 0, 0, 0); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - curl_cv_recv="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_recv="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$curl_cv_recv" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking types of args and return type for recv" >&5 -printf %s "checking types of args and return type for recv... " >&6; } -if test ${curl_cv_func_recv_args+y} -then : - printf %s "(cached) " >&6 -else $as_nop - - curl_cv_func_recv_args="unknown" - for recv_retv in 'int' 'ssize_t'; do - for recv_arg1 in 'int' 'ssize_t' 'SOCKET'; do - for recv_arg2 in 'char *' 'void *'; do - for recv_arg3 in 'size_t' 'int' 'socklen_t' 'unsigned int'; do - for recv_arg4 in 'int' 'unsigned int'; do - if test "$curl_cv_func_recv_args" = "unknown"; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#undef inline -#ifdef HAVE_WINDOWS_H -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#ifdef HAVE_WINSOCK2_H -#include -#endif -#define RECVCALLCONV PASCAL -#else -$curl_includes_bsdsocket -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#define RECVCALLCONV -#endif -#ifndef HAVE_PROTO_BSDSOCKET_H - extern $recv_retv RECVCALLCONV - recv($recv_arg1, $recv_arg2, $recv_arg3, $recv_arg4); -#endif - -int main (void) -{ - - $recv_arg1 s=0; - $recv_arg2 buf=0; - $recv_arg3 len=0; - $recv_arg4 flags=0; - $recv_retv res = recv(s, buf, len, flags); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - curl_cv_func_recv_args="$recv_arg1,$recv_arg2,$recv_arg3,$recv_arg4,$recv_retv" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - done - done - done - done - done - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_func_recv_args" >&5 -printf "%s\n" "$curl_cv_func_recv_args" >&6; } # AC-CACHE-CHECK - if test "$curl_cv_func_recv_args" = "unknown"; then - as_fn_error $? "Cannot find proper types to use for recv args" "$LINENO" 5 - else - recv_prev_IFS=$IFS; IFS=',' - set dummy `echo "$curl_cv_func_recv_args" | sed 's/\*/\*/g'` - IFS=$recv_prev_IFS - shift - # - -printf "%s\n" "#define RECV_TYPE_ARG1 $1" >>confdefs.h - - -printf "%s\n" "#define RECV_TYPE_ARG2 $2" >>confdefs.h - - -printf "%s\n" "#define RECV_TYPE_ARG3 $3" >>confdefs.h - - -printf "%s\n" "#define RECV_TYPE_ARG4 $4" >>confdefs.h - - -printf "%s\n" "#define RECV_TYPE_RETV $5" >>confdefs.h - - # - -printf "%s\n" "#define HAVE_RECV 1" >>confdefs.h - - curl_cv_func_recv="yes" - fi - else - as_fn_error $? "Unable to link function recv" "$LINENO" 5 - fi - - - ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_types_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_socket_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_SOCKET_H 1" >>confdefs.h - -fi - - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for send" >&5 -printf %s "checking for send... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#undef inline -#ifdef HAVE_WINDOWS_H -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#ifdef HAVE_WINSOCK2_H -#include -#endif -#else -$curl_includes_bsdsocket -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#endif - -int main (void) -{ - - send(0, 0, 0, 0); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - curl_cv_send="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_send="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$curl_cv_send" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking types of args and return type for send" >&5 -printf %s "checking types of args and return type for send... " >&6; } -if test ${curl_cv_func_send_args+y} -then : - printf %s "(cached) " >&6 -else $as_nop - - curl_cv_func_send_args="unknown" - for send_retv in 'int' 'ssize_t'; do - for send_arg1 in 'int' 'ssize_t' 'SOCKET'; do - for send_arg2 in 'char *' 'void *' 'const char *' 'const void *'; do - for send_arg3 in 'size_t' 'int' 'socklen_t' 'unsigned int'; do - for send_arg4 in 'int' 'unsigned int'; do - if test "$curl_cv_func_send_args" = "unknown"; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#undef inline -#ifdef HAVE_WINDOWS_H -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#ifdef HAVE_WINSOCK2_H -#include -#endif -#define SENDCALLCONV PASCAL -#else -$curl_includes_bsdsocket -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#define SENDCALLCONV -#endif -#ifndef HAVE_PROTO_BSDSOCKET_H - extern $send_retv SENDCALLCONV - send($send_arg1, $send_arg2, $send_arg3, $send_arg4); -#endif - -int main (void) -{ - - $send_arg1 s=0; - $send_arg3 len=0; - $send_arg4 flags=0; - $send_retv res = send(s, 0, len, flags); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - curl_cv_func_send_args="$send_arg1,$send_arg2,$send_arg3,$send_arg4,$send_retv" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - done - done - done - done - done - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_func_send_args" >&5 -printf "%s\n" "$curl_cv_func_send_args" >&6; } # AC-CACHE-CHECK - if test "$curl_cv_func_send_args" = "unknown"; then - as_fn_error $? "Cannot find proper types to use for send args" "$LINENO" 5 - else - send_prev_IFS=$IFS; IFS=',' - set dummy `echo "$curl_cv_func_send_args" | sed 's/\*/\*/g'` - IFS=$send_prev_IFS - shift - # - send_qual_type_arg2=$2 - # - -printf "%s\n" "#define SEND_TYPE_ARG1 $1" >>confdefs.h - - -printf "%s\n" "#define SEND_TYPE_ARG3 $3" >>confdefs.h - - -printf "%s\n" "#define SEND_TYPE_ARG4 $4" >>confdefs.h - - -printf "%s\n" "#define SEND_TYPE_RETV $5" >>confdefs.h - - # - prev_sh_opts=$- - # - case $prev_sh_opts in - *f*) - ;; - *) - set -f - ;; - esac - # - case "$send_qual_type_arg2" in - const*) - send_qual_arg2=const - send_type_arg2=`echo $send_qual_type_arg2 | sed 's/^const //'` - ;; - *) - send_qual_arg2= - send_type_arg2=$send_qual_type_arg2 - ;; - esac - # - -printf "%s\n" "#define SEND_QUAL_ARG2 $send_qual_arg2" >>confdefs.h - - -printf "%s\n" "#define SEND_TYPE_ARG2 $send_type_arg2" >>confdefs.h - - # - case $prev_sh_opts in - *f*) - ;; - *) - set +f - ;; - esac - # - -printf "%s\n" "#define HAVE_SEND 1" >>confdefs.h - - curl_cv_func_send="yes" - fi - else - as_fn_error $? "Unable to link function send" "$LINENO" 5 - fi - - - ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_types_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_socket_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_SOCKET_H 1" >>confdefs.h - -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for MSG_NOSIGNAL" >&5 -printf %s "checking for MSG_NOSIGNAL... " >&6; } -if test ${curl_cv_msg_nosignal+y} -then : - printf %s "(cached) " >&6 -else $as_nop - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#undef inline -#ifdef HAVE_WINDOWS_H -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#ifdef HAVE_WINSOCK2_H -#include -#endif -#else -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#endif - -int main (void) -{ - - int flag=MSG_NOSIGNAL; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - curl_cv_msg_nosignal="yes" - -else $as_nop - - curl_cv_msg_nosignal="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_msg_nosignal" >&5 -printf "%s\n" "$curl_cv_msg_nosignal" >&6; } - case "$curl_cv_msg_nosignal" in - yes) - -printf "%s\n" "#define HAVE_MSG_NOSIGNAL 1" >>confdefs.h - - ;; - esac - - - -curl_includes_unistd="\ -/* includes start */ -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif -/* includes end */" - ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$curl_includes_unistd -" -if test "x$ac_cv_header_sys_types_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$curl_includes_unistd -" -if test "x$ac_cv_header_unistd_h" = xyes -then : - printf "%s\n" "#define HAVE_UNISTD_H 1" >>confdefs.h - -fi - - - - # - tst_links_alarm="unknown" - tst_proto_alarm="unknown" - tst_compi_alarm="unknown" - tst_allow_alarm="unknown" - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if alarm can be linked" >&5 -printf %s "checking if alarm can be linked... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#define alarm innocuous_alarm -#ifdef __STDC__ -# include -#else -# include -#endif -#undef alarm -#ifdef __cplusplus -extern "C" -#endif -char alarm (); -#if defined __stub_alarm || defined __stub___alarm -choke me -#endif - -int main (void) -{ -return alarm (); - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_links_alarm="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_links_alarm="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$tst_links_alarm" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if alarm is prototyped" >&5 -printf %s "checking if alarm is prototyped... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - $curl_includes_unistd - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "alarm" >/dev/null 2>&1 -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_proto_alarm="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_proto_alarm="no" - -fi -rm -rf conftest* - - fi - # - if test "$tst_proto_alarm" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if alarm is compilable" >&5 -printf %s "checking if alarm is compilable... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_unistd - -int main (void) -{ - - if(0 != alarm(0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_alarm="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_alarm="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - # - if test "$tst_compi_alarm" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if alarm usage allowed" >&5 -printf %s "checking if alarm usage allowed... " >&6; } - if test "x$curl_disallow_alarm" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_alarm="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_alarm="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if alarm might be used" >&5 -printf %s "checking if alarm might be used... " >&6; } - if test "$tst_links_alarm" = "yes" && - test "$tst_proto_alarm" = "yes" && - test "$tst_compi_alarm" = "yes" && - test "$tst_allow_alarm" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_ALARM 1" >>confdefs.h - - curl_cv_func_alarm="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_alarm="no" - fi - - -curl_includes_string="\ -/* includes start */ -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_STRING_H -# include -#endif -#ifdef HAVE_STRINGS_H -# include -#endif -/* includes end */" - ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$curl_includes_string -" -if test "x$ac_cv_header_sys_types_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "string.h" "ac_cv_header_string_h" "$curl_includes_string -" -if test "x$ac_cv_header_string_h" = xyes -then : - printf "%s\n" "#define HAVE_STRING_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "strings.h" "ac_cv_header_strings_h" "$curl_includes_string -" -if test "x$ac_cv_header_strings_h" = xyes -then : - printf "%s\n" "#define HAVE_STRINGS_H 1" >>confdefs.h - -fi - - - -curl_includes_libgen="\ -/* includes start */ -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_LIBGEN_H -# include -#endif -/* includes end */" - ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$curl_includes_libgen -" -if test "x$ac_cv_header_sys_types_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "libgen.h" "ac_cv_header_libgen_h" "$curl_includes_libgen -" -if test "x$ac_cv_header_libgen_h" = xyes -then : - printf "%s\n" "#define HAVE_LIBGEN_H 1" >>confdefs.h - -fi - - - - # - tst_links_basename="unknown" - tst_proto_basename="unknown" - tst_compi_basename="unknown" - tst_allow_basename="unknown" - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if basename can be linked" >&5 -printf %s "checking if basename can be linked... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#define basename innocuous_basename -#ifdef __STDC__ -# include -#else -# include -#endif -#undef basename -#ifdef __cplusplus -extern "C" -#endif -char basename (); -#if defined __stub_basename || defined __stub___basename -choke me -#endif - -int main (void) -{ -return basename (); - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_links_basename="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_links_basename="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$tst_links_basename" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if basename is prototyped" >&5 -printf %s "checking if basename is prototyped... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - $curl_includes_string - $curl_includes_libgen - $curl_includes_unistd - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "basename" >/dev/null 2>&1 -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_proto_basename="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_proto_basename="no" - -fi -rm -rf conftest* - - fi - # - if test "$tst_proto_basename" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if basename is compilable" >&5 -printf %s "checking if basename is compilable... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_string - $curl_includes_libgen - $curl_includes_unistd - -int main (void) -{ - - if(0 != basename(0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_basename="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_basename="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - # - if test "$tst_compi_basename" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if basename usage allowed" >&5 -printf %s "checking if basename usage allowed... " >&6; } - if test "x$curl_disallow_basename" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_basename="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_basename="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if basename might be used" >&5 -printf %s "checking if basename might be used... " >&6; } - if test "$tst_links_basename" = "yes" && - test "$tst_proto_basename" = "yes" && - test "$tst_compi_basename" = "yes" && - test "$tst_allow_basename" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_BASENAME 1" >>confdefs.h - - curl_cv_func_basename="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_basename="no" - fi - - -curl_includes_socket="\ -/* includes start */ -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SOCKET_H -# include -#endif -/* includes end */" - ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$curl_includes_socket -" -if test "x$ac_cv_header_sys_types_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "socket.h" "ac_cv_header_socket_h" "$curl_includes_socket -" -if test "x$ac_cv_header_socket_h" = xyes -then : - printf "%s\n" "#define HAVE_SOCKET_H 1" >>confdefs.h - -fi - - - - # - tst_links_closesocket="unknown" - tst_proto_closesocket="unknown" - tst_compi_closesocket="unknown" - tst_allow_closesocket="unknown" - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if closesocket can be linked" >&5 -printf %s "checking if closesocket can be linked... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_winsock2 - $curl_includes_socket - -int main (void) -{ - - if(0 != closesocket(0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_links_closesocket="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_links_closesocket="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$tst_links_closesocket" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if closesocket is prototyped" >&5 -printf %s "checking if closesocket is prototyped... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - $curl_includes_winsock2 - $curl_includes_socket - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "closesocket" >/dev/null 2>&1 -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_proto_closesocket="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_proto_closesocket="no" - -fi -rm -rf conftest* - - fi - # - if test "$tst_proto_closesocket" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if closesocket is compilable" >&5 -printf %s "checking if closesocket is compilable... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_winsock2 - $curl_includes_socket - -int main (void) -{ - - if(0 != closesocket(0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_closesocket="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_closesocket="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - # - if test "$tst_compi_closesocket" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if closesocket usage allowed" >&5 -printf %s "checking if closesocket usage allowed... " >&6; } - if test "x$curl_disallow_closesocket" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_closesocket="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_closesocket="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if closesocket might be used" >&5 -printf %s "checking if closesocket might be used... " >&6; } - if test "$tst_links_closesocket" = "yes" && - test "$tst_proto_closesocket" = "yes" && - test "$tst_compi_closesocket" = "yes" && - test "$tst_allow_closesocket" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_CLOSESOCKET 1" >>confdefs.h - - curl_cv_func_closesocket="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_closesocket="no" - fi - - -curl_includes_sys_socket="\ -/* includes start */ -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_SOCKET_H -# include -#endif -/* includes end */" - ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$curl_includes_sys_socket -" -if test "x$ac_cv_header_sys_types_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$curl_includes_sys_socket -" -if test "x$ac_cv_header_sys_socket_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_SOCKET_H 1" >>confdefs.h - -fi - - - - # - tst_links_closesocket_camel="unknown" - tst_proto_closesocket_camel="unknown" - tst_compi_closesocket_camel="unknown" - tst_allow_closesocket_camel="unknown" - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if CloseSocket can be linked" >&5 -printf %s "checking if CloseSocket can be linked... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_bsdsocket - $curl_includes_sys_socket - -int main (void) -{ - - if(0 != CloseSocket(0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_links_closesocket_camel="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_links_closesocket_camel="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$tst_links_closesocket_camel" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if CloseSocket is prototyped" >&5 -printf %s "checking if CloseSocket is prototyped... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - $curl_includes_bsdsocket - $curl_includes_sys_socket - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "CloseSocket" >/dev/null 2>&1 -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_proto_closesocket_camel="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_proto_closesocket_camel="no" - -fi -rm -rf conftest* - - fi - # - if test "$tst_proto_closesocket_camel" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if CloseSocket is compilable" >&5 -printf %s "checking if CloseSocket is compilable... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_bsdsocket - $curl_includes_sys_socket - -int main (void) -{ - - if(0 != CloseSocket(0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_closesocket_camel="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_closesocket_camel="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - # - if test "$tst_compi_closesocket_camel" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if CloseSocket usage allowed" >&5 -printf %s "checking if CloseSocket usage allowed... " >&6; } - if test "x$curl_disallow_closesocket_camel" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_closesocket_camel="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_closesocket_camel="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if CloseSocket might be used" >&5 -printf %s "checking if CloseSocket might be used... " >&6; } - if test "$tst_links_closesocket_camel" = "yes" && - test "$tst_proto_closesocket_camel" = "yes" && - test "$tst_compi_closesocket_camel" = "yes" && - test "$tst_allow_closesocket_camel" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_CLOSESOCKET_CAMEL 1" >>confdefs.h - - curl_cv_func_closesocket_camel="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_closesocket_camel="no" - fi - - - # - tst_links_connect="unknown" - tst_proto_connect="unknown" - tst_compi_connect="unknown" - tst_allow_connect="unknown" - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if connect can be linked" >&5 -printf %s "checking if connect can be linked... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_winsock2 - $curl_includes_bsdsocket - $curl_includes_sys_socket - $curl_includes_socket - -int main (void) -{ - - if(0 != connect(0, 0, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_links_connect="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_links_connect="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$tst_links_connect" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if connect is prototyped" >&5 -printf %s "checking if connect is prototyped... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - $curl_includes_winsock2 - $curl_includes_bsdsocket - $curl_includes_sys_socket - $curl_includes_socket - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "connect" >/dev/null 2>&1 -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_proto_connect="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_proto_connect="no" - -fi -rm -rf conftest* - - fi - # - if test "$tst_proto_connect" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if connect is compilable" >&5 -printf %s "checking if connect is compilable... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_winsock2 - $curl_includes_bsdsocket - $curl_includes_sys_socket - $curl_includes_socket - -int main (void) -{ - - if(0 != connect(0, 0, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_connect="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_connect="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - # - if test "$tst_compi_connect" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if connect usage allowed" >&5 -printf %s "checking if connect usage allowed... " >&6; } - if test "x$curl_disallow_connect" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_connect="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_connect="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if connect might be used" >&5 -printf %s "checking if connect might be used... " >&6; } - if test "$tst_links_connect" = "yes" && - test "$tst_proto_connect" = "yes" && - test "$tst_compi_connect" = "yes" && - test "$tst_allow_connect" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_CONNECT 1" >>confdefs.h - - curl_cv_func_connect="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_connect="no" - fi - - -curl_includes_fcntl="\ -/* includes start */ -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif -#ifdef HAVE_FCNTL_H -# include -#endif -/* includes end */" - ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$curl_includes_fcntl -" -if test "x$ac_cv_header_sys_types_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$curl_includes_fcntl -" -if test "x$ac_cv_header_unistd_h" = xyes -then : - printf "%s\n" "#define HAVE_UNISTD_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" "$curl_includes_fcntl -" -if test "x$ac_cv_header_fcntl_h" = xyes -then : - printf "%s\n" "#define HAVE_FCNTL_H 1" >>confdefs.h - -fi - - - - # - tst_links_fcntl="unknown" - tst_proto_fcntl="unknown" - tst_compi_fcntl="unknown" - tst_allow_fcntl="unknown" - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if fcntl can be linked" >&5 -printf %s "checking if fcntl can be linked... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#define fcntl innocuous_fcntl -#ifdef __STDC__ -# include -#else -# include -#endif -#undef fcntl -#ifdef __cplusplus -extern "C" -#endif -char fcntl (); -#if defined __stub_fcntl || defined __stub___fcntl -choke me -#endif - -int main (void) -{ -return fcntl (); - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_links_fcntl="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_links_fcntl="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$tst_links_fcntl" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if fcntl is prototyped" >&5 -printf %s "checking if fcntl is prototyped... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - $curl_includes_fcntl - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "fcntl" >/dev/null 2>&1 -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_proto_fcntl="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_proto_fcntl="no" - -fi -rm -rf conftest* - - fi - # - if test "$tst_proto_fcntl" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if fcntl is compilable" >&5 -printf %s "checking if fcntl is compilable... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_fcntl - -int main (void) -{ - - if(0 != fcntl(0, 0, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_fcntl="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_fcntl="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - # - if test "$tst_compi_fcntl" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if fcntl usage allowed" >&5 -printf %s "checking if fcntl usage allowed... " >&6; } - if test "x$curl_disallow_fcntl" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_fcntl="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_fcntl="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if fcntl might be used" >&5 -printf %s "checking if fcntl might be used... " >&6; } - if test "$tst_links_fcntl" = "yes" && - test "$tst_proto_fcntl" = "yes" && - test "$tst_compi_fcntl" = "yes" && - test "$tst_allow_fcntl" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_FCNTL 1" >>confdefs.h - - curl_cv_func_fcntl="yes" - - # - tst_compi_fcntl_o_nonblock="unknown" - tst_allow_fcntl_o_nonblock="unknown" - # - case $host_os in - sunos4* | aix3*) - curl_disallow_fcntl_o_nonblock="yes" - ;; - esac - # - if test "$curl_cv_func_fcntl" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if fcntl O_NONBLOCK is compilable" >&5 -printf %s "checking if fcntl O_NONBLOCK is compilable... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_fcntl - -int main (void) -{ - - int flags = 0; - if(0 != fcntl(0, F_SETFL, flags | O_NONBLOCK)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_fcntl_o_nonblock="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_fcntl_o_nonblock="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - # - if test "$tst_compi_fcntl_o_nonblock" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if fcntl O_NONBLOCK usage allowed" >&5 -printf %s "checking if fcntl O_NONBLOCK usage allowed... " >&6; } - if test "x$curl_disallow_fcntl_o_nonblock" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_fcntl_o_nonblock="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_fcntl_o_nonblock="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if fcntl O_NONBLOCK might be used" >&5 -printf %s "checking if fcntl O_NONBLOCK might be used... " >&6; } - if test "$tst_compi_fcntl_o_nonblock" = "yes" && - test "$tst_allow_fcntl_o_nonblock" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_FCNTL_O_NONBLOCK 1" >>confdefs.h - - curl_cv_func_fcntl_o_nonblock="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_fcntl_o_nonblock="no" - fi - - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_fcntl="no" - fi - - -curl_includes_ws2tcpip="\ -/* includes start */ -#ifdef HAVE_WINDOWS_H -# ifndef WIN32_LEAN_AND_MEAN -# define WIN32_LEAN_AND_MEAN -# endif -# include -# ifdef HAVE_WINSOCK2_H -# include -# ifdef HAVE_WS2TCPIP_H -# include -# endif -# endif -#endif -/* includes end */" - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for windows.h" >&5 -printf %s "checking for windows.h... " >&6; } -if test ${curl_cv_header_windows_h+y} -then : - printf %s "(cached) " >&6 -else $as_nop - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#undef inline -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include - -int main (void) -{ - -#if defined(__CYGWIN__) || defined(__CEGCC__) - HAVE_WINDOWS_H shall not be defined. -#else - int dummy=2*WINVER; -#endif - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - curl_cv_header_windows_h="yes" - -else $as_nop - - curl_cv_header_windows_h="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_header_windows_h" >&5 -printf "%s\n" "$curl_cv_header_windows_h" >&6; } - case "$curl_cv_header_windows_h" in - yes) - -printf "%s\n" "#define HAVE_WINDOWS_H 1" >>confdefs.h - - ;; - esac - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for winsock2.h" >&5 -printf %s "checking for winsock2.h... " >&6; } -if test ${curl_cv_header_winsock2_h+y} -then : - printf %s "(cached) " >&6 -else $as_nop - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#undef inline -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#include - -int main (void) -{ - -#if defined(__CYGWIN__) || defined(__CEGCC__) || defined(__MINGW32CE__) - HAVE_WINSOCK2_H shall not be defined. -#else - int dummy=2*IPPROTO_ESP; -#endif - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - curl_cv_header_winsock2_h="yes" - -else $as_nop - - curl_cv_header_winsock2_h="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_header_winsock2_h" >&5 -printf "%s\n" "$curl_cv_header_winsock2_h" >&6; } - case "$curl_cv_header_winsock2_h" in - yes) - -printf "%s\n" "#define HAVE_WINSOCK2_H 1" >>confdefs.h - - ;; - esac - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ws2tcpip.h" >&5 -printf %s "checking for ws2tcpip.h... " >&6; } -if test ${curl_cv_header_ws2tcpip_h+y} -then : - printf %s "(cached) " >&6 -else $as_nop - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#undef inline -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#include -#include - -int main (void) -{ - -#if defined(__CYGWIN__) || defined(__CEGCC__) || defined(__MINGW32CE__) - HAVE_WS2TCPIP_H shall not be defined. -#else - int dummy=2*IP_PKTINFO; -#endif - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - curl_cv_header_ws2tcpip_h="yes" - -else $as_nop - - curl_cv_header_ws2tcpip_h="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $curl_cv_header_ws2tcpip_h" >&5 -printf "%s\n" "$curl_cv_header_ws2tcpip_h" >&6; } - case "$curl_cv_header_ws2tcpip_h" in - yes) - -printf "%s\n" "#define HAVE_WS2TCPIP_H 1" >>confdefs.h - - ;; - esac - - - -curl_includes_netdb="\ -/* includes start */ -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_NETDB_H -# include -#endif -/* includes end */" - ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$curl_includes_netdb -" -if test "x$ac_cv_header_sys_types_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "netdb.h" "ac_cv_header_netdb_h" "$curl_includes_netdb -" -if test "x$ac_cv_header_netdb_h" = xyes -then : - printf "%s\n" "#define HAVE_NETDB_H 1" >>confdefs.h - -fi - - - - # - tst_links_freeaddrinfo="unknown" - tst_proto_freeaddrinfo="unknown" - tst_compi_freeaddrinfo="unknown" - tst_allow_freeaddrinfo="unknown" - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if freeaddrinfo can be linked" >&5 -printf %s "checking if freeaddrinfo can be linked... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_ws2tcpip - $curl_includes_sys_socket - $curl_includes_netdb - -int main (void) -{ - - freeaddrinfo(0); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_links_freeaddrinfo="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_links_freeaddrinfo="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$tst_links_freeaddrinfo" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if freeaddrinfo is prototyped" >&5 -printf %s "checking if freeaddrinfo is prototyped... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - $curl_includes_ws2tcpip - $curl_includes_sys_socket - $curl_includes_netdb - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "freeaddrinfo" >/dev/null 2>&1 -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_proto_freeaddrinfo="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_proto_freeaddrinfo="no" - -fi -rm -rf conftest* - - fi - # - if test "$tst_proto_freeaddrinfo" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if freeaddrinfo is compilable" >&5 -printf %s "checking if freeaddrinfo is compilable... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_ws2tcpip - $curl_includes_sys_socket - $curl_includes_netdb - -int main (void) -{ - - freeaddrinfo(0); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_freeaddrinfo="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_freeaddrinfo="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - # - if test "$tst_compi_freeaddrinfo" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if freeaddrinfo usage allowed" >&5 -printf %s "checking if freeaddrinfo usage allowed... " >&6; } - if test "x$curl_disallow_freeaddrinfo" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_freeaddrinfo="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_freeaddrinfo="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if freeaddrinfo might be used" >&5 -printf %s "checking if freeaddrinfo might be used... " >&6; } - if test "$tst_links_freeaddrinfo" = "yes" && - test "$tst_proto_freeaddrinfo" = "yes" && - test "$tst_compi_freeaddrinfo" = "yes" && - test "$tst_allow_freeaddrinfo" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_FREEADDRINFO 1" >>confdefs.h - - curl_cv_func_freeaddrinfo="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_freeaddrinfo="no" - fi - - -curl_includes_sys_xattr="\ -/* includes start */ -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_XATTR_H -# include -#endif -/* includes end */" - ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$curl_includes_sys_xattr -" -if test "x$ac_cv_header_sys_types_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/xattr.h" "ac_cv_header_sys_xattr_h" "$curl_includes_sys_xattr -" -if test "x$ac_cv_header_sys_xattr_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_XATTR_H 1" >>confdefs.h - -fi - - - - # - tst_links_fsetxattr="unknown" - tst_proto_fsetxattr="unknown" - tst_compi_fsetxattr="unknown" - tst_allow_fsetxattr="unknown" - tst_nargs_fsetxattr="unknown" - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if fsetxattr can be linked" >&5 -printf %s "checking if fsetxattr can be linked... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#define fsetxattr innocuous_fsetxattr -#ifdef __STDC__ -# include -#else -# include -#endif -#undef fsetxattr -#ifdef __cplusplus -extern "C" -#endif -char fsetxattr (); -#if defined __stub_fsetxattr || defined __stub___fsetxattr -choke me -#endif - -int main (void) -{ -return fsetxattr (); - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_links_fsetxattr="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_links_fsetxattr="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$tst_links_fsetxattr" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if fsetxattr is prototyped" >&5 -printf %s "checking if fsetxattr is prototyped... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - $curl_includes_sys_xattr - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "fsetxattr" >/dev/null 2>&1 -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_proto_fsetxattr="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_proto_fsetxattr="no" - -fi -rm -rf conftest* - - fi - # - if test "$tst_proto_fsetxattr" = "yes"; then - if test "$tst_nargs_fsetxattr" = "unknown"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if fsetxattr takes 5 args." >&5 -printf %s "checking if fsetxattr takes 5 args.... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_sys_xattr - -int main (void) -{ - - if(0 != fsetxattr(0, 0, 0, 0, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_fsetxattr="yes" - tst_nargs_fsetxattr="5" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_fsetxattr="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - if test "$tst_nargs_fsetxattr" = "unknown"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if fsetxattr takes 6 args." >&5 -printf %s "checking if fsetxattr takes 6 args.... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_sys_xattr - -int main (void) -{ - - if(0 != fsetxattr(0, 0, 0, 0, 0, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_fsetxattr="yes" - tst_nargs_fsetxattr="6" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_fsetxattr="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if fsetxattr is compilable" >&5 -printf %s "checking if fsetxattr is compilable... " >&6; } - if test "$tst_compi_fsetxattr" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - fi - fi - # - if test "$tst_compi_fsetxattr" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if fsetxattr usage allowed" >&5 -printf %s "checking if fsetxattr usage allowed... " >&6; } - if test "x$curl_disallow_fsetxattr" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_fsetxattr="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_fsetxattr="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if fsetxattr might be used" >&5 -printf %s "checking if fsetxattr might be used... " >&6; } - if test "$tst_links_fsetxattr" = "yes" && - test "$tst_proto_fsetxattr" = "yes" && - test "$tst_compi_fsetxattr" = "yes" && - test "$tst_allow_fsetxattr" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_FSETXATTR 1" >>confdefs.h - - # - if test "$tst_nargs_fsetxattr" -eq "5"; then - -printf "%s\n" "#define HAVE_FSETXATTR_5 1" >>confdefs.h - - elif test "$tst_nargs_fsetxattr" -eq "6"; then - -printf "%s\n" "#define HAVE_FSETXATTR_6 1" >>confdefs.h - - fi - # - curl_cv_func_fsetxattr="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_fsetxattr="no" - fi - - - # - tst_links_ftruncate="unknown" - tst_proto_ftruncate="unknown" - tst_compi_ftruncate="unknown" - tst_allow_ftruncate="unknown" - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ftruncate can be linked" >&5 -printf %s "checking if ftruncate can be linked... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#define ftruncate innocuous_ftruncate -#ifdef __STDC__ -# include -#else -# include -#endif -#undef ftruncate -#ifdef __cplusplus -extern "C" -#endif -char ftruncate (); -#if defined __stub_ftruncate || defined __stub___ftruncate -choke me -#endif - -int main (void) -{ -return ftruncate (); - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_links_ftruncate="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_links_ftruncate="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$tst_links_ftruncate" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ftruncate is prototyped" >&5 -printf %s "checking if ftruncate is prototyped... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - $curl_includes_unistd - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "ftruncate" >/dev/null 2>&1 -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_proto_ftruncate="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_proto_ftruncate="no" - -fi -rm -rf conftest* - - fi - # - if test "$tst_proto_ftruncate" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ftruncate is compilable" >&5 -printf %s "checking if ftruncate is compilable... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_unistd - -int main (void) -{ - - if(0 != ftruncate(0, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_ftruncate="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_ftruncate="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - # - if test "$tst_compi_ftruncate" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ftruncate usage allowed" >&5 -printf %s "checking if ftruncate usage allowed... " >&6; } - if test "x$curl_disallow_ftruncate" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_ftruncate="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_ftruncate="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ftruncate might be used" >&5 -printf %s "checking if ftruncate might be used... " >&6; } - if test "$tst_links_ftruncate" = "yes" && - test "$tst_proto_ftruncate" = "yes" && - test "$tst_compi_ftruncate" = "yes" && - test "$tst_allow_ftruncate" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_FTRUNCATE 1" >>confdefs.h - - curl_cv_func_ftruncate="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_ftruncate="no" - fi - - -curl_includes_stdlib="\ -/* includes start */ -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_STDLIB_H -# include -#endif -/* includes end */" - ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$curl_includes_stdlib -" -if test "x$ac_cv_header_sys_types_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$curl_includes_stdlib -" -if test "x$ac_cv_header_stdlib_h" = xyes -then : - printf "%s\n" "#define HAVE_STDLIB_H 1" >>confdefs.h - -fi - - - - # - tst_links_getaddrinfo="unknown" - tst_proto_getaddrinfo="unknown" - tst_compi_getaddrinfo="unknown" - tst_works_getaddrinfo="unknown" - tst_allow_getaddrinfo="unknown" - tst_tsafe_getaddrinfo="unknown" - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getaddrinfo can be linked" >&5 -printf %s "checking if getaddrinfo can be linked... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_ws2tcpip - $curl_includes_sys_socket - $curl_includes_netdb - -int main (void) -{ - - if(0 != getaddrinfo(0, 0, 0, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_links_getaddrinfo="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_links_getaddrinfo="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$tst_links_getaddrinfo" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getaddrinfo is prototyped" >&5 -printf %s "checking if getaddrinfo is prototyped... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - $curl_includes_ws2tcpip - $curl_includes_sys_socket - $curl_includes_netdb - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "getaddrinfo" >/dev/null 2>&1 -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_proto_getaddrinfo="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_proto_getaddrinfo="no" - -fi -rm -rf conftest* - - fi - # - if test "$tst_proto_getaddrinfo" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getaddrinfo is compilable" >&5 -printf %s "checking if getaddrinfo is compilable... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_ws2tcpip - $curl_includes_sys_socket - $curl_includes_netdb - -int main (void) -{ - - if(0 != getaddrinfo(0, 0, 0, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_getaddrinfo="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_getaddrinfo="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - # - if test "x$cross_compiling" != "xyes" && - test "$tst_compi_getaddrinfo" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getaddrinfo seems to work" >&5 -printf %s "checking if getaddrinfo seems to work... " >&6; } - - case $host_os in - darwin*) - if test "$cross_compiling" = yes -then : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5; } -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_ws2tcpip - $curl_includes_stdlib - $curl_includes_string - $curl_includes_sys_socket - $curl_includes_netdb - -int main (void) -{ - - struct addrinfo hints; - struct addrinfo *ai = 0; - int error; - - #ifdef HAVE_WINSOCK2_H - WSADATA wsa; - if (WSAStartup(MAKEWORD(2,2), &wsa)) - exit(2); - #endif - - memset(&hints, 0, sizeof(hints)); - hints.ai_flags = AI_NUMERICHOST; - hints.ai_family = AF_UNSPEC; - hints.ai_socktype = SOCK_STREAM; - error = getaddrinfo("127.0.0.1", 0, &hints, &ai); - if(error || !ai) - exit(1); /* fail */ - else - exit(0); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_works_getaddrinfo="yes" - -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_works_getaddrinfo="no" - -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - ;; - *) - old=$LD_LIBRARY_PATH - LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old - export LD_LIBRARY_PATH - if test "$cross_compiling" = yes -then : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5; } -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_ws2tcpip - $curl_includes_stdlib - $curl_includes_string - $curl_includes_sys_socket - $curl_includes_netdb - -int main (void) -{ - - struct addrinfo hints; - struct addrinfo *ai = 0; - int error; - - #ifdef HAVE_WINSOCK2_H - WSADATA wsa; - if (WSAStartup(MAKEWORD(2,2), &wsa)) - exit(2); - #endif - - memset(&hints, 0, sizeof(hints)); - hints.ai_flags = AI_NUMERICHOST; - hints.ai_family = AF_UNSPEC; - hints.ai_socktype = SOCK_STREAM; - error = getaddrinfo("127.0.0.1", 0, &hints, &ai); - if(error || !ai) - exit(1); /* fail */ - else - exit(0); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_works_getaddrinfo="yes" - -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_works_getaddrinfo="no" - -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - LD_LIBRARY_PATH=$old # restore - ;; - esac - - fi - # - if test "$tst_compi_getaddrinfo" = "yes" && - test "$tst_works_getaddrinfo" != "no"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getaddrinfo usage allowed" >&5 -printf %s "checking if getaddrinfo usage allowed... " >&6; } - if test "x$curl_disallow_getaddrinfo" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_getaddrinfo="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_getaddrinfo="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getaddrinfo might be used" >&5 -printf %s "checking if getaddrinfo might be used... " >&6; } - if test "$tst_links_getaddrinfo" = "yes" && - test "$tst_proto_getaddrinfo" = "yes" && - test "$tst_compi_getaddrinfo" = "yes" && - test "$tst_allow_getaddrinfo" = "yes" && - test "$tst_works_getaddrinfo" != "no"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_GETADDRINFO 1" >>confdefs.h - - curl_cv_func_getaddrinfo="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_getaddrinfo="no" - curl_cv_func_getaddrinfo_threadsafe="no" - fi - # - if test "$curl_cv_func_getaddrinfo" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getaddrinfo is threadsafe" >&5 -printf %s "checking if getaddrinfo is threadsafe... " >&6; } - case $host_os in - aix[1234].* | aix5.[01].*) - tst_tsafe_getaddrinfo="no" - ;; - aix*) - tst_tsafe_getaddrinfo="yes" - ;; - darwin[12345].*) - tst_tsafe_getaddrinfo="no" - ;; - darwin*) - tst_tsafe_getaddrinfo="yes" - ;; - freebsd[1234].* | freebsd5.[1234]*) - tst_tsafe_getaddrinfo="no" - ;; - freebsd*) - tst_tsafe_getaddrinfo="yes" - ;; - hpux[123456789].* | hpux10.* | hpux11.0* | hpux11.10*) - tst_tsafe_getaddrinfo="no" - ;; - hpux*) - tst_tsafe_getaddrinfo="yes" - ;; - midnightbsd*) - tst_tsafe_getaddrinfo="yes" - ;; - netbsd[123].*) - tst_tsafe_getaddrinfo="no" - ;; - netbsd*) - tst_tsafe_getaddrinfo="yes" - ;; - *bsd*) - tst_tsafe_getaddrinfo="no" - ;; - solaris2*) - tst_tsafe_getaddrinfo="yes" - ;; - esac - if test "$tst_tsafe_getaddrinfo" = "unknown" && - test "$curl_cv_native_windows" = "yes"; then - tst_tsafe_getaddrinfo="yes" - fi - if test "$tst_tsafe_getaddrinfo" = "unknown"; then - - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_sys_socket - $curl_includes_netdb - -int main (void) -{ -#ifdef h_errno - return 0; -#else - force compilation error -#endif -} - - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - tst_symbol_defined="yes" - -else $as_nop - - tst_symbol_defined="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - if test "$tst_symbol_defined" = "yes"; then - curl_cv_have_def_h_errno=yes - - else - curl_cv_have_def_h_errno=no - - fi - - if test "$curl_cv_have_def_h_errno" = "yes"; then - tst_h_errno_macro="yes" - else - tst_h_errno_macro="no" - fi - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_sys_socket - $curl_includes_netdb - -int main (void) -{ - - h_errno = 2; - if(0 != h_errno) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - tst_h_errno_modifiable_lvalue="yes" - -else $as_nop - - tst_h_errno_modifiable_lvalue="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - -int main (void) -{ - -#if defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE >= 200809L) - return 0; -#elif defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 700) - return 0; -#else - force compilation error -#endif - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - tst_h_errno_sbs_issue_7="yes" - -else $as_nop - - tst_h_errno_sbs_issue_7="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - if test "$tst_h_errno_macro" = "no" && - test "$tst_h_errno_modifiable_lvalue" = "no" && - test "$tst_h_errno_sbs_issue_7" = "no"; then - tst_tsafe_getaddrinfo="no" - else - tst_tsafe_getaddrinfo="yes" - fi - fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $tst_tsafe_getaddrinfo" >&5 -printf "%s\n" "$tst_tsafe_getaddrinfo" >&6; } - if test "$tst_tsafe_getaddrinfo" = "yes"; then - -printf "%s\n" "#define HAVE_GETADDRINFO_THREADSAFE 1" >>confdefs.h - - curl_cv_func_getaddrinfo_threadsafe="yes" - else - curl_cv_func_getaddrinfo_threadsafe="no" - fi - fi - - - # - tst_links_gethostbyname="unknown" - tst_proto_gethostbyname="unknown" - tst_compi_gethostbyname="unknown" - tst_allow_gethostbyname="unknown" - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostbyname can be linked" >&5 -printf %s "checking if gethostbyname can be linked... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_winsock2 - $curl_includes_bsdsocket - $curl_includes_netdb - -int main (void) -{ - - if(0 != gethostbyname(0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_links_gethostbyname="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_links_gethostbyname="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$tst_links_gethostbyname" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostbyname is prototyped" >&5 -printf %s "checking if gethostbyname is prototyped... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - $curl_includes_winsock2 - $curl_includes_bsdsocket - $curl_includes_netdb - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "gethostbyname" >/dev/null 2>&1 -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_proto_gethostbyname="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_proto_gethostbyname="no" - -fi -rm -rf conftest* - - fi - # - if test "$tst_proto_gethostbyname" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostbyname is compilable" >&5 -printf %s "checking if gethostbyname is compilable... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_winsock2 - $curl_includes_bsdsocket - $curl_includes_netdb - -int main (void) -{ - - if(0 != gethostbyname(0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_gethostbyname="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_gethostbyname="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - # - if test "$tst_compi_gethostbyname" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostbyname usage allowed" >&5 -printf %s "checking if gethostbyname usage allowed... " >&6; } - if test "x$curl_disallow_gethostbyname" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_gethostbyname="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_gethostbyname="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostbyname might be used" >&5 -printf %s "checking if gethostbyname might be used... " >&6; } - if test "$tst_links_gethostbyname" = "yes" && - test "$tst_proto_gethostbyname" = "yes" && - test "$tst_compi_gethostbyname" = "yes" && - test "$tst_allow_gethostbyname" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_GETHOSTBYNAME 1" >>confdefs.h - - curl_cv_func_gethostbyname="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_gethostbyname="no" - fi - - - # - tst_links_gethostbyname_r="unknown" - tst_proto_gethostbyname_r="unknown" - tst_compi_gethostbyname_r="unknown" - tst_allow_gethostbyname_r="unknown" - tst_nargs_gethostbyname_r="unknown" - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostbyname_r can be linked" >&5 -printf %s "checking if gethostbyname_r can be linked... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#define gethostbyname_r innocuous_gethostbyname_r -#ifdef __STDC__ -# include -#else -# include -#endif -#undef gethostbyname_r -#ifdef __cplusplus -extern "C" -#endif -char gethostbyname_r (); -#if defined __stub_gethostbyname_r || defined __stub___gethostbyname_r -choke me -#endif - -int main (void) -{ -return gethostbyname_r (); - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_links_gethostbyname_r="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_links_gethostbyname_r="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$tst_links_gethostbyname_r" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostbyname_r is prototyped" >&5 -printf %s "checking if gethostbyname_r is prototyped... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - $curl_includes_netdb - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "gethostbyname_r" >/dev/null 2>&1 -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_proto_gethostbyname_r="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_proto_gethostbyname_r="no" - -fi -rm -rf conftest* - - fi - # - if test "$tst_proto_gethostbyname_r" = "yes"; then - if test "$tst_nargs_gethostbyname_r" = "unknown"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostbyname_r takes 3 args." >&5 -printf %s "checking if gethostbyname_r takes 3 args.... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_netdb - $curl_includes_bsdsocket - -int main (void) -{ - - if(0 != gethostbyname_r(0, 0, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_gethostbyname_r="yes" - tst_nargs_gethostbyname_r="3" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_gethostbyname_r="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - if test "$tst_nargs_gethostbyname_r" = "unknown"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostbyname_r takes 5 args." >&5 -printf %s "checking if gethostbyname_r takes 5 args.... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_netdb - $curl_includes_bsdsocket - -int main (void) -{ - - if(0 != gethostbyname_r(0, 0, 0, 0, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_gethostbyname_r="yes" - tst_nargs_gethostbyname_r="5" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_gethostbyname_r="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - if test "$tst_nargs_gethostbyname_r" = "unknown"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostbyname_r takes 6 args." >&5 -printf %s "checking if gethostbyname_r takes 6 args.... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_netdb - $curl_includes_bsdsocket - -int main (void) -{ - - if(0 != gethostbyname_r(0, 0, 0, 0, 0, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_gethostbyname_r="yes" - tst_nargs_gethostbyname_r="6" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_gethostbyname_r="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostbyname_r is compilable" >&5 -printf %s "checking if gethostbyname_r is compilable... " >&6; } - if test "$tst_compi_gethostbyname_r" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - fi - fi - # - if test "$tst_compi_gethostbyname_r" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostbyname_r usage allowed" >&5 -printf %s "checking if gethostbyname_r usage allowed... " >&6; } - if test "x$curl_disallow_gethostbyname_r" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_gethostbyname_r="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_gethostbyname_r="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostbyname_r might be used" >&5 -printf %s "checking if gethostbyname_r might be used... " >&6; } - if test "$tst_links_gethostbyname_r" = "yes" && - test "$tst_proto_gethostbyname_r" = "yes" && - test "$tst_compi_gethostbyname_r" = "yes" && - test "$tst_allow_gethostbyname_r" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_GETHOSTBYNAME_R 1" >>confdefs.h - - # - if test "$tst_nargs_gethostbyname_r" -eq "3"; then - -printf "%s\n" "#define HAVE_GETHOSTBYNAME_R_3 1" >>confdefs.h - - elif test "$tst_nargs_gethostbyname_r" -eq "5"; then - -printf "%s\n" "#define HAVE_GETHOSTBYNAME_R_5 1" >>confdefs.h - - elif test "$tst_nargs_gethostbyname_r" -eq "6"; then - -printf "%s\n" "#define HAVE_GETHOSTBYNAME_R_6 1" >>confdefs.h - - fi - # - curl_cv_func_gethostbyname_r="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_gethostbyname_r="no" - fi - - -curl_preprocess_callconv="\ -/* preprocess start */ -#ifdef HAVE_WINDOWS_H -# define FUNCALLCONV __stdcall -#else -# define FUNCALLCONV -#endif -/* preprocess end */" - - - # - tst_links_gethostname="unknown" - tst_proto_gethostname="unknown" - tst_compi_gethostname="unknown" - tst_allow_gethostname="unknown" - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostname can be linked" >&5 -printf %s "checking if gethostname can be linked... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_winsock2 - $curl_includes_unistd - $curl_includes_bsdsocket - -int main (void) -{ - - if(0 != gethostname(0, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_links_gethostname="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_links_gethostname="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$tst_links_gethostname" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostname is prototyped" >&5 -printf %s "checking if gethostname is prototyped... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - $curl_includes_winsock2 - $curl_includes_unistd - $curl_includes_bsdsocket - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "gethostname" >/dev/null 2>&1 -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_proto_gethostname="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_proto_gethostname="no" - -fi -rm -rf conftest* - - fi - # - if test "$tst_proto_gethostname" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostname is compilable" >&5 -printf %s "checking if gethostname is compilable... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_winsock2 - $curl_includes_unistd - $curl_includes_bsdsocket - -int main (void) -{ - - if(0 != gethostname(0, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_gethostname="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_gethostname="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - # - if test "$tst_compi_gethostname" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostname arg 2 data type" >&5 -printf %s "checking for gethostname arg 2 data type... " >&6; } - tst_gethostname_type_arg2="unknown" - for tst_arg1 in 'char *' 'unsigned char *' 'void *'; do - for tst_arg2 in 'int' 'unsigned int' 'size_t'; do - if test "$tst_gethostname_type_arg2" = "unknown"; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_winsock2 - $curl_includes_unistd - $curl_includes_bsdsocket - $curl_preprocess_callconv - extern int FUNCALLCONV gethostname($tst_arg1, $tst_arg2); - -int main (void) -{ - - if(0 != gethostname(0, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - tst_gethostname_type_arg2="$tst_arg2" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - done - done - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $tst_gethostname_type_arg2" >&5 -printf "%s\n" "$tst_gethostname_type_arg2" >&6; } - if test "$tst_gethostname_type_arg2" != "unknown"; then - -printf "%s\n" "#define GETHOSTNAME_TYPE_ARG2 $tst_gethostname_type_arg2" >>confdefs.h - - fi - fi - # - if test "$tst_compi_gethostname" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostname usage allowed" >&5 -printf %s "checking if gethostname usage allowed... " >&6; } - if test "x$curl_disallow_gethostname" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_gethostname="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_gethostname="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gethostname might be used" >&5 -printf %s "checking if gethostname might be used... " >&6; } - if test "$tst_links_gethostname" = "yes" && - test "$tst_proto_gethostname" = "yes" && - test "$tst_compi_gethostname" = "yes" && - test "$tst_allow_gethostname" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_GETHOSTNAME 1" >>confdefs.h - - curl_cv_func_gethostname="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_gethostname="no" - fi - - - # - tst_links_getpeername="unknown" - tst_proto_getpeername="unknown" - tst_compi_getpeername="unknown" - tst_allow_getpeername="unknown" - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getpeername can be linked" >&5 -printf %s "checking if getpeername can be linked... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_winsock2 - $curl_includes_bsdsocket - $curl_includes_sys_socket - -int main (void) -{ - - if(0 != getpeername(0, (void *)0, (void *)0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_links_getpeername="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_links_getpeername="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$tst_links_getpeername" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getpeername is prototyped" >&5 -printf %s "checking if getpeername is prototyped... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - $curl_includes_winsock2 - $curl_includes_bsdsocket - $curl_includes_sys_socket - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "getpeername" >/dev/null 2>&1 -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_proto_getpeername="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_proto_getpeername="no" - -fi -rm -rf conftest* - - fi - # - if test "$tst_proto_getpeername" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getpeername is compilable" >&5 -printf %s "checking if getpeername is compilable... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_winsock2 - $curl_includes_bsdsocket - $curl_includes_sys_socket - -int main (void) -{ - - if(0 != getpeername(0, (void *)0, (void *)0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_getpeername="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_getpeername="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - # - if test "$tst_compi_getpeername" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getpeername usage allowed" >&5 -printf %s "checking if getpeername usage allowed... " >&6; } - if test "x$curl_disallow_getpeername" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_getpeername="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_getpeername="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getpeername might be used" >&5 -printf %s "checking if getpeername might be used... " >&6; } - if test "$tst_links_getpeername" = "yes" && - test "$tst_proto_getpeername" = "yes" && - test "$tst_compi_getpeername" = "yes" && - test "$tst_allow_getpeername" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_GETPEERNAME 1" >>confdefs.h - - curl_cv_func_getpeername="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_getpeername="no" - fi - - - # - tst_links_getsockname="unknown" - tst_proto_getsockname="unknown" - tst_compi_getsockname="unknown" - tst_allow_getsockname="unknown" - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getsockname can be linked" >&5 -printf %s "checking if getsockname can be linked... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_winsock2 - $curl_includes_bsdsocket - $curl_includes_sys_socket - -int main (void) -{ - - if(0 != getsockname(0, (void *)0, (void *)0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_links_getsockname="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_links_getsockname="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$tst_links_getsockname" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getsockname is prototyped" >&5 -printf %s "checking if getsockname is prototyped... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - $curl_includes_winsock2 - $curl_includes_bsdsocket - $curl_includes_sys_socket - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "getsockname" >/dev/null 2>&1 -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_proto_getsockname="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_proto_getsockname="no" - -fi -rm -rf conftest* - - fi - # - if test "$tst_proto_getsockname" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getsockname is compilable" >&5 -printf %s "checking if getsockname is compilable... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_winsock2 - $curl_includes_bsdsocket - $curl_includes_sys_socket - -int main (void) -{ - - if(0 != getsockname(0, (void *)0, (void *)0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_getsockname="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_getsockname="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - # - if test "$tst_compi_getsockname" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getsockname usage allowed" >&5 -printf %s "checking if getsockname usage allowed... " >&6; } - if test "x$curl_disallow_getsockname" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_getsockname="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_getsockname="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getsockname might be used" >&5 -printf %s "checking if getsockname might be used... " >&6; } - if test "$tst_links_getsockname" = "yes" && - test "$tst_proto_getsockname" = "yes" && - test "$tst_compi_getsockname" = "yes" && - test "$tst_allow_getsockname" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_GETSOCKNAME 1" >>confdefs.h - - curl_cv_func_getsockname="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_getsockname="no" - fi - - -curl_includes_netif="\ -/* includes start */ -#ifdef HAVE_NET_IF_H -# include -#endif -/* includes end */" - ac_fn_c_check_header_compile "$LINENO" "net/if.h" "ac_cv_header_net_if_h" "$curl_includes_netif -" -if test "x$ac_cv_header_net_if_h" = xyes -then : - printf "%s\n" "#define HAVE_NET_IF_H 1" >>confdefs.h - -fi - - - - # - tst_links_if_nametoindex="unknown" - tst_proto_if_nametoindex="unknown" - tst_compi_if_nametoindex="unknown" - tst_allow_if_nametoindex="unknown" - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if if_nametoindex can be linked" >&5 -printf %s "checking if if_nametoindex can be linked... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_winsock2 - $curl_includes_bsdsocket - #include - -int main (void) -{ - - if(0 != if_nametoindex("")) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_links_if_nametoindex="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_links_if_nametoindex="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$tst_links_if_nametoindex" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if if_nametoindex is prototyped" >&5 -printf %s "checking if if_nametoindex is prototyped... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - $curl_includes_winsock2 - $curl_includes_netif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "if_nametoindex" >/dev/null 2>&1 -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_proto_if_nametoindex="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_proto_if_nametoindex="no" - -fi -rm -rf conftest* - - fi - # - if test "$tst_proto_if_nametoindex" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if if_nametoindex is compilable" >&5 -printf %s "checking if if_nametoindex is compilable... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_winsock2 - $curl_includes_netif - -int main (void) -{ - - if(0 != if_nametoindex("")) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_if_nametoindex="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_if_nametoindex="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - # - if test "$tst_compi_if_nametoindex" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if if_nametoindex usage allowed" >&5 -printf %s "checking if if_nametoindex usage allowed... " >&6; } - if test "x$curl_disallow_if_nametoindex" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_if_nametoindex="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_if_nametoindex="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if if_nametoindex might be used" >&5 -printf %s "checking if if_nametoindex might be used... " >&6; } - if test "$tst_links_if_nametoindex" = "yes" && - test "$tst_proto_if_nametoindex" = "yes" && - test "$tst_compi_if_nametoindex" = "yes" && - test "$tst_allow_if_nametoindex" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_IF_NAMETOINDEX 1" >>confdefs.h - - curl_cv_func_if_nametoindex="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_if_nametoindex="no" - fi - - -curl_includes_ifaddrs="\ -/* includes start */ -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_SOCKET_H -# include -#endif -#ifdef HAVE_NETINET_IN_H -# include -#endif -#ifdef HAVE_IFADDRS_H -# include -#endif -/* includes end */" - ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$curl_includes_ifaddrs -" -if test "x$ac_cv_header_sys_types_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$curl_includes_ifaddrs -" -if test "x$ac_cv_header_sys_socket_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_SOCKET_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "netinet/in.h" "ac_cv_header_netinet_in_h" "$curl_includes_ifaddrs -" -if test "x$ac_cv_header_netinet_in_h" = xyes -then : - printf "%s\n" "#define HAVE_NETINET_IN_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "ifaddrs.h" "ac_cv_header_ifaddrs_h" "$curl_includes_ifaddrs -" -if test "x$ac_cv_header_ifaddrs_h" = xyes -then : - printf "%s\n" "#define HAVE_IFADDRS_H 1" >>confdefs.h - -fi - - - - # - tst_links_getifaddrs="unknown" - tst_proto_getifaddrs="unknown" - tst_compi_getifaddrs="unknown" - tst_works_getifaddrs="unknown" - tst_allow_getifaddrs="unknown" - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getifaddrs can be linked" >&5 -printf %s "checking if getifaddrs can be linked... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#define getifaddrs innocuous_getifaddrs -#ifdef __STDC__ -# include -#else -# include -#endif -#undef getifaddrs -#ifdef __cplusplus -extern "C" -#endif -char getifaddrs (); -#if defined __stub_getifaddrs || defined __stub___getifaddrs -choke me -#endif - -int main (void) -{ -return getifaddrs (); - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_links_getifaddrs="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_links_getifaddrs="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$tst_links_getifaddrs" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getifaddrs is prototyped" >&5 -printf %s "checking if getifaddrs is prototyped... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - $curl_includes_ifaddrs - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "getifaddrs" >/dev/null 2>&1 -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_proto_getifaddrs="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_proto_getifaddrs="no" - -fi -rm -rf conftest* - - fi - # - if test "$tst_proto_getifaddrs" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getifaddrs is compilable" >&5 -printf %s "checking if getifaddrs is compilable... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_ifaddrs - -int main (void) -{ - - if(0 != getifaddrs(0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_getifaddrs="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_getifaddrs="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - # - if test "x$cross_compiling" != "xyes" && - test "$tst_compi_getifaddrs" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getifaddrs seems to work" >&5 -printf %s "checking if getifaddrs seems to work... " >&6; } - - case $host_os in - darwin*) - if test "$cross_compiling" = yes -then : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5; } -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_stdlib - $curl_includes_ifaddrs - -int main (void) -{ - - struct ifaddrs *ifa = 0; - int error; - - error = getifaddrs(&ifa); - if(error || !ifa) - exit(1); /* fail */ - else - exit(0); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_works_getifaddrs="yes" - -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_works_getifaddrs="no" - -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - ;; - *) - old=$LD_LIBRARY_PATH - LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old - export LD_LIBRARY_PATH - if test "$cross_compiling" = yes -then : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5; } -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_stdlib - $curl_includes_ifaddrs - -int main (void) -{ - - struct ifaddrs *ifa = 0; - int error; - - error = getifaddrs(&ifa); - if(error || !ifa) - exit(1); /* fail */ - else - exit(0); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_works_getifaddrs="yes" - -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_works_getifaddrs="no" - -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - LD_LIBRARY_PATH=$old # restore - ;; - esac - - fi - # - if test "$tst_compi_getifaddrs" = "yes" && - test "$tst_works_getifaddrs" != "no"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getifaddrs usage allowed" >&5 -printf %s "checking if getifaddrs usage allowed... " >&6; } - if test "x$curl_disallow_getifaddrs" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_getifaddrs="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_getifaddrs="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if getifaddrs might be used" >&5 -printf %s "checking if getifaddrs might be used... " >&6; } - if test "$tst_links_getifaddrs" = "yes" && - test "$tst_proto_getifaddrs" = "yes" && - test "$tst_compi_getifaddrs" = "yes" && - test "$tst_allow_getifaddrs" = "yes" && - test "$tst_works_getifaddrs" != "no"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_GETIFADDRS 1" >>confdefs.h - - curl_cv_func_getifaddrs="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_getifaddrs="no" - fi - - -curl_includes_time="\ -/* includes start */ -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_TIME_H -# include -#endif -#include -/* includes end */" - ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$curl_includes_time -" -if test "x$ac_cv_header_sys_types_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$curl_includes_time -" -if test "x$ac_cv_header_sys_time_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_TIME_H 1" >>confdefs.h - -fi - - - - # - tst_links_gmtime_r="unknown" - tst_proto_gmtime_r="unknown" - tst_compi_gmtime_r="unknown" - tst_works_gmtime_r="unknown" - tst_allow_gmtime_r="unknown" - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gmtime_r can be linked" >&5 -printf %s "checking if gmtime_r can be linked... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#define gmtime_r innocuous_gmtime_r -#ifdef __STDC__ -# include -#else -# include -#endif -#undef gmtime_r -#ifdef __cplusplus -extern "C" -#endif -char gmtime_r (); -#if defined __stub_gmtime_r || defined __stub___gmtime_r -choke me -#endif - -int main (void) -{ -return gmtime_r (); - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_links_gmtime_r="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_links_gmtime_r="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$tst_links_gmtime_r" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gmtime_r is prototyped" >&5 -printf %s "checking if gmtime_r is prototyped... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - $curl_includes_time - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "gmtime_r" >/dev/null 2>&1 -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_proto_gmtime_r="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_proto_gmtime_r="no" - -fi -rm -rf conftest* - - fi - # - if test "$tst_proto_gmtime_r" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gmtime_r is compilable" >&5 -printf %s "checking if gmtime_r is compilable... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_time - -int main (void) -{ - - if(0 != gmtime_r(0, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_gmtime_r="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_gmtime_r="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - # - if test "x$cross_compiling" != "xyes" && - test "$tst_compi_gmtime_r" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gmtime_r seems to work" >&5 -printf %s "checking if gmtime_r seems to work... " >&6; } - - case $host_os in - darwin*) - if test "$cross_compiling" = yes -then : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5; } -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_stdlib - $curl_includes_time - -int main (void) -{ - - time_t local = 1170352587; - struct tm *gmt = 0; - struct tm result; - gmt = gmtime_r(&local, &result); - if(gmt) - exit(0); - else - exit(1); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_works_gmtime_r="yes" - -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_works_gmtime_r="no" - -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - ;; - *) - old=$LD_LIBRARY_PATH - LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old - export LD_LIBRARY_PATH - if test "$cross_compiling" = yes -then : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5; } -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_stdlib - $curl_includes_time - -int main (void) -{ - - time_t local = 1170352587; - struct tm *gmt = 0; - struct tm result; - gmt = gmtime_r(&local, &result); - if(gmt) - exit(0); - else - exit(1); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_works_gmtime_r="yes" - -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_works_gmtime_r="no" - -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - LD_LIBRARY_PATH=$old # restore - ;; - esac - - fi - # - if test "$tst_compi_gmtime_r" = "yes" && - test "$tst_works_gmtime_r" != "no"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gmtime_r usage allowed" >&5 -printf %s "checking if gmtime_r usage allowed... " >&6; } - if test "x$curl_disallow_gmtime_r" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_gmtime_r="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_gmtime_r="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if gmtime_r might be used" >&5 -printf %s "checking if gmtime_r might be used... " >&6; } - if test "$tst_links_gmtime_r" = "yes" && - test "$tst_proto_gmtime_r" = "yes" && - test "$tst_compi_gmtime_r" = "yes" && - test "$tst_allow_gmtime_r" = "yes" && - test "$tst_works_gmtime_r" != "no"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_GMTIME_R 1" >>confdefs.h - - curl_cv_func_gmtime_r="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_gmtime_r="no" - fi - - -curl_includes_arpa_inet="\ -/* includes start */ -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_SOCKET_H -# include -#endif -#ifdef HAVE_NETINET_IN_H -# include -#endif -#ifdef HAVE_ARPA_INET_H -# include -#endif -#ifdef HAVE_WINSOCK2_H -#include -#include -#endif -/* includes end */" - ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$curl_includes_arpa_inet -" -if test "x$ac_cv_header_sys_types_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$curl_includes_arpa_inet -" -if test "x$ac_cv_header_sys_socket_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_SOCKET_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "netinet/in.h" "ac_cv_header_netinet_in_h" "$curl_includes_arpa_inet -" -if test "x$ac_cv_header_netinet_in_h" = xyes -then : - printf "%s\n" "#define HAVE_NETINET_IN_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "arpa/inet.h" "ac_cv_header_arpa_inet_h" "$curl_includes_arpa_inet -" -if test "x$ac_cv_header_arpa_inet_h" = xyes -then : - printf "%s\n" "#define HAVE_ARPA_INET_H 1" >>confdefs.h - -fi - - - - # - tst_links_inet_ntop="unknown" - tst_proto_inet_ntop="unknown" - tst_compi_inet_ntop="unknown" - tst_works_inet_ntop="unknown" - tst_allow_inet_ntop="unknown" - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if inet_ntop can be linked" >&5 -printf %s "checking if inet_ntop can be linked... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#define inet_ntop innocuous_inet_ntop -#ifdef __STDC__ -# include -#else -# include -#endif -#undef inet_ntop -#ifdef __cplusplus -extern "C" -#endif -char inet_ntop (); -#if defined __stub_inet_ntop || defined __stub___inet_ntop -choke me -#endif - -int main (void) -{ -return inet_ntop (); - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_links_inet_ntop="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_links_inet_ntop="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$tst_links_inet_ntop" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if inet_ntop is prototyped" >&5 -printf %s "checking if inet_ntop is prototyped... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - $curl_includes_arpa_inet - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "inet_ntop" >/dev/null 2>&1 -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_proto_inet_ntop="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_proto_inet_ntop="no" - -fi -rm -rf conftest* - - fi - # - if test "$tst_proto_inet_ntop" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if inet_ntop is compilable" >&5 -printf %s "checking if inet_ntop is compilable... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_arpa_inet - -int main (void) -{ - - if(0 != inet_ntop(0, 0, 0, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_inet_ntop="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_inet_ntop="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - # - if test "x$cross_compiling" != "xyes" && - test "$tst_compi_inet_ntop" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if inet_ntop seems to work" >&5 -printf %s "checking if inet_ntop seems to work... " >&6; } - - case $host_os in - darwin*) - if test "$cross_compiling" = yes -then : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5; } -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_stdlib - $curl_includes_arpa_inet - $curl_includes_string - -int main (void) -{ - - char ipv6res[sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255")]; - char ipv4res[sizeof "255.255.255.255"]; - unsigned char ipv6a[26]; - unsigned char ipv4a[5]; - char *ipv6ptr = 0; - char *ipv4ptr = 0; - /* - */ - ipv4res[0] = '\0'; - ipv4a[0] = 0xc0; - ipv4a[1] = 0xa8; - ipv4a[2] = 0x64; - ipv4a[3] = 0x01; - ipv4a[4] = 0x01; - /* - */ - ipv4ptr = inet_ntop(AF_INET, ipv4a, ipv4res, sizeof(ipv4res)); - if(!ipv4ptr) - exit(1); /* fail */ - if(ipv4ptr != ipv4res) - exit(1); /* fail */ - if(!ipv4ptr[0]) - exit(1); /* fail */ - if(memcmp(ipv4res, "192.168.100.1", 13) != 0) - exit(1); /* fail */ - /* - */ - ipv6res[0] = '\0'; - memset(ipv6a, 0, sizeof(ipv6a)); - ipv6a[0] = 0xfe; - ipv6a[1] = 0x80; - ipv6a[8] = 0x02; - ipv6a[9] = 0x14; - ipv6a[10] = 0x4f; - ipv6a[11] = 0xff; - ipv6a[12] = 0xfe; - ipv6a[13] = 0x0b; - ipv6a[14] = 0x76; - ipv6a[15] = 0xc8; - ipv6a[25] = 0x01; - /* - */ - ipv6ptr = inet_ntop(AF_INET6, ipv6a, ipv6res, sizeof(ipv6res)); - if(!ipv6ptr) - exit(1); /* fail */ - if(ipv6ptr != ipv6res) - exit(1); /* fail */ - if(!ipv6ptr[0]) - exit(1); /* fail */ - if(memcmp(ipv6res, "fe80::214:4fff:fe0b:76c8", 24) != 0) - exit(1); /* fail */ - /* - */ - exit(0); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_works_inet_ntop="yes" - -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_works_inet_ntop="no" - -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - ;; - *) - old=$LD_LIBRARY_PATH - LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old - export LD_LIBRARY_PATH - if test "$cross_compiling" = yes -then : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5; } -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_stdlib - $curl_includes_arpa_inet - $curl_includes_string - -int main (void) -{ - - char ipv6res[sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255")]; - char ipv4res[sizeof "255.255.255.255"]; - unsigned char ipv6a[26]; - unsigned char ipv4a[5]; - char *ipv6ptr = 0; - char *ipv4ptr = 0; - /* - */ - ipv4res[0] = '\0'; - ipv4a[0] = 0xc0; - ipv4a[1] = 0xa8; - ipv4a[2] = 0x64; - ipv4a[3] = 0x01; - ipv4a[4] = 0x01; - /* - */ - ipv4ptr = inet_ntop(AF_INET, ipv4a, ipv4res, sizeof(ipv4res)); - if(!ipv4ptr) - exit(1); /* fail */ - if(ipv4ptr != ipv4res) - exit(1); /* fail */ - if(!ipv4ptr[0]) - exit(1); /* fail */ - if(memcmp(ipv4res, "192.168.100.1", 13) != 0) - exit(1); /* fail */ - /* - */ - ipv6res[0] = '\0'; - memset(ipv6a, 0, sizeof(ipv6a)); - ipv6a[0] = 0xfe; - ipv6a[1] = 0x80; - ipv6a[8] = 0x02; - ipv6a[9] = 0x14; - ipv6a[10] = 0x4f; - ipv6a[11] = 0xff; - ipv6a[12] = 0xfe; - ipv6a[13] = 0x0b; - ipv6a[14] = 0x76; - ipv6a[15] = 0xc8; - ipv6a[25] = 0x01; - /* - */ - ipv6ptr = inet_ntop(AF_INET6, ipv6a, ipv6res, sizeof(ipv6res)); - if(!ipv6ptr) - exit(1); /* fail */ - if(ipv6ptr != ipv6res) - exit(1); /* fail */ - if(!ipv6ptr[0]) - exit(1); /* fail */ - if(memcmp(ipv6res, "fe80::214:4fff:fe0b:76c8", 24) != 0) - exit(1); /* fail */ - /* - */ - exit(0); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_works_inet_ntop="yes" - -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_works_inet_ntop="no" - -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - LD_LIBRARY_PATH=$old # restore - ;; - esac - - fi - # - if test "$tst_compi_inet_ntop" = "yes" && - test "$tst_works_inet_ntop" != "no"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if inet_ntop usage allowed" >&5 -printf %s "checking if inet_ntop usage allowed... " >&6; } - if test "x$curl_disallow_inet_ntop" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_inet_ntop="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_inet_ntop="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if inet_ntop might be used" >&5 -printf %s "checking if inet_ntop might be used... " >&6; } - if test "$tst_links_inet_ntop" = "yes" && - test "$tst_proto_inet_ntop" = "yes" && - test "$tst_compi_inet_ntop" = "yes" && - test "$tst_allow_inet_ntop" = "yes" && - test "$tst_works_inet_ntop" != "no"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_INET_NTOP 1" >>confdefs.h - - curl_cv_func_inet_ntop="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_inet_ntop="no" - fi - - - # - tst_links_inet_pton="unknown" - tst_proto_inet_pton="unknown" - tst_compi_inet_pton="unknown" - tst_works_inet_pton="unknown" - tst_allow_inet_pton="unknown" - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if inet_pton can be linked" >&5 -printf %s "checking if inet_pton can be linked... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#define inet_pton innocuous_inet_pton -#ifdef __STDC__ -# include -#else -# include -#endif -#undef inet_pton -#ifdef __cplusplus -extern "C" -#endif -char inet_pton (); -#if defined __stub_inet_pton || defined __stub___inet_pton -choke me -#endif - -int main (void) -{ -return inet_pton (); - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_links_inet_pton="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_links_inet_pton="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$tst_links_inet_pton" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if inet_pton is prototyped" >&5 -printf %s "checking if inet_pton is prototyped... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - $curl_includes_arpa_inet - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "inet_pton" >/dev/null 2>&1 -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_proto_inet_pton="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_proto_inet_pton="no" - -fi -rm -rf conftest* - - fi - # - if test "$tst_proto_inet_pton" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if inet_pton is compilable" >&5 -printf %s "checking if inet_pton is compilable... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_arpa_inet - -int main (void) -{ - - if(0 != inet_pton(0, 0, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_inet_pton="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_inet_pton="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - # - if test "x$cross_compiling" != "xyes" && - test "$tst_compi_inet_pton" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if inet_pton seems to work" >&5 -printf %s "checking if inet_pton seems to work... " >&6; } - - case $host_os in - darwin*) - if test "$cross_compiling" = yes -then : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5; } -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_stdlib - $curl_includes_arpa_inet - $curl_includes_string - -int main (void) -{ - - unsigned char ipv6a[16+1]; - unsigned char ipv4a[4+1]; - const char *ipv6src = "fe80::214:4fff:fe0b:76c8"; - const char *ipv4src = "192.168.100.1"; - /* - */ - memset(ipv4a, 1, sizeof(ipv4a)); - if(1 != inet_pton(AF_INET, ipv4src, ipv4a)) - exit(1); /* fail */ - /* - */ - if( (ipv4a[0] != 0xc0) || - (ipv4a[1] != 0xa8) || - (ipv4a[2] != 0x64) || - (ipv4a[3] != 0x01) || - (ipv4a[4] != 0x01) ) - exit(1); /* fail */ - /* - */ - memset(ipv6a, 1, sizeof(ipv6a)); - if(1 != inet_pton(AF_INET6, ipv6src, ipv6a)) - exit(1); /* fail */ - /* - */ - if( (ipv6a[0] != 0xfe) || - (ipv6a[1] != 0x80) || - (ipv6a[8] != 0x02) || - (ipv6a[9] != 0x14) || - (ipv6a[10] != 0x4f) || - (ipv6a[11] != 0xff) || - (ipv6a[12] != 0xfe) || - (ipv6a[13] != 0x0b) || - (ipv6a[14] != 0x76) || - (ipv6a[15] != 0xc8) || - (ipv6a[16] != 0x01) ) - exit(1); /* fail */ - /* - */ - if( (ipv6a[2] != 0x0) || - (ipv6a[3] != 0x0) || - (ipv6a[4] != 0x0) || - (ipv6a[5] != 0x0) || - (ipv6a[6] != 0x0) || - (ipv6a[7] != 0x0) ) - exit(1); /* fail */ - /* - */ - exit(0); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_works_inet_pton="yes" - -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_works_inet_pton="no" - -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - ;; - *) - old=$LD_LIBRARY_PATH - LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old - export LD_LIBRARY_PATH - if test "$cross_compiling" = yes -then : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5; } -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_stdlib - $curl_includes_arpa_inet - $curl_includes_string - -int main (void) -{ - - unsigned char ipv6a[16+1]; - unsigned char ipv4a[4+1]; - const char *ipv6src = "fe80::214:4fff:fe0b:76c8"; - const char *ipv4src = "192.168.100.1"; - /* - */ - memset(ipv4a, 1, sizeof(ipv4a)); - if(1 != inet_pton(AF_INET, ipv4src, ipv4a)) - exit(1); /* fail */ - /* - */ - if( (ipv4a[0] != 0xc0) || - (ipv4a[1] != 0xa8) || - (ipv4a[2] != 0x64) || - (ipv4a[3] != 0x01) || - (ipv4a[4] != 0x01) ) - exit(1); /* fail */ - /* - */ - memset(ipv6a, 1, sizeof(ipv6a)); - if(1 != inet_pton(AF_INET6, ipv6src, ipv6a)) - exit(1); /* fail */ - /* - */ - if( (ipv6a[0] != 0xfe) || - (ipv6a[1] != 0x80) || - (ipv6a[8] != 0x02) || - (ipv6a[9] != 0x14) || - (ipv6a[10] != 0x4f) || - (ipv6a[11] != 0xff) || - (ipv6a[12] != 0xfe) || - (ipv6a[13] != 0x0b) || - (ipv6a[14] != 0x76) || - (ipv6a[15] != 0xc8) || - (ipv6a[16] != 0x01) ) - exit(1); /* fail */ - /* - */ - if( (ipv6a[2] != 0x0) || - (ipv6a[3] != 0x0) || - (ipv6a[4] != 0x0) || - (ipv6a[5] != 0x0) || - (ipv6a[6] != 0x0) || - (ipv6a[7] != 0x0) ) - exit(1); /* fail */ - /* - */ - exit(0); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_works_inet_pton="yes" - -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_works_inet_pton="no" - -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - LD_LIBRARY_PATH=$old # restore - ;; - esac - - fi - # - if test "$tst_compi_inet_pton" = "yes" && - test "$tst_works_inet_pton" != "no"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if inet_pton usage allowed" >&5 -printf %s "checking if inet_pton usage allowed... " >&6; } - if test "x$curl_disallow_inet_pton" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_inet_pton="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_inet_pton="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if inet_pton might be used" >&5 -printf %s "checking if inet_pton might be used... " >&6; } - if test "$tst_links_inet_pton" = "yes" && - test "$tst_proto_inet_pton" = "yes" && - test "$tst_compi_inet_pton" = "yes" && - test "$tst_allow_inet_pton" = "yes" && - test "$tst_works_inet_pton" != "no"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_INET_PTON 1" >>confdefs.h - - curl_cv_func_inet_pton="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_inet_pton="no" - fi - - - # - tst_links_ioctlsocket="unknown" - tst_proto_ioctlsocket="unknown" - tst_compi_ioctlsocket="unknown" - tst_allow_ioctlsocket="unknown" - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctlsocket can be linked" >&5 -printf %s "checking if ioctlsocket can be linked... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_winsock2 - -int main (void) -{ - - if(0 != ioctlsocket(0, 0, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_links_ioctlsocket="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_links_ioctlsocket="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$tst_links_ioctlsocket" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctlsocket is prototyped" >&5 -printf %s "checking if ioctlsocket is prototyped... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - $curl_includes_winsock2 - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "ioctlsocket" >/dev/null 2>&1 -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_proto_ioctlsocket="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_proto_ioctlsocket="no" - -fi -rm -rf conftest* - - fi - # - if test "$tst_proto_ioctlsocket" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctlsocket is compilable" >&5 -printf %s "checking if ioctlsocket is compilable... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_winsock2 - -int main (void) -{ - - if(0 != ioctlsocket(0, 0, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_ioctlsocket="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_ioctlsocket="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - # - if test "$tst_compi_ioctlsocket" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctlsocket usage allowed" >&5 -printf %s "checking if ioctlsocket usage allowed... " >&6; } - if test "x$curl_disallow_ioctlsocket" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_ioctlsocket="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_ioctlsocket="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctlsocket might be used" >&5 -printf %s "checking if ioctlsocket might be used... " >&6; } - if test "$tst_links_ioctlsocket" = "yes" && - test "$tst_proto_ioctlsocket" = "yes" && - test "$tst_compi_ioctlsocket" = "yes" && - test "$tst_allow_ioctlsocket" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_IOCTLSOCKET 1" >>confdefs.h - - curl_cv_func_ioctlsocket="yes" - - # - tst_compi_ioctlsocket_fionbio="unknown" - tst_allow_ioctlsocket_fionbio="unknown" - # - if test "$curl_cv_func_ioctlsocket" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctlsocket FIONBIO is compilable" >&5 -printf %s "checking if ioctlsocket FIONBIO is compilable... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_winsock2 - -int main (void) -{ - - int flags = 0; - if(0 != ioctlsocket(0, FIONBIO, &flags)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_ioctlsocket_fionbio="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_ioctlsocket_fionbio="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - # - if test "$tst_compi_ioctlsocket_fionbio" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctlsocket FIONBIO usage allowed" >&5 -printf %s "checking if ioctlsocket FIONBIO usage allowed... " >&6; } - if test "x$curl_disallow_ioctlsocket_fionbio" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_ioctlsocket_fionbio="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_ioctlsocket_fionbio="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if ioctlsocket FIONBIO might be used" >&5 -printf %s "checking if ioctlsocket FIONBIO might be used... " >&6; } - if test "$tst_compi_ioctlsocket_fionbio" = "yes" && - test "$tst_allow_ioctlsocket_fionbio" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_IOCTLSOCKET_FIONBIO 1" >>confdefs.h - - curl_cv_func_ioctlsocket_fionbio="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_ioctlsocket_fionbio="no" - fi - - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_ioctlsocket="no" - fi - - - # - tst_links_ioctlsocket_camel="unknown" - tst_proto_ioctlsocket_camel="unknown" - tst_compi_ioctlsocket_camel="unknown" - tst_allow_ioctlsocket_camel="unknown" - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if IoctlSocket can be linked" >&5 -printf %s "checking if IoctlSocket can be linked... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_bsdsocket - -int main (void) -{ - - IoctlSocket(0, 0, 0); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_links_ioctlsocket_camel="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_links_ioctlsocket_camel="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$tst_links_ioctlsocket_camel" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if IoctlSocket is prototyped" >&5 -printf %s "checking if IoctlSocket is prototyped... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - $curl_includes_bsdsocket - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "IoctlSocket" >/dev/null 2>&1 -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_proto_ioctlsocket_camel="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_proto_ioctlsocket_camel="no" - -fi -rm -rf conftest* - - fi - # - if test "$tst_proto_ioctlsocket_camel" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if IoctlSocket is compilable" >&5 -printf %s "checking if IoctlSocket is compilable... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_bsdsocket - -int main (void) -{ - - if(0 != IoctlSocket(0, 0, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_ioctlsocket_camel="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_ioctlsocket_camel="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - # - if test "$tst_compi_ioctlsocket_camel" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if IoctlSocket usage allowed" >&5 -printf %s "checking if IoctlSocket usage allowed... " >&6; } - if test "x$curl_disallow_ioctlsocket_camel" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_ioctlsocket_camel="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_ioctlsocket_camel="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if IoctlSocket might be used" >&5 -printf %s "checking if IoctlSocket might be used... " >&6; } - if test "$tst_links_ioctlsocket_camel" = "yes" && - test "$tst_proto_ioctlsocket_camel" = "yes" && - test "$tst_compi_ioctlsocket_camel" = "yes" && - test "$tst_allow_ioctlsocket_camel" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_IOCTLSOCKET_CAMEL 1" >>confdefs.h - - curl_cv_func_ioctlsocket_camel="yes" - - # - tst_compi_ioctlsocket_camel_fionbio="unknown" - tst_allow_ioctlsocket_camel_fionbio="unknown" - # - if test "$curl_cv_func_ioctlsocket_camel" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if IoctlSocket FIONBIO is compilable" >&5 -printf %s "checking if IoctlSocket FIONBIO is compilable... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_bsdsocket - -int main (void) -{ - - long flags = 0; - if(0 != IoctlSocket(0, FIONBIO, &flags)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_ioctlsocket_camel_fionbio="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_ioctlsocket_camel_fionbio="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - # - if test "$tst_compi_ioctlsocket_camel_fionbio" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if IoctlSocket FIONBIO usage allowed" >&5 -printf %s "checking if IoctlSocket FIONBIO usage allowed... " >&6; } - if test "x$curl_disallow_ioctlsocket_camel_fionbio" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_ioctlsocket_camel_fionbio="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_ioctlsocket_camel_fionbio="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if IoctlSocket FIONBIO might be used" >&5 -printf %s "checking if IoctlSocket FIONBIO might be used... " >&6; } - if test "$tst_compi_ioctlsocket_camel_fionbio" = "yes" && - test "$tst_allow_ioctlsocket_camel_fionbio" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_IOCTLSOCKET_CAMEL_FIONBIO 1" >>confdefs.h - - curl_cv_func_ioctlsocket_camel_fionbio="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_ioctlsocket_camel_fionbio="no" - fi - - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_ioctlsocket_camel="no" - fi - - - # - tst_links_memrchr="unknown" - tst_macro_memrchr="unknown" - tst_proto_memrchr="unknown" - tst_compi_memrchr="unknown" - tst_allow_memrchr="unknown" - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if memrchr can be linked" >&5 -printf %s "checking if memrchr can be linked... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#define memrchr innocuous_memrchr -#ifdef __STDC__ -# include -#else -# include -#endif -#undef memrchr -#ifdef __cplusplus -extern "C" -#endif -char memrchr (); -#if defined __stub_memrchr || defined __stub___memrchr -choke me -#endif - -int main (void) -{ -return memrchr (); - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_links_memrchr="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_links_memrchr="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$tst_links_memrchr" = "no"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if memrchr seems a macro" >&5 -printf %s "checking if memrchr seems a macro... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_string - -int main (void) -{ - - if(0 != memrchr(0, 0, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_macro_memrchr="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_macro_memrchr="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - fi - # - if test "$tst_links_memrchr" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if memrchr is prototyped" >&5 -printf %s "checking if memrchr is prototyped... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - $curl_includes_string - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memrchr" >/dev/null 2>&1 -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_proto_memrchr="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_proto_memrchr="no" - -fi -rm -rf conftest* - - fi - # - if test "$tst_proto_memrchr" = "yes" || - test "$tst_macro_memrchr" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if memrchr is compilable" >&5 -printf %s "checking if memrchr is compilable... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_string - -int main (void) -{ - - if(0 != memrchr(0, 0, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_memrchr="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_memrchr="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - # - if test "$tst_compi_memrchr" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if memrchr usage allowed" >&5 -printf %s "checking if memrchr usage allowed... " >&6; } - if test "x$curl_disallow_memrchr" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_memrchr="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_memrchr="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if memrchr might be used" >&5 -printf %s "checking if memrchr might be used... " >&6; } - if (test "$tst_proto_memrchr" = "yes" || - test "$tst_macro_memrchr" = "yes") && - test "$tst_compi_memrchr" = "yes" && - test "$tst_allow_memrchr" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_MEMRCHR 1" >>confdefs.h - - curl_cv_func_memrchr="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_memrchr="no" - fi - - - # - tst_links_poll="unknown" - tst_proto_poll="unknown" - tst_compi_poll="unknown" - tst_works_poll="unknown" - tst_allow_poll="unknown" - # - case $host_os in - darwin*|interix*) - curl_disallow_poll="yes" - tst_compi_poll="no" - ;; - esac - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if poll can be linked" >&5 -printf %s "checking if poll can be linked... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_poll - -int main (void) -{ - - if(0 != poll(0, 0, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_links_poll="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_links_poll="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$tst_links_poll" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if poll is prototyped" >&5 -printf %s "checking if poll is prototyped... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - $curl_includes_poll - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "poll" >/dev/null 2>&1 -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_proto_poll="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_proto_poll="no" - -fi -rm -rf conftest* - - fi - # - if test "$tst_proto_poll" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if poll is compilable" >&5 -printf %s "checking if poll is compilable... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_poll - -int main (void) -{ - - if(0 != poll(0, 0, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_poll="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_poll="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - # - if test "x$cross_compiling" != "xyes" && - test "$tst_compi_poll" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if poll seems to work" >&5 -printf %s "checking if poll seems to work... " >&6; } - - case $host_os in - darwin*) - if test "$cross_compiling" = yes -then : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5; } -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_stdlib - $curl_includes_poll - $curl_includes_time - -int main (void) -{ - - /* detect the original poll() breakage */ - if(0 != poll(0, 0, 10)) - exit(1); /* fail */ - else { - /* detect the 10.12 poll() breakage */ - struct timeval before, after; - int rc; - size_t us; - - gettimeofday(&before, NULL); - rc = poll(NULL, 0, 500); - gettimeofday(&after, NULL); - - us = (after.tv_sec - before.tv_sec) * 1000000 + - (after.tv_usec - before.tv_usec); - - if(us < 400000) - exit(1); - } - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_works_poll="yes" - -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_works_poll="no" - -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - ;; - *) - old=$LD_LIBRARY_PATH - LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old - export LD_LIBRARY_PATH - if test "$cross_compiling" = yes -then : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5; } -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_stdlib - $curl_includes_poll - $curl_includes_time - -int main (void) -{ - - /* detect the original poll() breakage */ - if(0 != poll(0, 0, 10)) - exit(1); /* fail */ - else { - /* detect the 10.12 poll() breakage */ - struct timeval before, after; - int rc; - size_t us; - - gettimeofday(&before, NULL); - rc = poll(NULL, 0, 500); - gettimeofday(&after, NULL); - - us = (after.tv_sec - before.tv_sec) * 1000000 + - (after.tv_usec - before.tv_usec); - - if(us < 400000) - exit(1); - } - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_works_poll="yes" - -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_works_poll="no" - -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - LD_LIBRARY_PATH=$old # restore - ;; - esac - - fi - # - if test "$tst_compi_poll" = "yes" && - test "$tst_works_poll" != "no"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if poll usage allowed" >&5 -printf %s "checking if poll usage allowed... " >&6; } - if test "x$curl_disallow_poll" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_poll="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_poll="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if poll might be used" >&5 -printf %s "checking if poll might be used... " >&6; } - if test "$tst_links_poll" = "yes" && - test "$tst_proto_poll" = "yes" && - test "$tst_compi_poll" = "yes" && - test "$tst_allow_poll" = "yes" && - test "$tst_works_poll" != "no"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_POLL_FINE 1" >>confdefs.h - - curl_cv_func_poll="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_poll="no" - fi - - -curl_includes_signal="\ -/* includes start */ -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SIGNAL_H -# include -#endif -/* includes end */" - ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$curl_includes_signal -" -if test "x$ac_cv_header_sys_types_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "signal.h" "ac_cv_header_signal_h" "$curl_includes_signal -" -if test "x$ac_cv_header_signal_h" = xyes -then : - printf "%s\n" "#define HAVE_SIGNAL_H 1" >>confdefs.h - -fi - - - - # - tst_links_sigaction="unknown" - tst_proto_sigaction="unknown" - tst_compi_sigaction="unknown" - tst_allow_sigaction="unknown" - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if sigaction can be linked" >&5 -printf %s "checking if sigaction can be linked... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#define sigaction innocuous_sigaction -#ifdef __STDC__ -# include -#else -# include -#endif -#undef sigaction -#ifdef __cplusplus -extern "C" -#endif -char sigaction (); -#if defined __stub_sigaction || defined __stub___sigaction -choke me -#endif - -int main (void) -{ -return sigaction (); - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_links_sigaction="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_links_sigaction="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$tst_links_sigaction" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if sigaction is prototyped" >&5 -printf %s "checking if sigaction is prototyped... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - $curl_includes_signal - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "sigaction" >/dev/null 2>&1 -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_proto_sigaction="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_proto_sigaction="no" - -fi -rm -rf conftest* - - fi - # - if test "$tst_proto_sigaction" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if sigaction is compilable" >&5 -printf %s "checking if sigaction is compilable... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_signal - -int main (void) -{ - - if(0 != sigaction(0, 0, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_sigaction="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_sigaction="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - # - if test "$tst_compi_sigaction" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if sigaction usage allowed" >&5 -printf %s "checking if sigaction usage allowed... " >&6; } - if test "x$curl_disallow_sigaction" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_sigaction="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_sigaction="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if sigaction might be used" >&5 -printf %s "checking if sigaction might be used... " >&6; } - if test "$tst_links_sigaction" = "yes" && - test "$tst_proto_sigaction" = "yes" && - test "$tst_compi_sigaction" = "yes" && - test "$tst_allow_sigaction" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_SIGACTION 1" >>confdefs.h - - curl_cv_func_sigaction="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_sigaction="no" - fi - - - # - tst_links_siginterrupt="unknown" - tst_proto_siginterrupt="unknown" - tst_compi_siginterrupt="unknown" - tst_allow_siginterrupt="unknown" - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if siginterrupt can be linked" >&5 -printf %s "checking if siginterrupt can be linked... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#define siginterrupt innocuous_siginterrupt -#ifdef __STDC__ -# include -#else -# include -#endif -#undef siginterrupt -#ifdef __cplusplus -extern "C" -#endif -char siginterrupt (); -#if defined __stub_siginterrupt || defined __stub___siginterrupt -choke me -#endif - -int main (void) -{ -return siginterrupt (); - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_links_siginterrupt="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_links_siginterrupt="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$tst_links_siginterrupt" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if siginterrupt is prototyped" >&5 -printf %s "checking if siginterrupt is prototyped... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - $curl_includes_signal - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "siginterrupt" >/dev/null 2>&1 -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_proto_siginterrupt="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_proto_siginterrupt="no" - -fi -rm -rf conftest* - - fi - # - if test "$tst_proto_siginterrupt" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if siginterrupt is compilable" >&5 -printf %s "checking if siginterrupt is compilable... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_signal - -int main (void) -{ - - if(0 != siginterrupt(0, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_siginterrupt="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_siginterrupt="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - # - if test "$tst_compi_siginterrupt" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if siginterrupt usage allowed" >&5 -printf %s "checking if siginterrupt usage allowed... " >&6; } - if test "x$curl_disallow_siginterrupt" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_siginterrupt="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_siginterrupt="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if siginterrupt might be used" >&5 -printf %s "checking if siginterrupt might be used... " >&6; } - if test "$tst_links_siginterrupt" = "yes" && - test "$tst_proto_siginterrupt" = "yes" && - test "$tst_compi_siginterrupt" = "yes" && - test "$tst_allow_siginterrupt" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_SIGINTERRUPT 1" >>confdefs.h - - curl_cv_func_siginterrupt="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_siginterrupt="no" - fi - - - # - tst_links_signal="unknown" - tst_proto_signal="unknown" - tst_compi_signal="unknown" - tst_allow_signal="unknown" - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if signal can be linked" >&5 -printf %s "checking if signal can be linked... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#define signal innocuous_signal -#ifdef __STDC__ -# include -#else -# include -#endif -#undef signal -#ifdef __cplusplus -extern "C" -#endif -char signal (); -#if defined __stub_signal || defined __stub___signal -choke me -#endif - -int main (void) -{ -return signal (); - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_links_signal="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_links_signal="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$tst_links_signal" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if signal is prototyped" >&5 -printf %s "checking if signal is prototyped... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - $curl_includes_signal - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "signal" >/dev/null 2>&1 -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_proto_signal="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_proto_signal="no" - -fi -rm -rf conftest* - - fi - # - if test "$tst_proto_signal" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if signal is compilable" >&5 -printf %s "checking if signal is compilable... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_signal - -int main (void) -{ - - if(0 != signal(0, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_signal="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_signal="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - # - if test "$tst_compi_signal" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if signal usage allowed" >&5 -printf %s "checking if signal usage allowed... " >&6; } - if test "x$curl_disallow_signal" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_signal="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_signal="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if signal might be used" >&5 -printf %s "checking if signal might be used... " >&6; } - if test "$tst_links_signal" = "yes" && - test "$tst_proto_signal" = "yes" && - test "$tst_compi_signal" = "yes" && - test "$tst_allow_signal" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_SIGNAL 1" >>confdefs.h - - curl_cv_func_signal="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_signal="no" - fi - - -curl_includes_setjmp="\ -/* includes start */ -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SETJMP_H -# include -#endif -/* includes end */" - ac_fn_c_check_header_compile "$LINENO" "sys/types.h" "ac_cv_header_sys_types_h" "$curl_includes_setjmp -" -if test "x$ac_cv_header_sys_types_h" = xyes -then : - printf "%s\n" "#define HAVE_SYS_TYPES_H 1" >>confdefs.h - -fi -ac_fn_c_check_header_compile "$LINENO" "setjmp.h" "ac_cv_header_setjmp_h" "$curl_includes_setjmp -" -if test "x$ac_cv_header_setjmp_h" = xyes -then : - printf "%s\n" "#define HAVE_SETJMP_H 1" >>confdefs.h - -fi - - - - # - tst_links_sigsetjmp="unknown" - tst_macro_sigsetjmp="unknown" - tst_proto_sigsetjmp="unknown" - tst_compi_sigsetjmp="unknown" - tst_allow_sigsetjmp="unknown" - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if sigsetjmp can be linked" >&5 -printf %s "checking if sigsetjmp can be linked... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#define sigsetjmp innocuous_sigsetjmp -#ifdef __STDC__ -# include -#else -# include -#endif -#undef sigsetjmp -#ifdef __cplusplus -extern "C" -#endif -char sigsetjmp (); -#if defined __stub_sigsetjmp || defined __stub___sigsetjmp -choke me -#endif - -int main (void) -{ -return sigsetjmp (); - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_links_sigsetjmp="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_links_sigsetjmp="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$tst_links_sigsetjmp" = "no"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if sigsetjmp seems a macro" >&5 -printf %s "checking if sigsetjmp seems a macro... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_setjmp - -int main (void) -{ - - sigjmp_buf env; - if(0 != sigsetjmp(env, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_macro_sigsetjmp="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_macro_sigsetjmp="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - fi - # - if test "$tst_links_sigsetjmp" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if sigsetjmp is prototyped" >&5 -printf %s "checking if sigsetjmp is prototyped... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - $curl_includes_setjmp - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "sigsetjmp" >/dev/null 2>&1 -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_proto_sigsetjmp="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_proto_sigsetjmp="no" - -fi -rm -rf conftest* - - fi - # - if test "$tst_proto_sigsetjmp" = "yes" || - test "$tst_macro_sigsetjmp" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if sigsetjmp is compilable" >&5 -printf %s "checking if sigsetjmp is compilable... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_setjmp - -int main (void) -{ - - sigjmp_buf env; - if(0 != sigsetjmp(env, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_sigsetjmp="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_sigsetjmp="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - # - if test "$tst_compi_sigsetjmp" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if sigsetjmp usage allowed" >&5 -printf %s "checking if sigsetjmp usage allowed... " >&6; } - if test "x$curl_disallow_sigsetjmp" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_sigsetjmp="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_sigsetjmp="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if sigsetjmp might be used" >&5 -printf %s "checking if sigsetjmp might be used... " >&6; } - if (test "$tst_proto_sigsetjmp" = "yes" || - test "$tst_macro_sigsetjmp" = "yes") && - test "$tst_compi_sigsetjmp" = "yes" && - test "$tst_allow_sigsetjmp" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_SIGSETJMP 1" >>confdefs.h - - curl_cv_func_sigsetjmp="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_sigsetjmp="no" - fi - - - # - tst_links_socket="unknown" - tst_proto_socket="unknown" - tst_compi_socket="unknown" - tst_allow_socket="unknown" - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if socket can be linked" >&5 -printf %s "checking if socket can be linked... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_winsock2 - $curl_includes_bsdsocket - $curl_includes_sys_socket - $curl_includes_socket - -int main (void) -{ - - if(0 != socket(0, 0, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_links_socket="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_links_socket="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$tst_links_socket" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if socket is prototyped" >&5 -printf %s "checking if socket is prototyped... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - $curl_includes_winsock2 - $curl_includes_bsdsocket - $curl_includes_sys_socket - $curl_includes_socket - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "socket" >/dev/null 2>&1 -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_proto_socket="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_proto_socket="no" - -fi -rm -rf conftest* - - fi - # - if test "$tst_proto_socket" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if socket is compilable" >&5 -printf %s "checking if socket is compilable... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_winsock2 - $curl_includes_bsdsocket - $curl_includes_sys_socket - $curl_includes_socket - -int main (void) -{ - - if(0 != socket(0, 0, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_socket="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_socket="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - # - if test "$tst_compi_socket" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if socket usage allowed" >&5 -printf %s "checking if socket usage allowed... " >&6; } - if test "x$curl_disallow_socket" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_socket="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_socket="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if socket might be used" >&5 -printf %s "checking if socket might be used... " >&6; } - if test "$tst_links_socket" = "yes" && - test "$tst_proto_socket" = "yes" && - test "$tst_compi_socket" = "yes" && - test "$tst_allow_socket" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_SOCKET 1" >>confdefs.h - - curl_cv_func_socket="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_socket="no" - fi - - - # - tst_links_socketpair="unknown" - tst_proto_socketpair="unknown" - tst_compi_socketpair="unknown" - tst_allow_socketpair="unknown" - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if socketpair can be linked" >&5 -printf %s "checking if socketpair can be linked... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#define socketpair innocuous_socketpair -#ifdef __STDC__ -# include -#else -# include -#endif -#undef socketpair -#ifdef __cplusplus -extern "C" -#endif -char socketpair (); -#if defined __stub_socketpair || defined __stub___socketpair -choke me -#endif - -int main (void) -{ -return socketpair (); - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_links_socketpair="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_links_socketpair="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$tst_links_socketpair" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if socketpair is prototyped" >&5 -printf %s "checking if socketpair is prototyped... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - $curl_includes_sys_socket - $curl_includes_socket - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "socketpair" >/dev/null 2>&1 -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_proto_socketpair="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_proto_socketpair="no" - -fi -rm -rf conftest* - - fi - # - if test "$tst_proto_socketpair" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if socketpair is compilable" >&5 -printf %s "checking if socketpair is compilable... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_sys_socket - $curl_includes_socket - -int main (void) -{ - - int sv[2]; - if(0 != socketpair(0, 0, 0, sv)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_socketpair="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_socketpair="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - # - if test "$tst_compi_socketpair" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if socketpair usage allowed" >&5 -printf %s "checking if socketpair usage allowed... " >&6; } - if test "x$curl_disallow_socketpair" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_socketpair="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_socketpair="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if socketpair might be used" >&5 -printf %s "checking if socketpair might be used... " >&6; } - if test "$tst_links_socketpair" = "yes" && - test "$tst_proto_socketpair" = "yes" && - test "$tst_compi_socketpair" = "yes" && - test "$tst_allow_socketpair" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_SOCKETPAIR 1" >>confdefs.h - - curl_cv_func_socketpair="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_socketpair="no" - fi - - - # - tst_links_strcasecmp="unknown" - tst_proto_strcasecmp="unknown" - tst_compi_strcasecmp="unknown" - tst_allow_strcasecmp="unknown" - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strcasecmp can be linked" >&5 -printf %s "checking if strcasecmp can be linked... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#define strcasecmp innocuous_strcasecmp -#ifdef __STDC__ -# include -#else -# include -#endif -#undef strcasecmp -#ifdef __cplusplus -extern "C" -#endif -char strcasecmp (); -#if defined __stub_strcasecmp || defined __stub___strcasecmp -choke me -#endif - -int main (void) -{ -return strcasecmp (); - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_links_strcasecmp="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_links_strcasecmp="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$tst_links_strcasecmp" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strcasecmp is prototyped" >&5 -printf %s "checking if strcasecmp is prototyped... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - $curl_includes_string - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "strcasecmp" >/dev/null 2>&1 -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_proto_strcasecmp="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_proto_strcasecmp="no" - -fi -rm -rf conftest* - - fi - # - if test "$tst_proto_strcasecmp" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strcasecmp is compilable" >&5 -printf %s "checking if strcasecmp is compilable... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_string - -int main (void) -{ - - if(0 != strcasecmp(0, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_strcasecmp="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_strcasecmp="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - # - if test "$tst_compi_strcasecmp" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strcasecmp usage allowed" >&5 -printf %s "checking if strcasecmp usage allowed... " >&6; } - if test "x$curl_disallow_strcasecmp" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_strcasecmp="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_strcasecmp="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strcasecmp might be used" >&5 -printf %s "checking if strcasecmp might be used... " >&6; } - if test "$tst_links_strcasecmp" = "yes" && - test "$tst_proto_strcasecmp" = "yes" && - test "$tst_compi_strcasecmp" = "yes" && - test "$tst_allow_strcasecmp" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_STRCASECMP 1" >>confdefs.h - - curl_cv_func_strcasecmp="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_strcasecmp="no" - fi - - - # - tst_links_strcmpi="unknown" - tst_proto_strcmpi="unknown" - tst_compi_strcmpi="unknown" - tst_allow_strcmpi="unknown" - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strcmpi can be linked" >&5 -printf %s "checking if strcmpi can be linked... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#define strcmpi innocuous_strcmpi -#ifdef __STDC__ -# include -#else -# include -#endif -#undef strcmpi -#ifdef __cplusplus -extern "C" -#endif -char strcmpi (); -#if defined __stub_strcmpi || defined __stub___strcmpi -choke me -#endif - -int main (void) -{ -return strcmpi (); - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_links_strcmpi="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_links_strcmpi="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$tst_links_strcmpi" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strcmpi is prototyped" >&5 -printf %s "checking if strcmpi is prototyped... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - $curl_includes_string - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "strcmpi" >/dev/null 2>&1 -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_proto_strcmpi="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_proto_strcmpi="no" - -fi -rm -rf conftest* - - fi - # - if test "$tst_proto_strcmpi" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strcmpi is compilable" >&5 -printf %s "checking if strcmpi is compilable... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_string - -int main (void) -{ - - if(0 != strcmpi(0, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_strcmpi="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_strcmpi="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - # - if test "$tst_compi_strcmpi" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strcmpi usage allowed" >&5 -printf %s "checking if strcmpi usage allowed... " >&6; } - if test "x$curl_disallow_strcmpi" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_strcmpi="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_strcmpi="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strcmpi might be used" >&5 -printf %s "checking if strcmpi might be used... " >&6; } - if test "$tst_links_strcmpi" = "yes" && - test "$tst_proto_strcmpi" = "yes" && - test "$tst_compi_strcmpi" = "yes" && - test "$tst_allow_strcmpi" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_STRCMPI 1" >>confdefs.h - - curl_cv_func_strcmpi="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_strcmpi="no" - fi - - - # - tst_links_strdup="unknown" - tst_proto_strdup="unknown" - tst_compi_strdup="unknown" - tst_allow_strdup="unknown" - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strdup can be linked" >&5 -printf %s "checking if strdup can be linked... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#define strdup innocuous_strdup -#ifdef __STDC__ -# include -#else -# include -#endif -#undef strdup -#ifdef __cplusplus -extern "C" -#endif -char strdup (); -#if defined __stub_strdup || defined __stub___strdup -choke me -#endif - -int main (void) -{ -return strdup (); - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_links_strdup="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_links_strdup="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$tst_links_strdup" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strdup is prototyped" >&5 -printf %s "checking if strdup is prototyped... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - $curl_includes_string - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "strdup" >/dev/null 2>&1 -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_proto_strdup="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_proto_strdup="no" - -fi -rm -rf conftest* - - fi - # - if test "$tst_proto_strdup" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strdup is compilable" >&5 -printf %s "checking if strdup is compilable... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_string - -int main (void) -{ - - if(0 != strdup(0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_strdup="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_strdup="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - # - if test "$tst_compi_strdup" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strdup usage allowed" >&5 -printf %s "checking if strdup usage allowed... " >&6; } - if test "x$curl_disallow_strdup" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_strdup="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_strdup="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strdup might be used" >&5 -printf %s "checking if strdup might be used... " >&6; } - if test "$tst_links_strdup" = "yes" && - test "$tst_proto_strdup" = "yes" && - test "$tst_compi_strdup" = "yes" && - test "$tst_allow_strdup" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_STRDUP 1" >>confdefs.h - - curl_cv_func_strdup="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_strdup="no" - fi - - - # - tst_links_strerror_r="unknown" - tst_proto_strerror_r="unknown" - tst_compi_strerror_r="unknown" - tst_glibc_strerror_r="unknown" - tst_posix_strerror_r="unknown" - tst_allow_strerror_r="unknown" - tst_works_glibc_strerror_r="unknown" - tst_works_posix_strerror_r="unknown" - tst_glibc_strerror_r_type_arg3="unknown" - tst_posix_strerror_r_type_arg3="unknown" - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strerror_r can be linked" >&5 -printf %s "checking if strerror_r can be linked... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#define strerror_r innocuous_strerror_r -#ifdef __STDC__ -# include -#else -# include -#endif -#undef strerror_r -#ifdef __cplusplus -extern "C" -#endif -char strerror_r (); -#if defined __stub_strerror_r || defined __stub___strerror_r -choke me -#endif - -int main (void) -{ -return strerror_r (); - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_links_strerror_r="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_links_strerror_r="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$tst_links_strerror_r" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strerror_r is prototyped" >&5 -printf %s "checking if strerror_r is prototyped... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - $curl_includes_string - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "strerror_r" >/dev/null 2>&1 -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_proto_strerror_r="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_proto_strerror_r="no" - -fi -rm -rf conftest* - - fi - # - if test "$tst_proto_strerror_r" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strerror_r is compilable" >&5 -printf %s "checking if strerror_r is compilable... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_string - -int main (void) -{ - - if(0 != strerror_r(0, 0, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_strerror_r="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_strerror_r="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - # - if test "$tst_compi_strerror_r" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strerror_r is glibc like" >&5 -printf %s "checking if strerror_r is glibc like... " >&6; } - tst_glibc_strerror_r_type_arg3="unknown" - for arg3 in 'size_t' 'int' 'unsigned int'; do - if test "$tst_glibc_strerror_r_type_arg3" = "unknown"; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_string - char *strerror_r(int errnum, char *workbuf, $arg3 bufsize); - -int main (void) -{ - - if(0 != strerror_r(0, 0, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - tst_glibc_strerror_r_type_arg3="$arg3" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - done - case "$tst_glibc_strerror_r_type_arg3" in - unknown) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_glibc_strerror_r="no" - ;; - *) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_glibc_strerror_r="yes" - ;; - esac - fi - # - if test "x$cross_compiling" != "xyes" && - test "$tst_glibc_strerror_r" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strerror_r seems to work" >&5 -printf %s "checking if strerror_r seems to work... " >&6; } - - case $host_os in - darwin*) - if test "$cross_compiling" = yes -then : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5; } -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_stdlib - $curl_includes_string -# include - -int main (void) -{ - - char buffer[1024]; - char *string = 0; - buffer[0] = '\0'; - string = strerror_r(EACCES, buffer, sizeof(buffer)); - if(!string) - exit(1); /* fail */ - if(!string[0]) - exit(1); /* fail */ - else - exit(0); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_works_glibc_strerror_r="yes" - -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_works_glibc_strerror_r="no" - -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - ;; - *) - old=$LD_LIBRARY_PATH - LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old - export LD_LIBRARY_PATH - if test "$cross_compiling" = yes -then : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5; } -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_stdlib - $curl_includes_string -# include - -int main (void) -{ - - char buffer[1024]; - char *string = 0; - buffer[0] = '\0'; - string = strerror_r(EACCES, buffer, sizeof(buffer)); - if(!string) - exit(1); /* fail */ - if(!string[0]) - exit(1); /* fail */ - else - exit(0); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_works_glibc_strerror_r="yes" - -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_works_glibc_strerror_r="no" - -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - LD_LIBRARY_PATH=$old # restore - ;; - esac - - fi - # - if test "$tst_compi_strerror_r" = "yes" && - test "$tst_works_glibc_strerror_r" != "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strerror_r is POSIX like" >&5 -printf %s "checking if strerror_r is POSIX like... " >&6; } - tst_posix_strerror_r_type_arg3="unknown" - for arg3 in 'size_t' 'int' 'unsigned int'; do - if test "$tst_posix_strerror_r_type_arg3" = "unknown"; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_string - int strerror_r(int errnum, char *resultbuf, $arg3 bufsize); - -int main (void) -{ - - if(0 != strerror_r(0, 0, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - tst_posix_strerror_r_type_arg3="$arg3" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - done - case "$tst_posix_strerror_r_type_arg3" in - unknown) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_posix_strerror_r="no" - ;; - *) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_posix_strerror_r="yes" - ;; - esac - fi - # - if test "x$cross_compiling" != "xyes" && - test "$tst_posix_strerror_r" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strerror_r seems to work" >&5 -printf %s "checking if strerror_r seems to work... " >&6; } - - case $host_os in - darwin*) - if test "$cross_compiling" = yes -then : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5; } -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_stdlib - $curl_includes_string -# include - -int main (void) -{ - - char buffer[1024]; - int error = 1; - buffer[0] = '\0'; - error = strerror_r(EACCES, buffer, sizeof(buffer)); - if(error) - exit(1); /* fail */ - if(buffer[0] == '\0') - exit(1); /* fail */ - else - exit(0); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_works_posix_strerror_r="yes" - -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_works_posix_strerror_r="no" - -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - ;; - *) - old=$LD_LIBRARY_PATH - LD_LIBRARY_PATH=$CURL_LIBRARY_PATH:$old - export LD_LIBRARY_PATH - if test "$cross_compiling" = yes -then : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5; } -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_stdlib - $curl_includes_string -# include - -int main (void) -{ - - char buffer[1024]; - int error = 1; - buffer[0] = '\0'; - error = strerror_r(EACCES, buffer, sizeof(buffer)); - if(error) - exit(1); /* fail */ - if(buffer[0] == '\0') - exit(1); /* fail */ - else - exit(0); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_works_posix_strerror_r="yes" - -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_works_posix_strerror_r="no" - -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - LD_LIBRARY_PATH=$old # restore - ;; - esac - - fi - # - if test "$tst_works_glibc_strerror_r" = "yes"; then - tst_posix_strerror_r="no" - fi - if test "$tst_works_posix_strerror_r" = "yes"; then - tst_glibc_strerror_r="no" - fi - if test "$tst_glibc_strerror_r" = "yes" && - test "$tst_works_glibc_strerror_r" != "no" && - test "$tst_posix_strerror_r" != "yes"; then - tst_allow_strerror_r="check" - fi - if test "$tst_posix_strerror_r" = "yes" && - test "$tst_works_posix_strerror_r" != "no" && - test "$tst_glibc_strerror_r" != "yes"; then - tst_allow_strerror_r="check" - fi - if test "$tst_allow_strerror_r" = "check"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strerror_r usage allowed" >&5 -printf %s "checking if strerror_r usage allowed... " >&6; } - if test "x$curl_disallow_strerror_r" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_strerror_r="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_strerror_r="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strerror_r might be used" >&5 -printf %s "checking if strerror_r might be used... " >&6; } - if test "$tst_links_strerror_r" = "yes" && - test "$tst_proto_strerror_r" = "yes" && - test "$tst_compi_strerror_r" = "yes" && - test "$tst_allow_strerror_r" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - if test "$tst_glibc_strerror_r" = "yes"; then - -printf "%s\n" "#define HAVE_STRERROR_R 1" >>confdefs.h - - -printf "%s\n" "#define HAVE_GLIBC_STRERROR_R 1" >>confdefs.h - - fi - if test "$tst_posix_strerror_r" = "yes"; then - -printf "%s\n" "#define HAVE_STRERROR_R 1" >>confdefs.h - - -printf "%s\n" "#define HAVE_POSIX_STRERROR_R 1" >>confdefs.h - - fi - curl_cv_func_strerror_r="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_strerror_r="no" - fi - # - if test "$tst_compi_strerror_r" = "yes" && - test "$tst_allow_strerror_r" = "unknown"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot determine strerror_r() style: edit lib/curl_config.h manually." >&5 -printf "%s\n" "$as_me: WARNING: cannot determine strerror_r() style: edit lib/curl_config.h manually." >&2;} - fi - # - - - # - tst_links_stricmp="unknown" - tst_proto_stricmp="unknown" - tst_compi_stricmp="unknown" - tst_allow_stricmp="unknown" - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if stricmp can be linked" >&5 -printf %s "checking if stricmp can be linked... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#define stricmp innocuous_stricmp -#ifdef __STDC__ -# include -#else -# include -#endif -#undef stricmp -#ifdef __cplusplus -extern "C" -#endif -char stricmp (); -#if defined __stub_stricmp || defined __stub___stricmp -choke me -#endif - -int main (void) -{ -return stricmp (); - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_links_stricmp="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_links_stricmp="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$tst_links_stricmp" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if stricmp is prototyped" >&5 -printf %s "checking if stricmp is prototyped... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - $curl_includes_string - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "stricmp" >/dev/null 2>&1 -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_proto_stricmp="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_proto_stricmp="no" - -fi -rm -rf conftest* - - fi - # - if test "$tst_proto_stricmp" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if stricmp is compilable" >&5 -printf %s "checking if stricmp is compilable... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_string - -int main (void) -{ - - if(0 != stricmp(0, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_stricmp="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_stricmp="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - # - if test "$tst_compi_stricmp" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if stricmp usage allowed" >&5 -printf %s "checking if stricmp usage allowed... " >&6; } - if test "x$curl_disallow_stricmp" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_stricmp="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_stricmp="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if stricmp might be used" >&5 -printf %s "checking if stricmp might be used... " >&6; } - if test "$tst_links_stricmp" = "yes" && - test "$tst_proto_stricmp" = "yes" && - test "$tst_compi_stricmp" = "yes" && - test "$tst_allow_stricmp" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_STRICMP 1" >>confdefs.h - - curl_cv_func_stricmp="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_stricmp="no" - fi - - - # - tst_links_strtok_r="unknown" - tst_proto_strtok_r="unknown" - tst_compi_strtok_r="unknown" - tst_allow_strtok_r="unknown" - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strtok_r can be linked" >&5 -printf %s "checking if strtok_r can be linked... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#define strtok_r innocuous_strtok_r -#ifdef __STDC__ -# include -#else -# include -#endif -#undef strtok_r -#ifdef __cplusplus -extern "C" -#endif -char strtok_r (); -#if defined __stub_strtok_r || defined __stub___strtok_r -choke me -#endif - -int main (void) -{ -return strtok_r (); - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_links_strtok_r="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_links_strtok_r="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$tst_links_strtok_r" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strtok_r is prototyped" >&5 -printf %s "checking if strtok_r is prototyped... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - $curl_includes_string - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "strtok_r" >/dev/null 2>&1 -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_proto_strtok_r="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_proto_strtok_r="no" - -fi -rm -rf conftest* - - fi - # - if test "$tst_proto_strtok_r" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strtok_r is compilable" >&5 -printf %s "checking if strtok_r is compilable... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_string - -int main (void) -{ - - if(0 != strtok_r(0, 0, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_strtok_r="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_strtok_r="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - # - if test "$tst_compi_strtok_r" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strtok_r usage allowed" >&5 -printf %s "checking if strtok_r usage allowed... " >&6; } - if test "x$curl_disallow_strtok_r" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_strtok_r="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_strtok_r="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strtok_r might be used" >&5 -printf %s "checking if strtok_r might be used... " >&6; } - if test "$tst_links_strtok_r" = "yes" && - test "$tst_proto_strtok_r" = "yes" && - test "$tst_compi_strtok_r" = "yes" && - test "$tst_allow_strtok_r" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_STRTOK_R 1" >>confdefs.h - - curl_cv_func_strtok_r="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_strtok_r="no" - fi - - - # - tst_links_strtoll="unknown" - tst_proto_strtoll="unknown" - tst_compi_strtoll="unknown" - tst_allow_strtoll="unknown" - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strtoll can be linked" >&5 -printf %s "checking if strtoll can be linked... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#define strtoll innocuous_strtoll -#ifdef __STDC__ -# include -#else -# include -#endif -#undef strtoll -#ifdef __cplusplus -extern "C" -#endif -char strtoll (); -#if defined __stub_strtoll || defined __stub___strtoll -choke me -#endif - -int main (void) -{ -return strtoll (); - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_links_strtoll="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_links_strtoll="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - # - if test "$tst_links_strtoll" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strtoll is prototyped" >&5 -printf %s "checking if strtoll is prototyped... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - $curl_includes_stdlib - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "strtoll" >/dev/null 2>&1 -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_proto_strtoll="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_proto_strtoll="no" - -fi -rm -rf conftest* - - fi - # - if test "$tst_proto_strtoll" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strtoll is compilable" >&5 -printf %s "checking if strtoll is compilable... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - $curl_includes_stdlib - -int main (void) -{ - - if(0 != strtoll(0, 0, 0)) - return 1; - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_compi_strtoll="yes" - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_compi_strtoll="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - # - if test "$tst_compi_strtoll" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strtoll usage allowed" >&5 -printf %s "checking if strtoll usage allowed... " >&6; } - if test "x$curl_disallow_strtoll" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tst_allow_strtoll="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - tst_allow_strtoll="no" - fi - fi - # - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if strtoll might be used" >&5 -printf %s "checking if strtoll might be used... " >&6; } - if test "$tst_links_strtoll" = "yes" && - test "$tst_proto_strtoll" = "yes" && - test "$tst_compi_strtoll" = "yes" && - test "$tst_allow_strtoll" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define HAVE_STRTOLL 1" >>confdefs.h - - curl_cv_func_strtoll="yes" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_cv_func_strtoll="no" - fi - - -case $host in - *msdosdjgpp) - ac_cv_func_pipe=no - skipcheck_pipe=yes - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: skip check for pipe on msdosdjgpp" >&5 -printf "%s\n" "$as_me: skip check for pipe on msdosdjgpp" >&6;} - ;; -esac - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC options needed to detect all undeclared functions" >&5 -printf %s "checking for $CC options needed to detect all undeclared functions... " >&6; } -if test ${ac_cv_c_undeclared_builtin_options+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_save_CFLAGS=$CFLAGS - ac_cv_c_undeclared_builtin_options='cannot detect' - for ac_arg in '' -fno-builtin; do - CFLAGS="$ac_save_CFLAGS $ac_arg" - # This test program should *not* compile successfully. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int main (void) -{ -(void) strchr; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - -else $as_nop - # This test program should compile successfully. - # No library function is consistently available on - # freestanding implementations, so test against a dummy - # declaration. Include always-available headers on the - # off chance that they somehow elicit warnings. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include -extern void ac_decl (int, char *); - -int main (void) -{ -(void) ac_decl (0, (char *) 0); - (void) ac_decl; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - if test x"$ac_arg" = x -then : - ac_cv_c_undeclared_builtin_options='none needed' -else $as_nop - ac_cv_c_undeclared_builtin_options=$ac_arg -fi - break -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - done - CFLAGS=$ac_save_CFLAGS - -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5 -printf "%s\n" "$ac_cv_c_undeclared_builtin_options" >&6; } - case $ac_cv_c_undeclared_builtin_options in #( - 'cannot detect') : - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot make $CC report undeclared builtins -See \`config.log' for more details" "$LINENO" 5; } ;; #( - 'none needed') : - ac_c_undeclared_builtin_options='' ;; #( - *) : - ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;; -esac - -ac_fn_check_decl "$LINENO" "getpwuid_r" "ac_cv_have_decl_getpwuid_r" "#include - #include -" "$ac_c_undeclared_builtin_options" "CFLAGS" -if test "x$ac_cv_have_decl_getpwuid_r" = xyes -then : - ac_have_decl=1 -else $as_nop - ac_have_decl=0 -fi -printf "%s\n" "#define HAVE_DECL_GETPWUID_R $ac_have_decl" >>confdefs.h -if test $ac_have_decl = 1 -then : - -else $as_nop - -printf "%s\n" "#define HAVE_DECL_GETPWUID_R_MISSING 1" >>confdefs.h - -fi - - - - - for ac_func in fnmatch fchmod geteuid getpass_r getppid getpwuid getpwuid_r getrlimit gettimeofday if_nametoindex mach_absolute_time pipe sched_yield sendmsg setlocale setmode setrlimit utime utimes -do : - as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes" -then : - cat >>confdefs.h <<_ACEOF -#define `printf "%s\n" "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - - -else $as_nop - - func="$ac_func" - eval skipcheck=\$skipcheck_$func - if test "x$skipcheck" != "xyes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking deeper for $func" >&5 -printf %s "checking deeper for $func... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - -int main (void) -{ - - $func (); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - eval "ac_cv_func_$func=yes" - -cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$func" | sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' | sed 's/^A-Z0-9_/_/g'` 1 -_ACEOF - - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: but still no" >&5 -printf "%s\n" "but still no" >&6; } - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - fi - -fi - -done - - - # - tst_method="unknown" - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to set a socket into non-blocking mode" >&5 -printf %s "checking how to set a socket into non-blocking mode... " >&6; } - if test "x$curl_cv_func_fcntl_o_nonblock" = "xyes"; then - tst_method="fcntl O_NONBLOCK" - elif test "x$curl_cv_func_ioctl_fionbio" = "xyes"; then - tst_method="ioctl FIONBIO" - elif test "x$curl_cv_func_ioctlsocket_fionbio" = "xyes"; then - tst_method="ioctlsocket FIONBIO" - elif test "x$curl_cv_func_ioctlsocket_camel_fionbio" = "xyes"; then - tst_method="IoctlSocket FIONBIO" - elif test "x$curl_cv_func_setsockopt_so_nonblock" = "xyes"; then - tst_method="setsockopt SO_NONBLOCK" - fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $tst_method" >&5 -printf "%s\n" "$tst_method" >&6; } - if test "$tst_method" = "unknown"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cannot determine non-blocking socket method." >&5 -printf "%s\n" "$as_me: WARNING: cannot determine non-blocking socket method." >&2;} - fi - - - -# Extract the first word of "perl", so it can be a program name with args. -set dummy perl; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_PERL+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $PERL in - [\\/]* | ?:[\\/]*) - ac_cv_path_PERL="$PERL" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/local/bin/perl:/usr/bin/:/usr/local/bin " -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_PERL="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PERL=$ac_cv_path_PERL -if test -n "$PERL"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 -printf "%s\n" "$PERL" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - - -for ac_prog in gnroff nroff -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_NROFF+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $NROFF in - [\\/]* | ?:[\\/]*) - ac_cv_path_NROFF="$NROFF" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin/:/usr/local/bin " -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_NROFF="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -NROFF=$ac_cv_path_NROFF -if test -n "$NROFF"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NROFF" >&5 -printf "%s\n" "$NROFF" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - test -n "$NROFF" && break -done - - - -if test -n "$NROFF"; then - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to use *nroff to get plain text from man pages" >&5 -printf %s "checking how to use *nroff to get plain text from man pages... " >&6; } - MANOPT="-man" - mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null` - if test -z "$mancheck"; then - MANOPT="-mandoc" - mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null` - if test -z "$mancheck"; then - MANOPT="" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5 -printf "%s\n" "failed" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: found no *nroff option to get plaintext from man pages" >&5 -printf "%s\n" "$as_me: WARNING: found no *nroff option to get plaintext from man pages" >&2;} - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MANOPT" >&5 -printf "%s\n" "$MANOPT" >&6; } - fi - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MANOPT" >&5 -printf "%s\n" "$MANOPT" >&6; } - fi - -fi - -if test -z "$MANOPT" -then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: disabling built-in manual" >&5 -printf "%s\n" "$as_me: WARNING: disabling built-in manual" >&2;} - USE_MANUAL="no"; -fi - - -if test "$USE_MANUAL" = "1"; then - -printf "%s\n" "#define USE_MANUAL 1" >>confdefs.h - - curl_manual_msg="enabled" -fi - - if test x"$USE_MANUAL" = x1; then - USE_MANUAL_TRUE= - USE_MANUAL_FALSE='#' -else - USE_MANUAL_TRUE='#' - USE_MANUAL_FALSE= -fi - - - - # - if test "$want_ares" = "yes"; then - clean_CPPFLAGS="$CPPFLAGS" - clean_LDFLAGS="$LDFLAGS" - clean_LIBS="$LIBS" - configure_runpath=`pwd` - if test -n "$want_ares_path"; then - ARES_PCDIR="$want_ares_path/lib/pkgconfig" - - if test -n "$PKG_CONFIG"; then - PKGCONFIG="$PKG_CONFIG" - else - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKGCONFIG=$ac_cv_path_PKGCONFIG -if test -n "$PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 -printf "%s\n" "$PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKGCONFIG"; then - ac_pt_PKGCONFIG=$PKGCONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $ac_pt_PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG -if test -n "$ac_pt_PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 -printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_PKGCONFIG" = x; then - PKGCONFIG="no" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKGCONFIG=$ac_pt_PKGCONFIG - fi -else - PKGCONFIG="$ac_cv_path_PKGCONFIG" -fi - - fi - - if test "x$PKGCONFIG" != "xno"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libcares options with pkg-config" >&5 -printf %s "checking for libcares options with pkg-config... " >&6; } - itexists=` - if test -n "$ARES_PCDIR"; then - PKG_CONFIG_LIBDIR="$ARES_PCDIR" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --exists libcares >/dev/null 2>&1 && echo 1` - - if test -z "$itexists"; then - PKGCONFIG="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 -printf "%s\n" "found" >&6; } - fi - fi - - if test "$PKGCONFIG" != "no" ; then - ares_LIBS=` - if test -n "$ARES_PCDIR"; then - PKG_CONFIG_LIBDIR="$ARES_PCDIR" - export PKG_CONFIG_LIBDIR - fi - - $PKGCONFIG --libs-only-l libcares` - ares_LDFLAGS=` - if test -n "$ARES_PCDIR"; then - PKG_CONFIG_LIBDIR="$ARES_PCDIR" - export PKG_CONFIG_LIBDIR - fi - - $PKGCONFIG --libs-only-L libcares` - ares_CPPFLAGS=` - if test -n "$ARES_PCDIR"; then - PKG_CONFIG_LIBDIR="$ARES_PCDIR" - export PKG_CONFIG_LIBDIR - fi - - $PKGCONFIG --cflags-only-I libcares` - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: ares LIBS: \"$ares_LIBS\"" >&5 -printf "%s\n" "$as_me: pkg-config: ares LIBS: \"$ares_LIBS\"" >&6;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: ares LDFLAGS: \"$ares_LDFLAGS\"" >&5 -printf "%s\n" "$as_me: pkg-config: ares LDFLAGS: \"$ares_LDFLAGS\"" >&6;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: ares CPPFLAGS: \"$ares_CPPFLAGS\"" >&5 -printf "%s\n" "$as_me: pkg-config: ares CPPFLAGS: \"$ares_CPPFLAGS\"" >&6;} - else - ares_CPPFLAGS="-I$want_ares_path/include" - ares_LDFLAGS="-L$want_ares_path/lib" - ares_LIBS="-lcares" - fi - else - - if test -n "$PKG_CONFIG"; then - PKGCONFIG="$PKG_CONFIG" - else - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKGCONFIG=$ac_cv_path_PKGCONFIG -if test -n "$PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5 -printf "%s\n" "$PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKGCONFIG"; then - ac_pt_PKGCONFIG=$PKGCONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_ac_pt_PKGCONFIG+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $ac_pt_PKGCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/bin:/usr/local/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_path_ac_pt_PKGCONFIG="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG -if test -n "$ac_pt_PKGCONFIG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5 -printf "%s\n" "$ac_pt_PKGCONFIG" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_pt_PKGCONFIG" = x; then - PKGCONFIG="no" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKGCONFIG=$ac_pt_PKGCONFIG - fi -else - PKGCONFIG="$ac_cv_path_PKGCONFIG" -fi - - fi - - if test "x$PKGCONFIG" != "xno"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libcares options with pkg-config" >&5 -printf %s "checking for libcares options with pkg-config... " >&6; } - itexists=` - if test -n ""; then - PKG_CONFIG_LIBDIR="" - export PKG_CONFIG_LIBDIR - fi - $PKGCONFIG --exists libcares >/dev/null 2>&1 && echo 1` - - if test -z "$itexists"; then - PKGCONFIG="no" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found" >&5 -printf "%s\n" "found" >&6; } - fi - fi - - if test "$PKGCONFIG" != "no" ; then - ares_LIBS=`$PKGCONFIG --libs-only-l libcares` - ares_LDFLAGS=`$PKGCONFIG --libs-only-L libcares` - ares_CPPFLAGS=`$PKGCONFIG --cflags-only-I libcares` - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: ares_LIBS: \"$ares_LIBS\"" >&5 -printf "%s\n" "$as_me: pkg-config: ares_LIBS: \"$ares_LIBS\"" >&6;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: ares_LDFLAGS: \"$ares_LDFLAGS\"" >&5 -printf "%s\n" "$as_me: pkg-config: ares_LDFLAGS: \"$ares_LDFLAGS\"" >&6;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: pkg-config: ares_CPPFLAGS: \"$ares_CPPFLAGS\"" >&5 -printf "%s\n" "$as_me: pkg-config: ares_CPPFLAGS: \"$ares_CPPFLAGS\"" >&6;} - else - ares_CPPFLAGS="" - ares_LDFLAGS="" - ares_LIBS="-lcares" - fi - fi - # - CPPFLAGS="$clean_CPPFLAGS $ares_CPPFLAGS" - LDFLAGS="$clean_LDFLAGS $ares_LDFLAGS" - LIBS="$ares_LIBS $clean_LIBS" - # - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that c-ares is good and recent enough" >&5 -printf %s "checking that c-ares is good and recent enough... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#include - /* set of dummy functions in case c-ares was built with debug */ - void curl_dofree() { } - void curl_sclose() { } - void curl_domalloc() { } - void curl_docalloc() { } - void curl_socket() { } - -int main (void) -{ - - ares_channel channel; - ares_cancel(channel); /* added in 1.2.0 */ - ares_process_fd(channel, 0, 0); /* added in 1.4.0 */ - ares_dup(&channel, channel); /* added in 1.6.0 */ - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - as_fn_error $? "c-ares library defective or too old" "$LINENO" 5 - CPPFLAGS="$clean_CPPFLAGS" - LDFLAGS="$clean_LDFLAGS" - LIBS="$clean_LIBS" - # prevent usage - want_ares="no" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - - if test "$want_ares" = "yes"; then - -printf "%s\n" "#define USE_ARES 1" >>confdefs.h - - USE_ARES=1 - - curl_res_msg="c-ares" - fi - fi - - -if test "x$curl_cv_native_windows" != "xyes" && - test "x$enable_shared" = "xyes"; then - build_libhostname=yes -else - build_libhostname=no -fi - if test x$build_libhostname = xyes; then - BUILD_LIBHOSTNAME_TRUE= - BUILD_LIBHOSTNAME_FALSE='#' -else - BUILD_LIBHOSTNAME_TRUE='#' - BUILD_LIBHOSTNAME_FALSE= -fi - - -if test "x$want_ares" != xyes; then - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable the threaded resolver" >&5 -printf %s "checking whether to enable the threaded resolver... " >&6; } - OPT_THRES="default" - # Check whether --enable-threaded_resolver was given. -if test ${enable_threaded_resolver+y} -then : - enableval=$enable_threaded_resolver; OPT_THRES=$enableval -fi - - case "$OPT_THRES" in - no) - want_thres="no" - ;; - *) - want_thres="yes" - ;; - esac - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $want_thres" >&5 -printf "%s\n" "$want_thres" >&6; } - -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use POSIX threads for threaded resolver" >&5 -printf %s "checking whether to use POSIX threads for threaded resolver... " >&6; } -# Check whether --enable-pthreads was given. -if test ${enable_pthreads+y} -then : - enableval=$enable_pthreads; case "$enableval" in - no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - want_pthreads=no - ;; - *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - want_pthreads=yes - ;; - esac -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: auto" >&5 -printf "%s\n" "auto" >&6; } - want_pthreads=auto - - -fi - - -if test "$want_pthreads" != "no"; then - if test "$want_pthreads" = "yes" && test "$dontwant_rt" = "yes"; then - as_fn_error $? "options --enable-pthreads and --disable-rt are mutually exclusive" "$LINENO" 5 - fi - if test "$dontwant_rt" != "no"; then - if test "$want_pthreads" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: --enable-pthreads Ignored since librt is disabled." >&5 -printf "%s\n" "$as_me: WARNING: --enable-pthreads Ignored since librt is disabled." >&2;} - fi - want_pthreads=no - fi -fi - -if test "$want_pthreads" != "no" && test "$want_thres" != "yes"; then - want_pthreads=no -fi - -if test "$want_pthreads" != "no"; then - ac_fn_c_check_header_compile "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default" -if test "x$ac_cv_header_pthread_h" = xyes -then : - -printf "%s\n" "#define HAVE_PTHREAD_H 1" >>confdefs.h - - save_CFLAGS="$CFLAGS" - save_LIBS="$LIBS" - - LIBS= - ac_fn_c_check_func "$LINENO" "pthread_create" "ac_cv_func_pthread_create" -if test "x$ac_cv_func_pthread_create" = xyes -then : - USE_THREADS_POSIX=1 -fi - - LIBS="$save_LIBS" - - case $host in - *-hp-hpux*) - USE_THREADS_POSIX="" - ;; - *) - ;; - esac - - if test "$USE_THREADS_POSIX" != "1" - then - # assign PTHREAD for pkg-config use - PTHREAD=" -pthread" - - case $host in - *-ibm-aix*) - COMPILER_VERSION=`"$CC" -qversion 2>/dev/null` - if test x"$COMPILER_VERSION" = "x"; then - CFLAGS="$CFLAGS -pthread" - else - CFLAGS="$CFLAGS -qthreaded" - fi - ;; - powerpc-*amigaos*) - PTHREAD=" -lpthread" - ;; - *) - CFLAGS="$CFLAGS -pthread" - ;; - esac - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthread" >&5 -printf %s "checking for pthread_create in -lpthread... " >&6; } -if test ${ac_cv_lib_pthread_pthread_create+y} -then : - printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS -LIBS="-lpthread $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -#ifdef __cplusplus -extern "C" -#endif -char pthread_create (); -int main (void) -{ -return pthread_create (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_pthread_pthread_create=yes -else $as_nop - ac_cv_lib_pthread_pthread_create=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_create" >&5 -printf "%s\n" "$ac_cv_lib_pthread_pthread_create" >&6; } -if test "x$ac_cv_lib_pthread_pthread_create" = xyes -then : - USE_THREADS_POSIX=1 -else $as_nop - CFLAGS="$save_CFLAGS" -fi - - fi - - if test "x$USE_THREADS_POSIX" = "x1" - then - -printf "%s\n" "#define USE_THREADS_POSIX 1" >>confdefs.h - - curl_res_msg="POSIX threaded" - fi - -fi - -fi - -if test "$want_thres" = "yes" && test "x$USE_THREADS_POSIX" != "x1"; then - if test "$want_pthreads" = "yes"; then - as_fn_error $? "--enable-pthreads but pthreads was not found" "$LINENO" 5 - fi - if test "$curl_cv_native_windows" = "yes"; then - USE_THREADS_WIN32=1 - -printf "%s\n" "#define USE_THREADS_WIN32 1" >>confdefs.h - - curl_res_msg="Win32 threaded" - else - as_fn_error $? "Threaded resolver enabled but no thread library found" "$LINENO" 5 - fi -fi - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking convert -I options to -isystem" >&5 -printf %s "checking convert -I options to -isystem... " >&6; } - if test "$compiler_id" = "GNU_C" || - test "$compiler_id" = "CLANG"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - tmp_has_include="no" - tmp_chg_FLAGS="$CFLAGS" - for word1 in $tmp_chg_FLAGS; do - case "$word1" in - -I*) - tmp_has_include="yes" - ;; - esac - done - if test "$tmp_has_include" = "yes"; then - tmp_chg_FLAGS=`echo "$tmp_chg_FLAGS" | "$SED" 's/^-I/ -isystem /g'` - tmp_chg_FLAGS=`echo "$tmp_chg_FLAGS" | "$SED" 's/ -I/ -isystem /g'` - CFLAGS="$tmp_chg_FLAGS" - squeeze CFLAGS - fi - tmp_has_include="no" - tmp_chg_FLAGS="$CPPFLAGS" - for word1 in $tmp_chg_FLAGS; do - case "$word1" in - -I*) - tmp_has_include="yes" - ;; - esac - done - if test "$tmp_has_include" = "yes"; then - tmp_chg_FLAGS=`echo "$tmp_chg_FLAGS" | "$SED" 's/^-I/ -isystem /g'` - tmp_chg_FLAGS=`echo "$tmp_chg_FLAGS" | "$SED" 's/ -I/ -isystem /g'` - CPPFLAGS="$tmp_chg_FLAGS" - squeeze CPPFLAGS - fi - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable verbose strings" >&5 -printf %s "checking whether to enable verbose strings... " >&6; } -# Check whether --enable-verbose was given. -if test ${enable_verbose+y} -then : - enableval=$enable_verbose; case "$enableval" in - no) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -printf "%s\n" "#define CURL_DISABLE_VERBOSE_STRINGS 1" >>confdefs.h - - curl_verbose_msg="no" - ;; - *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - esac -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable SSPI support (Windows native builds only)" >&5 -printf %s "checking whether to enable SSPI support (Windows native builds only)... " >&6; } -# Check whether --enable-sspi was given. -if test ${enable_sspi+y} -then : - enableval=$enable_sspi; case "$enableval" in - yes) - if test "$curl_cv_native_windows" = "yes"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -printf "%s\n" "#define USE_WINDOWS_SSPI 1" >>confdefs.h - - USE_WINDOWS_SSPI=1 - - curl_sspi_msg="enabled" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: --enable-sspi Ignored. Only supported on native Windows builds." >&5 -printf "%s\n" "$as_me: WARNING: --enable-sspi Ignored. Only supported on native Windows builds." >&2;} - fi - ;; - *) - if test "x$SCHANNEL_ENABLED" = "x1"; then - # --with-schannel implies --enable-sspi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - fi - ;; - esac -else $as_nop - if test "x$SCHANNEL_ENABLED" = "x1"; then - # --with-schannel implies --enable-sspi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - fi - -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable cryptographic authentication methods" >&5 -printf %s "checking whether to enable cryptographic authentication methods... " >&6; } -# Check whether --enable-crypto-auth was given. -if test ${enable_crypto_auth+y} -then : - enableval=$enable_crypto_auth; case "$enableval" in - no) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -printf "%s\n" "#define CURL_DISABLE_CRYPTO_AUTH 1" >>confdefs.h - - CURL_DISABLE_CRYPTO_AUTH=1 - ;; - *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - esac -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support NTLM" >&5 -printf %s "checking whether to support NTLM... " >&6; } -# Check whether --enable-ntlm was given. -if test ${enable_ntlm+y} -then : - enableval=$enable_ntlm; case "$enableval" in - no) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -printf "%s\n" "#define CURL_DISABLE_NTLM 1" >>confdefs.h - - CURL_DISABLE_NTLM=1 - ;; - *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - esac -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -fi - - - - OPT_NTLM_WB="default" - # Check whether --enable-ntlm-wb was given. -if test ${enable_ntlm_wb+y} -then : - enableval=$enable_ntlm_wb; OPT_NTLM_WB=$enableval -fi - - want_ntlm_wb_file="/usr/bin/ntlm_auth" - case "$OPT_NTLM_WB" in - no) - want_ntlm_wb="no" - ;; - default) - want_ntlm_wb="yes" - ;; - *) - want_ntlm_wb="yes" - if test -n "$enableval" && test "$enableval" != "yes"; then - want_ntlm_wb_file="$enableval" - fi - ;; - esac - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable NTLM delegation to winbind's helper" >&5 -printf %s "checking whether to enable NTLM delegation to winbind's helper... " >&6; } - if test "$curl_cv_native_windows" = "yes" || - test "x$SSL_ENABLED" = "x"; then - want_ntlm_wb_file="" - want_ntlm_wb="no" - fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $want_ntlm_wb" >&5 -printf "%s\n" "$want_ntlm_wb" >&6; } - if test "$want_ntlm_wb" = "yes"; then - -printf "%s\n" "#define NTLM_WB_ENABLED 1" >>confdefs.h - - -printf "%s\n" "#define NTLM_WB_FILE \"$want_ntlm_wb_file\"" >>confdefs.h - - NTLM_WB_ENABLED=1 - fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable TLS-SRP authentication" >&5 -printf %s "checking whether to enable TLS-SRP authentication... " >&6; } -# Check whether --enable-tls-srp was given. -if test ${enable_tls_srp+y} -then : - enableval=$enable_tls_srp; case "$enableval" in - no) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - want_tls_srp=no - ;; - *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - want_tls_srp=yes - ;; - esac -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - want_tls_srp=yes - -fi - - -if test "$want_tls_srp" = "yes" && ( test "x$HAVE_GNUTLS_SRP" = "x1" || test "x$HAVE_OPENSSL_SRP" = "x1") ; then - -printf "%s\n" "#define USE_TLS_SRP 1" >>confdefs.h - - USE_TLS_SRP=1 - curl_tls_srp_msg="enabled" -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable Unix domain sockets" >&5 -printf %s "checking whether to enable Unix domain sockets... " >&6; } -# Check whether --enable-unix-sockets was given. -if test ${enable_unix_sockets+y} -then : - enableval=$enable_unix_sockets; case "$enableval" in - no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - want_unix_sockets=no - ;; - *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - want_unix_sockets=yes - ;; - esac -else $as_nop - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: auto" >&5 -printf "%s\n" "auto" >&6; } - want_unix_sockets=auto - - -fi - -if test "x$want_unix_sockets" != "xno"; then - ac_fn_c_check_member "$LINENO" "struct sockaddr_un" "sun_path" "ac_cv_member_struct_sockaddr_un_sun_path" " - #include - -" -if test "x$ac_cv_member_struct_sockaddr_un_sun_path" = xyes -then : - - -printf "%s\n" "#define USE_UNIX_SOCKETS 1" >>confdefs.h - - USE_UNIX_SOCKETS=1 - - curl_unix_sockets_msg="enabled" - -else $as_nop - - if test "x$want_unix_sockets" = "xyes"; then - as_fn_error $? "--enable-unix-sockets is not available on this platform!" "$LINENO" 5 - fi - -fi - -fi - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support cookies" >&5 -printf %s "checking whether to support cookies... " >&6; } -# Check whether --enable-cookies was given. -if test ${enable_cookies+y} -then : - enableval=$enable_cookies; case "$enableval" in - no) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -printf "%s\n" "#define CURL_DISABLE_COOKIES 1" >>confdefs.h - - ;; - *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - esac -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support socketpair" >&5 -printf %s "checking whether to support socketpair... " >&6; } -# Check whether --enable-socketpair was given. -if test ${enable_socketpair+y} -then : - enableval=$enable_socketpair; case "$enableval" in - no) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -printf "%s\n" "#define CURL_DISABLE_SOCKETPAIR 1" >>confdefs.h - - ;; - *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - esac -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support HTTP authentication" >&5 -printf %s "checking whether to support HTTP authentication... " >&6; } -# Check whether --enable-http-auth was given. -if test ${enable_http_auth+y} -then : - enableval=$enable_http_auth; case "$enableval" in - no) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -printf "%s\n" "#define CURL_DISABLE_HTTP_AUTH 1" >>confdefs.h - - ;; - *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - esac -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support DoH" >&5 -printf %s "checking whether to support DoH... " >&6; } -# Check whether --enable-doh was given. -if test ${enable_doh+y} -then : - enableval=$enable_doh; case "$enableval" in - no) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -printf "%s\n" "#define CURL_DISABLE_DOH 1" >>confdefs.h - - ;; - *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - esac -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support the MIME API" >&5 -printf %s "checking whether to support the MIME API... " >&6; } -# Check whether --enable-mime was given. -if test ${enable_mime+y} -then : - enableval=$enable_mime; case "$enableval" in - no) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -printf "%s\n" "#define CURL_DISABLE_MIME 1" >>confdefs.h - - ;; - *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - esac -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support date parsing" >&5 -printf %s "checking whether to support date parsing... " >&6; } -# Check whether --enable-dateparse was given. -if test ${enable_dateparse+y} -then : - enableval=$enable_dateparse; case "$enableval" in - no) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -printf "%s\n" "#define CURL_DISABLE_PARSEDATE 1" >>confdefs.h - - ;; - *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - esac -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support netrc parsing" >&5 -printf %s "checking whether to support netrc parsing... " >&6; } -# Check whether --enable-netrc was given. -if test ${enable_netrc+y} -then : - enableval=$enable_netrc; case "$enableval" in - no) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -printf "%s\n" "#define CURL_DISABLE_NETRC 1" >>confdefs.h - - ;; - *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - esac -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support progress-meter" >&5 -printf %s "checking whether to support progress-meter... " >&6; } -# Check whether --enable-progress-meter was given. -if test ${enable_progress_meter+y} -then : - enableval=$enable_progress_meter; case "$enableval" in - no) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -printf "%s\n" "#define CURL_DISABLE_PROGRESS_METER 1" >>confdefs.h - - ;; - *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - esac -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support DNS shuffling" >&5 -printf %s "checking whether to support DNS shuffling... " >&6; } -# Check whether --enable-dnsshuffle was given. -if test ${enable_dnsshuffle+y} -then : - enableval=$enable_dnsshuffle; case "$enableval" in - no) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -printf "%s\n" "#define CURL_DISABLE_SHUFFLE_DNS 1" >>confdefs.h - - ;; - *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - esac -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support curl_easy_option*" >&5 -printf %s "checking whether to support curl_easy_option*... " >&6; } -# Check whether --enable-get-easy-options was given. -if test ${enable_get_easy_options+y} -then : - enableval=$enable_get_easy_options; case "$enableval" in - no) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -printf "%s\n" "#define CURL_DISABLE_GETOPTIONS 1" >>confdefs.h - - ;; - *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - esac -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support alt-svc" >&5 -printf %s "checking whether to support alt-svc... " >&6; } -# Check whether --enable-alt-svc was given. -if test ${enable_alt_svc+y} -then : - enableval=$enable_alt_svc; case "$enableval" in - no) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - -printf "%s\n" "#define CURL_DISABLE_ALTSVC 1" >>confdefs.h - - curl_altsvc_msg="no"; - enable_altsvc="no" - ;; - *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - esac -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support headers-api" >&5 -printf %s "checking whether to support headers-api... " >&6; } -# Check whether --enable-headers-api was given. -if test ${enable_headers_api+y} -then : - enableval=$enable_headers_api; case "$enableval" in - no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - curl_headers_msg="no (--enable-headers-api)" - -printf "%s\n" "#define CURL_DISABLE_HEADERS_API 1" >>confdefs.h - - ;; - *) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - esac -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - -fi - - -if test -n "$SSL_ENABLED"; then - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to support HSTS" >&5 -printf %s "checking whether to support HSTS... " >&6; } - # Check whether --enable-hsts was given. -if test ${enable_hsts+y} -then : - enableval=$enable_hsts; case "$enableval" in - no) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - hsts="no" - ;; - *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - ;; - esac -else $as_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hsts" >&5 -printf "%s\n" "$hsts" >&6; } - -fi - -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: disables HSTS due to lack of SSL" >&5 -printf "%s\n" "$as_me: disables HSTS due to lack of SSL" >&6;} - hsts="no" -fi - -if test "x$hsts" != "xyes"; then - curl_hsts_msg="no (--enable-hsts)"; - -printf "%s\n" "#define CURL_DISABLE_HSTS 1" >>confdefs.h - -fi - -if test "x$want_ech" != "xno"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ECH support is available" >&5 -printf %s "checking whether ECH support is available... " >&6; } - - ECH_ENABLED=0 - ECH_SUPPORT='' - - if test "x$OPENSSL_ENABLED" = "x1"; then - - for ac_func in SSL_get_ech_status -do : - ac_fn_c_check_func "$LINENO" "SSL_get_ech_status" "ac_cv_func_SSL_get_ech_status" -if test "x$ac_cv_func_SSL_get_ech_status" = xyes -then : - printf "%s\n" "#define HAVE_SSL_GET_ECH_STATUS 1" >>confdefs.h - ECH_SUPPORT="ECH support available (OpenSSL with SSL_get_ech_status)" - ECH_ENABLED=1 -fi - -done - - fi - - if test "x$ECH_ENABLED" = "x1"; then - -printf "%s\n" "#define USE_ECH 1" >>confdefs.h - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ECH_SUPPORT" >&5 -printf "%s\n" "$ECH_SUPPORT" >&6; } - experimental="$experimental ECH" - else - as_fn_error $? "--enable-ech ignored: No ECH support found" "$LINENO" 5 - fi -fi - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether hiding of library internal symbols will actually happen" >&5 -printf %s "checking whether hiding of library internal symbols will actually happen... " >&6; } - CFLAG_CURL_SYMBOL_HIDING="" - doing_symbol_hiding="no" - if test x"$curl_cv_native_windows" != "xyes" && - test "$want_symbol_hiding" = "yes" && - test "$supports_symbol_hiding" = "yes"; then - doing_symbol_hiding="yes" - CFLAG_CURL_SYMBOL_HIDING="$symbol_hiding_CFLAGS" - -printf "%s\n" "#define CURL_EXTERN_SYMBOL $symbol_hiding_EXTERN" >>confdefs.h - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } - fi - if test x$doing_symbol_hiding = xyes; then - DOING_CURL_SYMBOL_HIDING_TRUE= - DOING_CURL_SYMBOL_HIDING_FALSE='#' -else - DOING_CURL_SYMBOL_HIDING_TRUE='#' - DOING_CURL_SYMBOL_HIDING_FALSE= -fi - - - - -LIBCURL_LIBS="$LIBS$PTHREAD" - - - - - -BLANK_AT_MAKETIME= - - - if test x$cross_compiling = xyes; then - CROSSCOMPILING_TRUE= - CROSSCOMPILING_FALSE='#' -else - CROSSCOMPILING_TRUE='#' - CROSSCOMPILING_FALSE= -fi - - -ENABLE_SHARED="$enable_shared" - - -ENABLE_STATIC="$enable_static" - - -if test "x$enable_shared" = "xno"; then - LIBCURL_NO_SHARED=$LIBCURL_LIBS -else - LIBCURL_NO_SHARED= -fi - - - -if test "x$OPENSSL_ENABLED" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES SSL" -elif test -n "$SSL_ENABLED"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES SSL" -fi -if test "x$IPV6_ENABLED" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES IPv6" -fi -if test "x$USE_UNIX_SOCKETS" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES UnixSockets" -fi -if test "x$HAVE_LIBZ" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES libz" -fi -if test "x$HAVE_BROTLI" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES brotli" -fi -if test "x$HAVE_ZSTD" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES zstd" -fi -if test "x$USE_ARES" = "x1" -o "x$USE_THREADS_POSIX" = "x1" \ - -o "x$USE_THREADS_WIN32" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES AsynchDNS" -fi -if test "x$IDN_ENABLED" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES IDN" -fi -if test "x$USE_WINDOWS_SSPI" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES SSPI" -fi - -if test "x$HAVE_GSSAPI" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES GSS-API" -fi - -if test "x$curl_psl_msg" = "xenabled"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES PSL" -fi - -if test "x$curl_gsasl_msg" = "xenabled"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES GSASL" -fi - -if test "x$enable_altsvc" = "xyes"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES alt-svc" -fi -if test "x$hsts" = "xyes"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES HSTS" -fi - -if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" -a \ - \( "x$HAVE_GSSAPI" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \); then - SUPPORT_FEATURES="$SUPPORT_FEATURES SPNEGO" -fi - -if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" -a \ - \( "x$HAVE_GSSAPI" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \); then - SUPPORT_FEATURES="$SUPPORT_FEATURES Kerberos" -fi - -use_curl_ntlm_core=no - -if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" -a \ - "x$CURL_DISABLE_NTLM" != "x1"; then - if test "x$OPENSSL_ENABLED" = "x1" -o "x$MBEDTLS_ENABLED" = "x1" \ - -o "x$GNUTLS_ENABLED" = "x1" -o "x$NSS_ENABLED" = "x1" \ - -o "x$SECURETRANSPORT_ENABLED" = "x1" \ - -o "x$USE_WIN32_CRYPTO" = "x1" \ - -o "x$WOLFSSL_NTLM" = "x1"; then - use_curl_ntlm_core=yes - fi - - if test "x$use_curl_ntlm_core" = "xyes" \ - -o "x$USE_WINDOWS_SSPI" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM" - - if test "x$CURL_DISABLE_HTTP" != "x1" -a \ - "x$NTLM_WB_ENABLED" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM_WB" - fi - fi -fi - -if test "x$USE_TLS_SRP" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES TLS-SRP" -fi - -if test "x$USE_NGHTTP2" = "x1" -o "x$USE_HYPER" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES HTTP2" -fi - -if test "x$USE_NGTCP2" = "x1" -o "x$USE_QUICHE" = "x1" \ - -o "x$USE_MSH3" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES HTTP3" -fi - -if test "x$CURL_WITH_MULTI_SSL" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES MultiSSL" -fi - -if test "x$https_proxy" != "xno"; then - if test "x$OPENSSL_ENABLED" = "x1" -o "x$GNUTLS_ENABLED" = "x1" \ - -o "x$NSS_ENABLED" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES HTTPS-proxy" - fi -fi - -if test "x$ECH_ENABLED" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES ECH" -fi - -if test ${ac_cv_sizeof_curl_off_t} -gt 4; then - if test ${ac_cv_sizeof_off_t} -gt 4 -o \ - "$curl_win32_file_api" = "win32_large_files"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES Largefile" - fi -fi - -if test "$tst_atomic" = "yes"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES threadsafe" -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - #include - -int main (void) -{ - - #if (WINVER < 0x600) && (_WIN32_WINNT < 0x600) - #error - #endif - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - SUPPORT_FEATURES="$SUPPORT_FEATURES threadsafe" - -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -SUPPORT_FEATURES=`echo $SUPPORT_FEATURES | tr ' ' '\012' | sort | tr '\012' ' '` - - -if test "x$CURL_DISABLE_HTTP" != "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTP" - if test "x$SSL_ENABLED" = "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTPS" - fi -fi -if test "x$CURL_DISABLE_FTP" != "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTP" - if test "x$SSL_ENABLED" = "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTPS" - fi -fi -if test "x$CURL_DISABLE_FILE" != "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FILE" -fi -if test "x$CURL_DISABLE_TELNET" != "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TELNET" -fi -if test "x$CURL_DISABLE_LDAP" != "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAP" - if test "x$CURL_DISABLE_LDAPS" != "x1"; then - if (test "x$USE_OPENLDAP" = "x1" && test "x$SSL_ENABLED" = "x1") || - (test "x$USE_OPENLDAP" != "x1" && test "x$HAVE_LDAP_SSL" = "x1"); then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAPS" - fi - fi -fi -if test "x$CURL_DISABLE_DICT" != "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS DICT" -fi -if test "x$CURL_DISABLE_TFTP" != "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TFTP" -fi -if test "x$CURL_DISABLE_GOPHER" != "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS GOPHER" - if test "x$SSL_ENABLED" = "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS GOPHERS" - fi -fi -if test "x$CURL_DISABLE_MQTT" != "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS MQTT" -fi -if test "x$CURL_DISABLE_POP3" != "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3" - if test "x$SSL_ENABLED" = "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3S" - fi -fi -if test "x$CURL_DISABLE_IMAP" != "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAP" - if test "x$SSL_ENABLED" = "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAPS" - fi -fi -if test "x$CURL_DISABLE_SMB" != "x1" \ - -a "x$use_curl_ntlm_core" = "xyes"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMB" - if test "x$SSL_ENABLED" = "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMBS" - fi -fi -if test "x$CURL_DISABLE_SMTP" != "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTP" - if test "x$SSL_ENABLED" = "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTPS" - fi -fi -if test "x$USE_LIBSSH2" = "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SCP" - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP" -fi -if test "x$USE_LIBSSH" = "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SCP" - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP" -fi -if test "x$USE_WOLFSSH" = "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP" -fi -if test "x$CURL_DISABLE_RTSP" != "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTSP" -fi -if test "x$USE_LIBRTMP" = "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTMP" -fi - -SUPPORT_PROTOCOLS=`echo $SUPPORT_PROTOCOLS | tr ' ' '\012' | sort | tr '\012' ' '` - - - - -squeeze CFLAGS -squeeze CPPFLAGS -squeeze DEFS -squeeze LDFLAGS -squeeze LIBS - -squeeze LIBCURL_LIBS -squeeze CURL_NETWORK_LIBS -squeeze CURL_NETWORK_AND_TIME_LIBS - -squeeze SUPPORT_FEATURES -squeeze SUPPORT_PROTOCOLS - - - - xc_bad_var_libs=no - for xc_word in $LIBS; do - case "$xc_word" in - -l* | --library=*) - : - ;; - *) - xc_bad_var_libs=yes - ;; - esac - done - if test $xc_bad_var_libs = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: using LIBS: $LIBS" >&5 -printf "%s\n" "$as_me: using LIBS: $LIBS" >&6;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: LIBS note: LIBS should only be used to specify libraries (-lname)." >&5 -printf "%s\n" "$as_me: LIBS note: LIBS should only be used to specify libraries (-lname)." >&6;} - fi - - - xc_bad_var_ldflags=no - for xc_word in $LDFLAGS; do - case "$xc_word" in - -D*) - xc_bad_var_ldflags=yes - ;; - -U*) - xc_bad_var_ldflags=yes - ;; - -I*) - xc_bad_var_ldflags=yes - ;; - -l* | --library=*) - xc_bad_var_ldflags=yes - ;; - esac - done - if test $xc_bad_var_ldflags = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: using LDFLAGS: $LDFLAGS" >&5 -printf "%s\n" "$as_me: using LDFLAGS: $LDFLAGS" >&6;} - xc_bad_var_msg="LDFLAGS note: LDFLAGS should only be used to specify linker flags, not" - for xc_word in $LDFLAGS; do - case "$xc_word" in - -D*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg macro definitions. Use CPPFLAGS for: $xc_word" >&5 -printf "%s\n" "$as_me: $xc_bad_var_msg macro definitions. Use CPPFLAGS for: $xc_word" >&6;} - ;; - -U*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg macro suppressions. Use CPPFLAGS for: $xc_word" >&5 -printf "%s\n" "$as_me: $xc_bad_var_msg macro suppressions. Use CPPFLAGS for: $xc_word" >&6;} - ;; - -I*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg include directories. Use CPPFLAGS for: $xc_word" >&5 -printf "%s\n" "$as_me: $xc_bad_var_msg include directories. Use CPPFLAGS for: $xc_word" >&6;} - ;; - -l* | --library=*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg libraries. Use LIBS for: $xc_word" >&5 -printf "%s\n" "$as_me: $xc_bad_var_msg libraries. Use LIBS for: $xc_word" >&6;} - ;; - esac - done - fi - - - xc_bad_var_cppflags=no - for xc_word in $CPPFLAGS; do - case "$xc_word" in - -rpath*) - xc_bad_var_cppflags=yes - ;; - -L* | --library-path=*) - xc_bad_var_cppflags=yes - ;; - -l* | --library=*) - xc_bad_var_cppflags=yes - ;; - esac - done - if test $xc_bad_var_cppflags = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: using CPPFLAGS: $CPPFLAGS" >&5 -printf "%s\n" "$as_me: using CPPFLAGS: $CPPFLAGS" >&6;} - xc_bad_var_msg="CPPFLAGS note: CPPFLAGS should only be used to specify C preprocessor flags, not" - for xc_word in $CPPFLAGS; do - case "$xc_word" in - -rpath*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg library runtime directories. Use LDFLAGS for: $xc_word" >&5 -printf "%s\n" "$as_me: $xc_bad_var_msg library runtime directories. Use LDFLAGS for: $xc_word" >&6;} - ;; - -L* | --library-path=*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg library directories. Use LDFLAGS for: $xc_word" >&5 -printf "%s\n" "$as_me: $xc_bad_var_msg library directories. Use LDFLAGS for: $xc_word" >&6;} - ;; - -l* | --library=*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg libraries. Use LIBS for: $xc_word" >&5 -printf "%s\n" "$as_me: $xc_bad_var_msg libraries. Use LIBS for: $xc_word" >&6;} - ;; - esac - done - fi - - - xc_bad_var_cflags=no - for xc_word in $CFLAGS; do - case "$xc_word" in - -D*) - xc_bad_var_cflags=yes - ;; - -U*) - xc_bad_var_cflags=yes - ;; - -I*) - xc_bad_var_cflags=yes - ;; - -rpath*) - xc_bad_var_cflags=yes - ;; - -L* | --library-path=*) - xc_bad_var_cflags=yes - ;; - -l* | --library=*) - xc_bad_var_cflags=yes - ;; - esac - done - if test $xc_bad_var_cflags = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: using CFLAGS: $CFLAGS" >&5 -printf "%s\n" "$as_me: using CFLAGS: $CFLAGS" >&6;} - xc_bad_var_msg="CFLAGS note: CFLAGS should only be used to specify C compiler flags, not" - for xc_word in $CFLAGS; do - case "$xc_word" in - -D*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg macro definitions. Use CPPFLAGS for: $xc_word" >&5 -printf "%s\n" "$as_me: $xc_bad_var_msg macro definitions. Use CPPFLAGS for: $xc_word" >&6;} - ;; - -U*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg macro suppressions. Use CPPFLAGS for: $xc_word" >&5 -printf "%s\n" "$as_me: $xc_bad_var_msg macro suppressions. Use CPPFLAGS for: $xc_word" >&6;} - ;; - -I*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg include directories. Use CPPFLAGS for: $xc_word" >&5 -printf "%s\n" "$as_me: $xc_bad_var_msg include directories. Use CPPFLAGS for: $xc_word" >&6;} - ;; - -rpath*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg library runtime directories. Use LDFLAGS for: $xc_word" >&5 -printf "%s\n" "$as_me: $xc_bad_var_msg library runtime directories. Use LDFLAGS for: $xc_word" >&6;} - ;; - -L* | --library-path=*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg library directories. Use LDFLAGS for: $xc_word" >&5 -printf "%s\n" "$as_me: $xc_bad_var_msg library directories. Use LDFLAGS for: $xc_word" >&6;} - ;; - -l* | --library=*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $xc_bad_var_msg libraries. Use LIBS for: $xc_word" >&5 -printf "%s\n" "$as_me: $xc_bad_var_msg libraries. Use LIBS for: $xc_word" >&6;} - ;; - esac - done - fi - - if test $xc_bad_var_libs = yes || - test $xc_bad_var_cflags = yes || - test $xc_bad_var_ldflags = yes || - test $xc_bad_var_cppflags = yes; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Continuing even with errors mentioned immediately above this line." >&5 -printf "%s\n" "$as_me: WARNING: Continuing even with errors mentioned immediately above this line." >&2;} - fi - - -SSL_BACKENDS=${ssl_backends} - - -if test "x$want_curldebug_assumed" = "xyes" && - test "x$want_curldebug" = "xyes" && test "x$USE_ARES" = "x1"; then - ac_configure_args="$ac_configure_args --enable-curldebug" -fi - -ac_config_files="$ac_config_files Makefile docs/Makefile docs/examples/Makefile docs/libcurl/Makefile docs/libcurl/opts/Makefile docs/cmdline-opts/Makefile include/Makefile include/curl/Makefile src/Makefile lib/Makefile scripts/Makefile lib/libcurl.vers lib/libcurl.plist tests/Makefile tests/certs/Makefile tests/certs/scripts/Makefile tests/data/Makefile tests/server/Makefile tests/libtest/Makefile tests/unit/Makefile packages/Makefile packages/vms/Makefile curl-config libcurl.pc" - -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 overridden 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, we kill variables containing newlines. -# 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. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}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 "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - if test "x$cache_file" != "x/dev/null"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -printf "%s\n" "$as_me: updating cache $cache_file" >&6;} - if test ! -f "$cache_file" || test -h "$cache_file"; then - cat confcache >"$cache_file" - else - case $cache_file in #( - */* | ?:*) - mv -f confcache "$cache_file"$$ && - mv -f "$cache_file"$$ "$cache_file" ;; #( - *) - mv -f confcache "$cache_file" ;; - esac - fi - fi - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} - 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}' - -DEFS=-DHAVE_CONFIG_H - -ac_libobjs= -ac_ltlibobjs= -U= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" - as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - -if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then - as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 -printf %s "checking that generated files are newer than configure... " >&6; } - if test -n "$am_sleep_pid"; then - # Hide warnings about reused PIDs. - wait $am_sleep_pid 2>/dev/null - fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5 -printf "%s\n" "done" >&6; } -if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - as_fn_error $? "conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi - if test -n "$EXEEXT"; then - am__EXEEXT_TRUE= - am__EXEEXT_FALSE='#' -else - am__EXEEXT_TRUE='#' - am__EXEEXT_FALSE= -fi - -if test -z "${CURL_LT_SHLIB_USE_VERSION_INFO_TRUE}" && test -z "${CURL_LT_SHLIB_USE_VERSION_INFO_FALSE}"; then - as_fn_error $? "conditional \"CURL_LT_SHLIB_USE_VERSION_INFO\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${CURL_LT_SHLIB_USE_NO_UNDEFINED_TRUE}" && test -z "${CURL_LT_SHLIB_USE_NO_UNDEFINED_FALSE}"; then - as_fn_error $? "conditional \"CURL_LT_SHLIB_USE_NO_UNDEFINED\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${CURL_LT_SHLIB_USE_MIMPURE_TEXT_TRUE}" && test -z "${CURL_LT_SHLIB_USE_MIMPURE_TEXT_FALSE}"; then - as_fn_error $? "conditional \"CURL_LT_SHLIB_USE_MIMPURE_TEXT\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${USE_CPPFLAG_CURL_STATICLIB_TRUE}" && test -z "${USE_CPPFLAG_CURL_STATICLIB_FALSE}"; then - as_fn_error $? "conditional \"USE_CPPFLAG_CURL_STATICLIB\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${USE_EXPLICIT_LIB_DEPS_TRUE}" && test -z "${USE_EXPLICIT_LIB_DEPS_FALSE}"; then - as_fn_error $? "conditional \"USE_EXPLICIT_LIB_DEPS\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${CURLDEBUG_TRUE}" && test -z "${CURLDEBUG_FALSE}"; then - as_fn_error $? "conditional \"CURLDEBUG\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${BUILD_UNITTESTS_TRUE}" && test -z "${BUILD_UNITTESTS_FALSE}"; then - as_fn_error $? "conditional \"BUILD_UNITTESTS\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${DOING_NATIVE_WINDOWS_TRUE}" && test -z "${DOING_NATIVE_WINDOWS_FALSE}"; then - as_fn_error $? "conditional \"DOING_NATIVE_WINDOWS\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${HAVE_LIBZ_TRUE}" && test -z "${HAVE_LIBZ_FALSE}"; then - as_fn_error $? "conditional \"HAVE_LIBZ\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${BUILD_STUB_GSS_TRUE}" && test -z "${BUILD_STUB_GSS_FALSE}"; then - as_fn_error $? "conditional \"BUILD_STUB_GSS\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${USE_LIBPSL_TRUE}" && test -z "${USE_LIBPSL_FALSE}"; then - as_fn_error $? "conditional \"USE_LIBPSL\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${USE_GSASL_TRUE}" && test -z "${USE_GSASL_FALSE}"; then - as_fn_error $? "conditional \"USE_GSASL\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_TRUE}" && test -z "${CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS_FALSE}"; then - as_fn_error $? "conditional \"CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${USE_MANUAL_TRUE}" && test -z "${USE_MANUAL_FALSE}"; then - as_fn_error $? "conditional \"USE_MANUAL\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${BUILD_LIBHOSTNAME_TRUE}" && test -z "${BUILD_LIBHOSTNAME_FALSE}"; then - as_fn_error $? "conditional \"BUILD_LIBHOSTNAME\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${DOING_CURL_SYMBOL_HIDING_TRUE}" && test -z "${DOING_CURL_SYMBOL_HIDING_FALSE}"; then - as_fn_error $? "conditional \"DOING_CURL_SYMBOL_HIDING\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${CROSSCOMPILING_TRUE}" && test -z "${CROSSCOMPILING_FALSE}"; then - as_fn_error $? "conditional \"CROSSCOMPILING\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi - -: "${CONFIG_STATUS=./config.status}" -ac_write_fail=0 -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} -as_write_fail=0 -cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 -#! $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 -ac_cs_recheck=false -ac_cs_silent=false - -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -as_nop=: -if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 -then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else $as_nop - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - - -# Reset variables that may have inherited troublesome values from -# the environment. - -# IFS needs to be set, to space, tab, and newline, in precisely that order. -# (If _AS_PATH_WALK were called with IFS unset, it would have the -# side effect of setting IFS to empty, thus disabling word splitting.) -# Quoting is to prevent editors from complaining about space-tab. -as_nl=' -' -export as_nl -IFS=" "" $as_nl" - -PS1='$ ' -PS2='> ' -PS4='+ ' - -# Ensure predictable behavior from utilities with locale-dependent output. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# We cannot yet rely on "unset" to work, but we need these variables -# to be unset--not just set to an empty or harmless value--now, to -# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct -# also avoids known problems related to "unset" and subshell syntax -# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). -for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH -do eval test \${$as_var+y} \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done - -# Ensure that fds 0, 1, and 2 are open. -if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi -if (exec 3>&2) ; then :; else exec 2>/dev/null; fi - - - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - test -r "$as_dir$0" && as_myself=$as_dir$0 && break - done -IFS=$as_save_IFS - - ;; -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 - printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - printf "%s\n" "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null -then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else $as_nop - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null -then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else $as_nop - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# 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 - - -# Determine whether it's possible to make 'echo' print without a newline. -# These variables are no longer used directly by Autoconf, but are AC_SUBSTed -# for compatibility with existing Makefiles. -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -# For backward compatibility with old third-party macros, we provide -# the shell variables $as_echo and $as_echo_n. New code should use -# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. -as_echo='printf %s\n' -as_echo_n='printf %s' - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval 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="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## -_ASEOF -test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# Save the log message, to keep $0 and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by curl $as_me -, which was -generated by GNU Autoconf 2.71. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -case $ac_config_files in *" -"*) set x $ac_config_files; shift; ac_config_files=$*;; -esac - -case $ac_config_headers in *" -"*) set x $ac_config_headers; shift; ac_config_headers=$*;; -esac - - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# Files that config.status was made for. -config_files="$ac_config_files" -config_headers="$ac_config_headers" -config_commands="$ac_config_commands" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions -from templates according to the current configuration. Unless the files -and actions are specified as TAGs, all are instantiated by default. - -Usage: $0 [OPTION]... [TAG]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - --config print configuration, then exit - -q, --quiet, --silent - do not print progress messages - -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 commands: -$config_commands - -Report bugs to ." - -_ACEOF -ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` -ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config='$ac_cs_config_escaped' -ac_cs_version="\\ -curl config.status - -configured by $0, generated by GNU Autoconf 2.71, - with options \\"\$ac_cs_config\\" - -Copyright (C) 2021 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' -MKDIR_P='$MKDIR_P' -AWK='$AWK' -test -n "\$AWK" || AWK=awk -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# The default lists apply if the user does not specify any file. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=?*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - --*=) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg= - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - printf "%s\n" "$ac_cs_version"; exit ;; - --config | --confi | --conf | --con | --co | --c ) - printf "%s\n" "$ac_cs_config"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - '') as_fn_error $? "missing file argument" ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append CONFIG_HEADERS " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h) - # Conflict between --help and --header - as_fn_error $? "ambiguous option: \`$1' -Try \`$0 --help' for more information.";; - --help | --hel | -h ) - printf "%s\n" "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; - - *) as_fn_append ac_config_targets " $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -if \$ac_cs_recheck; then - set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion - shift - \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 - CONFIG_SHELL='$SHELL' - export CONFIG_SHELL - exec "\$@" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - printf "%s\n" "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# -# INIT-COMMANDS -# -AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" - - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' -macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' -AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`' -DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' -OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' -enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' -enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' -pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' -enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' -shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' -SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' -ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' -PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' -host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' -host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' -host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' -build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' -build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' -build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' -SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' -Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' -GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' -EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' -FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' -LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' -NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' -LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' -max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' -ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' -exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' -lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' -lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' -lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' -lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' -lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' -reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' -reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' -FILECMD='`$ECHO "$FILECMD" | $SED "$delay_single_quote_subst"`' -deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' -file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' -file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' -want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' -sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' -AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' -lt_ar_flags='`$ECHO "$lt_ar_flags" | $SED "$delay_single_quote_subst"`' -AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' -archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' -STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' -RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' -old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' -old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' -lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' -CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' -CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' -compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' -GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' -lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' -nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' -lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' -lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' -objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' -MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' -need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' -MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' -DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' -NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' -LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' -OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' -OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' -libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' -shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' -extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' -export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' -whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' -compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' -old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' -archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' -module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' -module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' -with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' -allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' -no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' -hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' -hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' -hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' -hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' -hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' -inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' -link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' -always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' -export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' -exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' -include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' -prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' -postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' -file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' -variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' -need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' -need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' -version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' -runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' -libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' -library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' -soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' -install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' -postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' -postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' -finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' -hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' -sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' -configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' -configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' -hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' -enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' -old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' -striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' - -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in AS \ -DLLTOOL \ -OBJDUMP \ -SHELL \ -ECHO \ -PATH_SEPARATOR \ -SED \ -GREP \ -EGREP \ -FGREP \ -LD \ -NM \ -LN_S \ -lt_SP2NL \ -lt_NL2SP \ -reload_flag \ -FILECMD \ -deplibs_check_method \ -file_magic_cmd \ -file_magic_glob \ -want_nocaseglob \ -sharedlib_from_linklib_cmd \ -AR \ -archiver_list_spec \ -STRIP \ -RANLIB \ -CC \ -CFLAGS \ -compiler \ -lt_cv_sys_global_symbol_pipe \ -lt_cv_sys_global_symbol_to_cdecl \ -lt_cv_sys_global_symbol_to_import \ -lt_cv_sys_global_symbol_to_c_name_address \ -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ -lt_cv_nm_interface \ -nm_file_list_spec \ -lt_cv_truncate_bin \ -lt_prog_compiler_no_builtin_flag \ -lt_prog_compiler_pic \ -lt_prog_compiler_wl \ -lt_prog_compiler_static \ -lt_cv_prog_compiler_c_o \ -need_locks \ -MANIFEST_TOOL \ -DSYMUTIL \ -NMEDIT \ -LIPO \ -OTOOL \ -OTOOL64 \ -shrext_cmds \ -export_dynamic_flag_spec \ -whole_archive_flag_spec \ -compiler_needs_object \ -with_gnu_ld \ -allow_undefined_flag \ -no_undefined_flag \ -hardcode_libdir_flag_spec \ -hardcode_libdir_separator \ -exclude_expsyms \ -include_expsyms \ -file_list_spec \ -variables_saved_for_relink \ -libname_spec \ -library_names_spec \ -soname_spec \ -install_override_mode \ -finish_eval \ -old_striplib \ -striplib; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in reload_cmds \ -old_postinstall_cmds \ -old_postuninstall_cmds \ -old_archive_cmds \ -extract_expsyms_cmds \ -old_archive_from_new_cmds \ -old_archive_from_expsyms_cmds \ -archive_cmds \ -archive_expsym_cmds \ -module_cmds \ -module_expsym_cmds \ -export_symbols_cmds \ -prelink_cmds \ -postlink_cmds \ -postinstall_cmds \ -postuninstall_cmds \ -finish_cmds \ -sys_lib_search_path_spec \ -configure_time_dlsearch_path \ -configure_time_lt_sys_library_path; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -ac_aux_dir='$ac_aux_dir' - -# See if we are running on zsh, and set the options that allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST -fi - - - PACKAGE='$PACKAGE' - VERSION='$VERSION' - RM='$RM' - ofile='$ofile' - - - - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "lib/curl_config.h") CONFIG_HEADERS="$CONFIG_HEADERS lib/curl_config.h" ;; - "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "docs/Makefile") CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;; - "docs/examples/Makefile") CONFIG_FILES="$CONFIG_FILES docs/examples/Makefile" ;; - "docs/libcurl/Makefile") CONFIG_FILES="$CONFIG_FILES docs/libcurl/Makefile" ;; - "docs/libcurl/opts/Makefile") CONFIG_FILES="$CONFIG_FILES docs/libcurl/opts/Makefile" ;; - "docs/cmdline-opts/Makefile") CONFIG_FILES="$CONFIG_FILES docs/cmdline-opts/Makefile" ;; - "include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;; - "include/curl/Makefile") CONFIG_FILES="$CONFIG_FILES include/curl/Makefile" ;; - "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; - "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; - "scripts/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/Makefile" ;; - "lib/libcurl.vers") CONFIG_FILES="$CONFIG_FILES lib/libcurl.vers" ;; - "lib/libcurl.plist") CONFIG_FILES="$CONFIG_FILES lib/libcurl.plist" ;; - "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; - "tests/certs/Makefile") CONFIG_FILES="$CONFIG_FILES tests/certs/Makefile" ;; - "tests/certs/scripts/Makefile") CONFIG_FILES="$CONFIG_FILES tests/certs/scripts/Makefile" ;; - "tests/data/Makefile") CONFIG_FILES="$CONFIG_FILES tests/data/Makefile" ;; - "tests/server/Makefile") CONFIG_FILES="$CONFIG_FILES tests/server/Makefile" ;; - "tests/libtest/Makefile") CONFIG_FILES="$CONFIG_FILES tests/libtest/Makefile" ;; - "tests/unit/Makefile") CONFIG_FILES="$CONFIG_FILES tests/unit/Makefile" ;; - "packages/Makefile") CONFIG_FILES="$CONFIG_FILES packages/Makefile" ;; - "packages/vms/Makefile") CONFIG_FILES="$CONFIG_FILES packages/vms/Makefile" ;; - "curl-config") CONFIG_FILES="$CONFIG_FILES curl-config" ;; - "libcurl.pc") CONFIG_FILES="$CONFIG_FILES libcurl.pc" ;; - - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; - 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+y} || CONFIG_FILES=$config_files - test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers - test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= ac_tmp= - trap 'exit_status=$? - : "${ac_tmp:=$tmp}" - { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status -' 0 - trap 'as_fn_exit 1' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 -ac_tmp=$tmp - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. -if test -n "$CONFIG_FILES"; then - - -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` -if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\\r' -else - ac_cs_awk_cr=$ac_cr -fi - -echo 'BEGIN {' >"$ac_tmp/subs1.awk" && -_ACEOF - - -{ - echo "cat >conf$$subs.awk <<_ACEOF" && - echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && - echo "_ACEOF" -} >conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - . ./conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - - ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` - if test $ac_delim_n = $ac_delim_num; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -rm -f conf$$subs.sh - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && -_ACEOF -sed -n ' -h -s/^/S["/; s/!.*/"]=/ -p -g -s/^[^!]*!// -:repl -t repl -s/'"$ac_delim"'$// -t delim -:nl -h -s/\(.\{148\}\)..*/\1/ -t more1 -s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ -p -n -b repl -:more1 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t nl -:delim -h -s/\(.\{148\}\)..*/\1/ -t more2 -s/["\\]/\\&/g; s/^/"/; s/$/"/ -p -b -:more2 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t delim -' >$CONFIG_STATUS || ac_write_fail=1 -rm -f conf$$subs.awk -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACAWK -cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - - print line -} - -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -else - cat -fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ - || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 -_ACEOF - -# VPATH may cause trouble with some makes, so we remove sole $(srcdir), -# ${srcdir} and @srcdir@ entries 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[ ]*=[ ]*/{ -h -s/// -s/^/:/ -s/[ ]*$/:/ -s/:\$(srcdir):/:/g -s/:\${srcdir}:/:/g -s/:@srcdir@:/:/g -s/^:*// -s/:*$// -x -s/\(=[ ]*\).*/\1/ -G -s/\n// -s/^[^=]*=[ ]*$// -}' -fi - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -fi # test -n "$CONFIG_FILES" - -# Set up the scripts for CONFIG_HEADERS section. -# No need to generate them if there are no CONFIG_HEADERS. -# This happens for instance with `./config.status Makefile'. -if test -n "$CONFIG_HEADERS"; then -cat >"$ac_tmp/defines.awk" <<\_ACAWK || -BEGIN { -_ACEOF - -# Transform confdefs.h into an awk script `defines.awk', embedded as -# here-document in config.status, that substitutes the proper values into -# config.h.in to produce config.h. - -# Create a delimiter string that does not exist in confdefs.h, to ease -# handling of long lines. -ac_delim='%!_!# ' -for ac_last_try in false false :; do - ac_tt=`sed -n "/$ac_delim/p" confdefs.h` - if test -z "$ac_tt"; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -# For the awk script, D is an array of macro values keyed by name, -# likewise P contains macro parameters if any. Preserve backslash -# newline sequences. - -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -sed -n ' -s/.\{148\}/&'"$ac_delim"'/g -t rset -:rset -s/^[ ]*#[ ]*define[ ][ ]*/ / -t def -d -:def -s/\\$// -t bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3"/p -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p -d -:bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3\\\\\\n"\\/p -t cont -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p -t cont -d -:cont -n -s/.\{148\}/&'"$ac_delim"'/g -t clear -:clear -s/\\$// -t bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/"/p -d -:bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p -b cont -' >$CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - for (key in D) D_is_set[key] = 1 - FS = "" -} -/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { - line = \$ 0 - split(line, arg, " ") - if (arg[1] == "#") { - defundef = arg[2] - mac1 = arg[3] - } else { - defundef = substr(arg[1], 2) - mac1 = arg[2] - } - split(mac1, mac2, "(") #) - macro = mac2[1] - prefix = substr(line, 1, index(line, defundef) - 1) - if (D_is_set[macro]) { - # Preserve the white space surrounding the "#". - print prefix "define", macro P[macro] D[macro] - next - } else { - # Replace #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. - if (defundef == "undef") { - print "/*", prefix defundef, macro, "*/" - next - } - } -} -{ print } -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 -fi # test -n "$CONFIG_HEADERS" - - -eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$ac_tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" - done - - # 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. */ - configure_input='Generated from '` - printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -printf "%s\n" "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`printf "%s\n" "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$ac_tmp/stdin" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac - ac_MKDIR_P=$MKDIR_P - case $MKDIR_P in - [\\/$]* | ?:[\\/]* ) ;; - */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; - esac -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_sed_extra="$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;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&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -s&@MKDIR_P@&$ac_MKDIR_P&;t t -$ac_datarootdir_hack -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ - >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ - "$ac_tmp/out"`; test -z "$ac_out"; } && - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&5 -printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&2;} - - rm -f "$ac_tmp/stdin" - case $ac_file in - -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; - *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; - esac \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - ;; - :H) - # - # CONFIG_HEADER - # - if test x"$ac_file" != x-; then - { - printf "%s\n" "/* $configure_input */" >&1 \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" - } >"$ac_tmp/config.h" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} - else - rm -f "$ac_file" - mv "$ac_tmp/config.h" "$ac_file" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - fi - else - printf "%s\n" "/* $configure_input */" >&1 \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ - || as_fn_error $? "could not create -" "$LINENO" 5 - fi -# Compute "$ac_file"'s index in $config_headers. -_am_arg="$ac_file" -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || -$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$_am_arg" : 'X\(//\)[^/]' \| \ - X"$_am_arg" : 'X\(//\)$' \| \ - X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X"$_am_arg" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'`/stamp-h$_am_stamp_count - ;; - - :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -printf "%s\n" "$as_me: executing $ac_file commands" >&6;} - ;; - esac - - - case $ac_file$ac_mode in - "depfiles":C) test x"$AMDEP_TRUE" != x"" || { - # Older Autoconf quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - # TODO: see whether this extra hack can be removed once we start - # requiring Autoconf 2.70 or later. - case $CONFIG_FILES in #( - *\'*) : - eval set x "$CONFIG_FILES" ;; #( - *) : - set x $CONFIG_FILES ;; #( - *) : - ;; -esac - shift - # Used to flag and report bootstrapping failures. - am_rc=0 - for am_mf - do - # Strip MF so we end up with the name of the file. - am_mf=`printf "%s\n" "$am_mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile which includes - # dependency-tracking related rules and includes. - # Grep'ing the whole file directly is not great: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ - || continue - am_dirpart=`$as_dirname -- "$am_mf" || -$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$am_mf" : 'X\(//\)[^/]' \| \ - X"$am_mf" : 'X\(//\)$' \| \ - X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X"$am_mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - am_filepart=`$as_basename -- "$am_mf" || -$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ - X"$am_mf" : 'X\(//\)$' \| \ - X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X/"$am_mf" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - { echo "$as_me:$LINENO: cd "$am_dirpart" \ - && sed -e '/# am--include-marker/d' "$am_filepart" \ - | $MAKE -f - am--depfiles" >&5 - (cd "$am_dirpart" \ - && sed -e '/# am--include-marker/d' "$am_filepart" \ - | $MAKE -f - am--depfiles) >&5 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } || am_rc=$? - done - if test $am_rc -ne 0; then - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "Something went wrong bootstrapping makefile fragments - for automatic dependency tracking. If GNU make was not used, consider - re-running the configure script with MAKE=\"gmake\" (or whatever is - necessary). You can also try re-running configure with the - '--disable-dependency-tracking' option to at least be able to build - the package (albeit without support for automatic dependency tracking). -See \`config.log' for more details" "$LINENO" 5; } - fi - { am_dirpart=; unset am_dirpart;} - { am_filepart=; unset am_filepart;} - { am_mf=; unset am_mf;} - { am_rc=; unset am_rc;} - rm -f conftest-deps.mk -} - ;; - "libtool":C) - - # See if we are running on zsh, and set the options that allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST - fi - - cfgfile=${ofile}T - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL -# Generated automatically by $as_me ($PACKAGE) $VERSION -# NOTE: Changes made to this file will be lost: look at ltmain.sh. - -# Provide generalized library-building support services. -# Written by Gordon Matzigkeit, 1996 - -# Copyright (C) 2014 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. - -# GNU Libtool 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 of the License, or -# (at your option) any later version. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program or library that is built -# using GNU Libtool, you may include this file under the same -# distribution terms that you use for the rest of that program. -# -# GNU Libtool 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, see . - - -# The names of the tagged configurations supported by this script. -available_tags='' - -# Configured defaults for sys_lib_dlsearch_path munging. -: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} - -# ### BEGIN LIBTOOL CONFIG - -# Which release of libtool.m4 was used? -macro_version=$macro_version -macro_revision=$macro_revision - -# Assembler program. -AS=$lt_AS - -# DLL creation program. -DLLTOOL=$lt_DLLTOOL - -# Object dumper program. -OBJDUMP=$lt_OBJDUMP - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# What type of objects to build. -pic_mode=$pic_mode - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# Shared archive member basename,for filename based shared library versioning on AIX. -shared_archive_member_spec=$shared_archive_member_spec - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# An echo program that protects backslashes. -ECHO=$lt_ECHO - -# The PATH separator for the build system. -PATH_SEPARATOR=$lt_PATH_SEPARATOR - -# The host system. -host_alias=$host_alias -host=$host -host_os=$host_os - -# The build system. -build_alias=$build_alias -build=$build -build_os=$build_os - -# A sed program that does not truncate output. -SED=$lt_SED - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="\$SED -e 1s/^X//" - -# A grep program that handles long lines. -GREP=$lt_GREP - -# An ERE matcher. -EGREP=$lt_EGREP - -# A literal string matcher. -FGREP=$lt_FGREP - -# A BSD- or MS-compatible name lister. -NM=$lt_NM - -# Whether we need soft or hard links. -LN_S=$lt_LN_S - -# What is the maximum length of a command? -max_cmd_len=$max_cmd_len - -# Object file suffix (normally "o"). -objext=$ac_objext - -# Executable file suffix (normally ""). -exeext=$exeext - -# whether the shell understands "unset". -lt_unset=$lt_unset - -# turn spaces into newlines. -SP2NL=$lt_lt_SP2NL - -# turn newlines into spaces. -NL2SP=$lt_lt_NL2SP - -# convert \$build file names to \$host format. -to_host_file_cmd=$lt_cv_to_host_file_cmd - -# convert \$build files to toolchain format. -to_tool_file_cmd=$lt_cv_to_tool_file_cmd - -# A file(cmd) program that detects file types. -FILECMD=$lt_FILECMD - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method - -# Command to use when deplibs_check_method = "file_magic". -file_magic_cmd=$lt_file_magic_cmd - -# How to find potential files when deplibs_check_method = "file_magic". -file_magic_glob=$lt_file_magic_glob - -# Find potential files using nocaseglob when deplibs_check_method = "file_magic". -want_nocaseglob=$lt_want_nocaseglob - -# Command to associate shared and link libraries. -sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd - -# The archiver. -AR=$lt_AR - -# Flags to create an archive (by configure). -lt_ar_flags=$lt_ar_flags - -# Flags to create an archive. -AR_FLAGS=\${ARFLAGS-"\$lt_ar_flags"} - -# How to feed a file listing to the archiver. -archiver_list_spec=$lt_archiver_list_spec - -# A symbol stripping program. -STRIP=$lt_STRIP - -# Commands used to install an old-style archive. -RANLIB=$lt_RANLIB -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Whether to use a lock for old archive extraction. -lock_old_archive_extraction=$lock_old_archive_extraction - -# A C compiler. -LTCC=$lt_CC - -# LTCC compiler flags. -LTCFLAGS=$lt_CFLAGS - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe - -# Transform the output of nm in a proper C declaration. -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl - -# Transform the output of nm into a list of symbols to manually relocate. -global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import - -# Transform the output of nm in a C name address pair. -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address - -# Transform the output of nm in a C name address pair when lib prefix is needed. -global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix - -# The name lister interface. -nm_interface=$lt_lt_cv_nm_interface - -# Specify filename containing input files for \$NM. -nm_file_list_spec=$lt_nm_file_list_spec - -# The root where to search for dependent libraries,and where our libraries should be installed. -lt_sysroot=$lt_sysroot - -# Command to truncate a binary pipe. -lt_truncate_bin=$lt_lt_cv_truncate_bin - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# Used to examine libraries when file_magic_cmd begins with "file". -MAGIC_CMD=$MAGIC_CMD - -# Must we lock files when doing compilation? -need_locks=$lt_need_locks - -# Manifest tool. -MANIFEST_TOOL=$lt_MANIFEST_TOOL - -# Tool to manipulate archived DWARF debug symbol files on Mac OS X. -DSYMUTIL=$lt_DSYMUTIL - -# Tool to change global to local symbols on Mac OS X. -NMEDIT=$lt_NMEDIT - -# Tool to manipulate fat objects and archives on Mac OS X. -LIPO=$lt_LIPO - -# ldd/readelf like tool for Mach-O binaries on Mac OS X. -OTOOL=$lt_OTOOL - -# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. -OTOOL64=$lt_OTOOL64 - -# Old archive suffix (normally "a"). -libext=$libext - -# Shared library suffix (normally ".so"). -shrext_cmds=$lt_shrext_cmds - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at link time. -variables_saved_for_relink=$lt_variables_saved_for_relink - -# Do we need the "lib" prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Library versioning type. -version_type=$version_type - -# Shared library runtime path variable. -runpath_var=$runpath_var - -# Shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# Format of library name prefix. -libname_spec=$lt_libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME -library_names_spec=$lt_library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec - -# Permission mode override for installation of shared libraries. -install_override_mode=$lt_install_override_mode - -# Command to use after installation of a shared archive. -postinstall_cmds=$lt_postinstall_cmds - -# Command to use after uninstallation of a shared archive. -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# As "finish_cmds", except a single script fragment to be evaled but -# not shown. -finish_eval=$lt_finish_eval - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# Compile-time system search path for libraries. -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec - -# Detected run-time system search path for libraries. -sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path - -# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. -configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path - -# Whether dlopen is supported. -dlopen_support=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - - -# The linker used to build libraries. -LD=$lt_LD - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds - -# A language specific compiler. -CC=$lt_compiler - -# Is the compiler the GNU compiler? -with_gcc=$GCC - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds -archive_expsym_cmds=$lt_archive_expsym_cmds - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds -module_expsym_cmds=$lt_module_expsym_cmds - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator - -# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct - -# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \$shlibpath_var if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds - -# Commands necessary for finishing linking programs. -postlink_cmds=$lt_postlink_cmds - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action - -# ### END LIBTOOL CONFIG - -_LT_EOF - - cat <<'_LT_EOF' >> "$cfgfile" - -# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE - -# func_munge_path_list VARIABLE PATH -# ----------------------------------- -# VARIABLE is name of variable containing _space_ separated list of -# directories to be munged by the contents of PATH, which is string -# having a format: -# "DIR[:DIR]:" -# string "DIR[ DIR]" will be prepended to VARIABLE -# ":DIR[:DIR]" -# string "DIR[ DIR]" will be appended to VARIABLE -# "DIRP[:DIRP]::[DIRA:]DIRA" -# string "DIRP[ DIRP]" will be prepended to VARIABLE and string -# "DIRA[ DIRA]" will be appended to VARIABLE -# "DIR[:DIR]" -# VARIABLE will be replaced by "DIR[ DIR]" -func_munge_path_list () -{ - case x$2 in - x) - ;; - *:) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" - ;; - x:*) - eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" - ;; - *::*) - eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" - eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" - ;; - *) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" - ;; - esac -} - - -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -func_cc_basename () -{ - for cc_temp in $*""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac - done - func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -} - - -# ### END FUNCTIONS SHARED WITH CONFIGURE - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test set != "${COLLECT_NAMES+set}"; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - - -ltmain=$ac_aux_dir/ltmain.sh - - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - $SED '$q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" - - ;; - - esac -done # for ac_tag - - -as_fn_exit 0 -_ACEOF -ac_clean_files=$ac_clean_files_save - -test $ac_write_fail = 0 || - as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 - - -# 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=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || 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 || as_fn_exit 1 -fi -if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -fi - - - - tmp_cpp=`eval echo "$ac_cpp" 2>/dev/null` - if test -z "$tmp_cpp"; then - tmp_cpp='cpp' - fi - cat >./tests/configurehelp.pm <<_EOF -# This is a generated file. Do not edit. - -package configurehelp; - -use strict; -use warnings; -use Exporter; - -use vars qw( - @ISA - @EXPORT_OK - \$Cpreprocessor - ); - -@ISA = qw(Exporter); - -@EXPORT_OK = qw( - \$Cpreprocessor - ); - -\$Cpreprocessor = '$tmp_cpp'; - -1; -_EOF - - - -## ---------------------------------- ## -## Start of distclean amending code ## -## ---------------------------------- ## - -for xc_subdir in lib src tests/unit tests/server tests/libtest docs/examples -do - -if test ! -f "$xc_subdir/Makefile"; then - echo "$xc_msg_err $xc_subdir/Makefile file not found. $xc_msg_abrt" >&2 - exit 1 -fi - -# Fetch dependency tracking file list from Makefile include lines. - -xc_inc_lines=`grep '^include .*(DEPDIR)' "$xc_subdir/Makefile" 2>/dev/null` -xc_cnt_words=`echo "$xc_inc_lines" | wc -w | tr -d "$xc_space$xc_tab"` - -# --disable-dependency-tracking might have been used, consequently -# there is nothing to amend without a dependency tracking file list. - -if test $xc_cnt_words -gt 0; then - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: amending $xc_subdir/Makefile" >&5 -printf "%s\n" "$as_me: amending $xc_subdir/Makefile" >&6;} - -# Build Makefile specific patch hunk. - -xc_p="$xc_subdir/xc_patch.tmp" - -xc_rm_depfiles=`echo "$xc_inc_lines" \ - | $SED 's%include% -rm -f%' 2>/dev/null` - -xc_dep_subdirs=`echo "$xc_inc_lines" \ - | $SED 's%include[ ][ ]*%%' 2>/dev/null \ - | $SED 's%(DEPDIR)/.*%(DEPDIR)%' 2>/dev/null \ - | sort | uniq` - -echo "$xc_rm_depfiles" >$xc_p - -for xc_dep_dir in $xc_dep_subdirs; do - echo "${xc_tab}@xm_dep_cnt=\`ls $xc_dep_dir | wc -l 2>/dev/null\`; \\" >>$xc_p - echo "${xc_tab}if test \$\$xm_dep_cnt -eq 0 && test -d $xc_dep_dir; then \\" >>$xc_p - echo "${xc_tab} rm -rf $xc_dep_dir; \\" >>$xc_p - echo "${xc_tab}fi" >>$xc_p -done - -# Build Makefile patching sed scripts. - -xc_s1="$xc_subdir/xc_script_1.tmp" -xc_s2="$xc_subdir/xc_script_2.tmp" -xc_s3="$xc_subdir/xc_script_3.tmp" - -cat >$xc_s1 <<\_EOT -/^distclean[ ]*:/,/^[^ ][^ ]*:/{ - s/^.*(DEPDIR)/___xc_depdir_line___/ -} -/^maintainer-clean[ ]*:/,/^[^ ][^ ]*:/{ - s/^.*(DEPDIR)/___xc_depdir_line___/ -} -_EOT - -cat >$xc_s2 <<\_EOT -/___xc_depdir_line___$/{ - N - /___xc_depdir_line___$/D -} -_EOT - -cat >$xc_s3 <<_EOT -/^___xc_depdir_line___/{ - r $xc_p - d -} -_EOT - -# Apply patch to Makefile and cleanup. - -$SED -f "$xc_s1" "$xc_subdir/Makefile" >"$xc_subdir/Makefile.tmp1" -$SED -f "$xc_s2" "$xc_subdir/Makefile.tmp1" >"$xc_subdir/Makefile.tmp2" -$SED -f "$xc_s3" "$xc_subdir/Makefile.tmp2" >"$xc_subdir/Makefile.tmp3" - -if test -f "$xc_subdir/Makefile.tmp3"; then - mv -f "$xc_subdir/Makefile.tmp3" "$xc_subdir/Makefile" -fi - -test -f "$xc_subdir/Makefile.tmp1" && rm -f "$xc_subdir/Makefile.tmp1" -test -f "$xc_subdir/Makefile.tmp2" && rm -f "$xc_subdir/Makefile.tmp2" -test -f "$xc_subdir/Makefile.tmp3" && rm -f "$xc_subdir/Makefile.tmp3" - -test -f "$xc_p" && rm -f "$xc_p" -test -f "$xc_s1" && rm -f "$xc_s1" -test -f "$xc_s2" && rm -f "$xc_s2" -test -f "$xc_s3" && rm -f "$xc_s3" - -fi - -done - -## -------------------------------- ## -## End of distclean amending code ## -## -------------------------------- ## - - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Configured to build curl/libcurl: - - Host setup: ${host} - Install prefix: ${prefix} - Compiler: ${CC} - CFLAGS: ${CFLAGS} - CPPFLAGS: ${CPPFLAGS} - LDFLAGS: ${LDFLAGS} - LIBS: ${LIBS} - - curl version: ${CURLVERSION} - SSL: ${curl_ssl_msg} - SSH: ${curl_ssh_msg} - zlib: ${curl_zlib_msg} - brotli: ${curl_brotli_msg} - zstd: ${curl_zstd_msg} - GSS-API: ${curl_gss_msg} - GSASL: ${curl_gsasl_msg} - TLS-SRP: ${curl_tls_srp_msg} - resolver: ${curl_res_msg} - IPv6: ${curl_ipv6_msg} - Unix sockets: ${curl_unix_sockets_msg} - IDN: ${curl_idn_msg} - Build libcurl: Shared=${enable_shared}, Static=${enable_static} - Built-in manual: ${curl_manual_msg} - --libcurl option: ${curl_libcurl_msg} - Verbose errors: ${curl_verbose_msg} - Code coverage: ${curl_coverage_msg} - SSPI: ${curl_sspi_msg} - ca cert bundle: ${ca}${ca_warning} - ca cert path: ${capath}${capath_warning} - ca fallback: ${with_ca_fallback} - LDAP: ${curl_ldap_msg} - LDAPS: ${curl_ldaps_msg} - RTSP: ${curl_rtsp_msg} - RTMP: ${curl_rtmp_msg} - PSL: ${curl_psl_msg} - Alt-svc: ${curl_altsvc_msg} - Headers API: ${curl_headers_msg} - HSTS: ${curl_hsts_msg} - HTTP1: ${curl_h1_msg} - HTTP2: ${curl_h2_msg} - HTTP3: ${curl_h3_msg} - ECH: ${curl_ech_msg} - Protocols: ${SUPPORT_PROTOCOLS} - Features: ${SUPPORT_FEATURES} -" >&5 -printf "%s\n" "$as_me: Configured to build curl/libcurl: - - Host setup: ${host} - Install prefix: ${prefix} - Compiler: ${CC} - CFLAGS: ${CFLAGS} - CPPFLAGS: ${CPPFLAGS} - LDFLAGS: ${LDFLAGS} - LIBS: ${LIBS} - - curl version: ${CURLVERSION} - SSL: ${curl_ssl_msg} - SSH: ${curl_ssh_msg} - zlib: ${curl_zlib_msg} - brotli: ${curl_brotli_msg} - zstd: ${curl_zstd_msg} - GSS-API: ${curl_gss_msg} - GSASL: ${curl_gsasl_msg} - TLS-SRP: ${curl_tls_srp_msg} - resolver: ${curl_res_msg} - IPv6: ${curl_ipv6_msg} - Unix sockets: ${curl_unix_sockets_msg} - IDN: ${curl_idn_msg} - Build libcurl: Shared=${enable_shared}, Static=${enable_static} - Built-in manual: ${curl_manual_msg} - --libcurl option: ${curl_libcurl_msg} - Verbose errors: ${curl_verbose_msg} - Code coverage: ${curl_coverage_msg} - SSPI: ${curl_sspi_msg} - ca cert bundle: ${ca}${ca_warning} - ca cert path: ${capath}${capath_warning} - ca fallback: ${with_ca_fallback} - LDAP: ${curl_ldap_msg} - LDAPS: ${curl_ldaps_msg} - RTSP: ${curl_rtsp_msg} - RTMP: ${curl_rtmp_msg} - PSL: ${curl_psl_msg} - Alt-svc: ${curl_altsvc_msg} - Headers API: ${curl_headers_msg} - HSTS: ${curl_hsts_msg} - HTTP1: ${curl_h1_msg} - HTTP2: ${curl_h2_msg} - HTTP3: ${curl_h3_msg} - ECH: ${curl_ech_msg} - Protocols: ${SUPPORT_PROTOCOLS} - Features: ${SUPPORT_FEATURES} -" >&6;} -if test -n "$experimental"; then - cat >&2 << _EOF - WARNING: $experimental enabled but marked EXPERIMENTAL. Use with caution! -_EOF -fi - diff --git a/Engine/lib/curl/configure.ac b/Engine/lib/curl/configure.ac deleted file mode 100644 index 30c881f3f..000000000 --- a/Engine/lib/curl/configure.ac +++ /dev/null @@ -1,4564 +0,0 @@ -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -#*************************************************************************** -dnl Process this file with autoconf to produce a configure script. - -AC_PREREQ(2.59) - -dnl We don't know the version number "statically" so we use a dash here -AC_INIT([curl], [-], [a suitable curl mailing list: https://curl.se/mail/]) - -XC_OVR_ZZ50 -XC_OVR_ZZ60 -CURL_OVERRIDE_AUTOCONF - -dnl configure script copyright -AC_COPYRIGHT([Copyright (c) 1998 - 2022 Daniel Stenberg, -This configure script may be copied, distributed and modified under the -terms of the curl license; see COPYING for more details]) - -AC_CONFIG_SRCDIR([lib/urldata.h]) -AC_CONFIG_HEADERS(lib/curl_config.h) -AC_CONFIG_MACRO_DIR([m4]) -AM_MAINTAINER_MODE -m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) - -CURL_CHECK_OPTION_DEBUG -CURL_CHECK_OPTION_OPTIMIZE -CURL_CHECK_OPTION_WARNINGS -CURL_CHECK_OPTION_WERROR -CURL_CHECK_OPTION_CURLDEBUG -CURL_CHECK_OPTION_SYMBOL_HIDING -CURL_CHECK_OPTION_ARES -CURL_CHECK_OPTION_RT -CURL_CHECK_OPTION_ECH - -XC_CHECK_PATH_SEPARATOR - -# -# save the configure arguments -# -CONFIGURE_OPTIONS="\"$ac_configure_args\"" -AC_SUBST(CONFIGURE_OPTIONS) - -dnl SED is mandatory for configure process and libtool. -dnl Set it now, allowing it to be changed later. -if test -z "$SED"; then - dnl allow it to be overridden - AC_PATH_PROG([SED], [sed], [not_found], - [$PATH:/usr/bin:/usr/local/bin]) - if test -z "$SED" || test "$SED" = "not_found"; then - AC_MSG_ERROR([sed not found in PATH. Cannot continue without sed.]) - fi -fi -AC_SUBST([SED]) - -dnl GREP is mandatory for configure process and libtool. -dnl Set it now, allowing it to be changed later. -if test -z "$GREP"; then - dnl allow it to be overridden - AC_PATH_PROG([GREP], [grep], [not_found], - [$PATH:/usr/bin:/usr/local/bin]) - if test -z "$GREP" || test "$GREP" = "not_found"; then - AC_MSG_ERROR([grep not found in PATH. Cannot continue without grep.]) - fi -fi -AC_SUBST([GREP]) - -dnl EGREP is mandatory for configure process and libtool. -dnl Set it now, allowing it to be changed later. -if test -z "$EGREP"; then - dnl allow it to be overridden - if echo a | ($GREP -E '(a|b)') >/dev/null 2>&1; then - AC_MSG_CHECKING([for egrep]) - EGREP="$GREP -E" - AC_MSG_RESULT([$EGREP]) - else - AC_PATH_PROG([EGREP], [egrep], [not_found], - [$PATH:/usr/bin:/usr/local/bin]) - fi -fi -if test -z "$EGREP" || test "$EGREP" = "not_found"; then - AC_MSG_ERROR([egrep not found in PATH. Cannot continue without egrep.]) -fi -AC_SUBST([EGREP]) - -dnl AR is mandatory for configure process and libtool. -dnl This is target dependent, so check it as a tool. -if test -z "$AR"; then - dnl allow it to be overridden - AC_PATH_TOOL([AR], [ar], [not_found], - [$PATH:/usr/bin:/usr/local/bin]) - if test -z "$AR" || test "$AR" = "not_found"; then - AC_MSG_ERROR([ar not found in PATH. Cannot continue without ar.]) - fi -fi -AC_SUBST([AR]) - -AC_SUBST(libext) - -dnl figure out the libcurl version -CURLVERSION=`$SED -ne 's/^#define LIBCURL_VERSION "\(.*\)".*/\1/p' ${srcdir}/include/curl/curlver.h` -XC_CHECK_PROG_CC -CURL_ATOMIC - -dnl for --enable-code-coverage -CURL_COVERAGE - -XC_AUTOMAKE -AC_MSG_CHECKING([curl version]) -AC_MSG_RESULT($CURLVERSION) - -AC_SUBST(CURLVERSION) - -dnl -dnl we extract the numerical version for curl-config only -VERSIONNUM=`$SED -ne 's/^#define LIBCURL_VERSION_NUM 0x\([0-9A-Fa-f]*\).*/\1/p' ${srcdir}/include/curl/curlver.h` -AC_SUBST(VERSIONNUM) - -dnl Solaris pkgadd support definitions -PKGADD_PKG="HAXXcurl" -PKGADD_NAME="curl - a client that groks URLs" -PKGADD_VENDOR="curl.se" -AC_SUBST(PKGADD_PKG) -AC_SUBST(PKGADD_NAME) -AC_SUBST(PKGADD_VENDOR) - -dnl -dnl initialize all the info variables - curl_ssl_msg="no (--with-{openssl,gnutls,nss,mbedtls,wolfssl,schannel,secure-transport,amissl,bearssl,rustls} )" - curl_ssh_msg="no (--with-{libssh,libssh2})" - curl_zlib_msg="no (--with-zlib)" - curl_brotli_msg="no (--with-brotli)" - curl_zstd_msg="no (--with-zstd)" - curl_gss_msg="no (--with-gssapi)" - curl_gsasl_msg="no (--with-gsasl)" -curl_tls_srp_msg="no (--enable-tls-srp)" - curl_res_msg="default (--enable-ares / --enable-threaded-resolver)" - curl_ipv6_msg="no (--enable-ipv6)" -curl_unix_sockets_msg="no (--enable-unix-sockets)" - curl_idn_msg="no (--with-{libidn2,winidn})" - curl_manual_msg="no (--enable-manual)" -curl_libcurl_msg="enabled (--disable-libcurl-option)" -curl_verbose_msg="enabled (--disable-verbose)" - curl_sspi_msg="no (--enable-sspi)" - curl_ldap_msg="no (--enable-ldap / --with-ldap-lib / --with-lber-lib)" - curl_ldaps_msg="no (--enable-ldaps)" - curl_rtsp_msg="no (--enable-rtsp)" - curl_rtmp_msg="no (--with-librtmp)" - curl_psl_msg="no (--with-libpsl)" - curl_altsvc_msg="enabled (--disable-alt-svc)" -curl_headers_msg="enabled (--disable-headers-api)" - curl_hsts_msg="enabled (--disable-hsts)" - ssl_backends= - curl_h1_msg="enabled (internal)" - curl_h2_msg="no (--with-nghttp2, --with-hyper)" - curl_h3_msg="no (--with-ngtcp2, --with-quiche --with-msh3)" - -enable_altsvc="yes" -hsts="yes" - -dnl -dnl Save some initial values the user might have provided -dnl -INITIAL_LDFLAGS=$LDFLAGS -INITIAL_LIBS=$LIBS - -dnl ********************************************************************** -dnl See which TLS backend(s) that are requested. Just do all the -dnl TLS AC_ARG_WITH() invokes here and do the checks later -dnl ********************************************************************** -OPT_SCHANNEL=no -AC_ARG_WITH(schannel,dnl -AS_HELP_STRING([--with-schannel],[enable Windows native SSL/TLS]), - OPT_SCHANNEL=$withval - TLSCHOICE="schannel") - -OPT_SECURETRANSPORT=no -AC_ARG_WITH(secure-transport,dnl -AS_HELP_STRING([--with-secure-transport],[enable Apple OS native SSL/TLS]),[ - OPT_SECURETRANSPORT=$withval - TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }Secure-Transport" -]) - -OPT_AMISSL=no -AC_ARG_WITH(amissl,dnl -AS_HELP_STRING([--with-amissl],[enable Amiga native SSL/TLS (AmiSSL)]),[ - OPT_AMISSL=$withval - TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }AmiSSL" -]) - -OPT_OPENSSL=no -dnl Default to no CA bundle -ca="no" -AC_ARG_WITH(ssl,dnl -AS_HELP_STRING([--with-ssl=PATH],[old version of --with-openssl]) -AS_HELP_STRING([--without-ssl], [build without any TLS library]),[ - OPT_SSL=$withval - OPT_OPENSSL=$withval - if test X"$withval" != Xno; then - TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }OpenSSL" - else - SSL_DISABLED="D" - fi -]) - -AC_ARG_WITH(openssl,dnl -AS_HELP_STRING([--with-openssl=PATH],[Where to look for OpenSSL, PATH points to the SSL installation (default: /usr/local/ssl); when possible, set the PKG_CONFIG_PATH environment variable instead of using this option]),[ - OPT_OPENSSL=$withval - if test X"$withval" != Xno; then - TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }OpenSSL" - fi -]) - -OPT_GNUTLS=no -AC_ARG_WITH(gnutls,dnl -AS_HELP_STRING([--with-gnutls=PATH],[where to look for GnuTLS, PATH points to the installation root]),[ - OPT_GNUTLS=$withval - if test X"$withval" != Xno; then - TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }GnuTLS" - fi -]) - -OPT_MBEDTLS=no -AC_ARG_WITH(mbedtls,dnl -AS_HELP_STRING([--with-mbedtls=PATH],[where to look for mbedTLS, PATH points to the installation root]),[ - OPT_MBEDTLS=$withval - if test X"$withval" != Xno; then - TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }mbedTLS" - fi -]) - -OPT_WOLFSSL=no -AC_ARG_WITH(wolfssl,dnl -AS_HELP_STRING([--with-wolfssl=PATH],[where to look for WolfSSL, PATH points to the installation root (default: system lib default)]),[ - OPT_WOLFSSL=$withval - if test X"$withval" != Xno; then - TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }wolfSSL" - fi -]) - -OPT_BEARSSL=no -AC_ARG_WITH(bearssl,dnl -AS_HELP_STRING([--with-bearssl=PATH],[where to look for BearSSL, PATH points to the installation root]),[ - OPT_BEARSSL=$withval - if test X"$withval" != Xno; then - TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }BearSSL" - fi -]) - -OPT_RUSTLS=no -AC_ARG_WITH(rustls,dnl -AS_HELP_STRING([--with-rustls=PATH],[where to look for rustls, PATH points to the installation root]),[ - OPT_RUSTLS=$withval - if test X"$withval" != Xno; then - TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }rustls" - experimental="$experimental rustls" - fi -]) - -OPT_NSS_AWARE=no -AC_ARG_WITH(nss-deprecated,dnl -AS_HELP_STRING([--with-nss-deprecated],[confirm you realize NSS is going away]), - if test X"$withval" != Xno; then - OPT_NSS_AWARE=$withval - fi -) - -OPT_NSS=no -AC_ARG_WITH(nss,dnl -AS_HELP_STRING([--with-nss=PATH],[where to look for NSS, PATH points to the installation root]), - OPT_NSS=$withval - if test X"$withval" != Xno; then - - if test X"$OPT_NSS_AWARE" = "Xno" ; then - AC_MSG_ERROR([NSS use must be confirmed using --with-nss-deprecated. NSS support will be dropped from curl in August 2022. See docs/DEPRECATE.md]) - fi - - [TLSCHOICE="${TLSCHOICE:+$TLSCHOICE, }NSS"] - fi -) - -dnl If no TLS choice has been made, check if it was explicitly disabled or -dnl error out to force the user to decide. -if test -z "$TLSCHOICE"; then - if test "x$OPT_SSL" != "xno"; then - AC_MSG_ERROR([select TLS backend(s) or disable TLS with --without-ssl. - -Select from these: - - --with-amissl - --with-bearssl - --with-gnutls - --with-mbedtls - --with-nss - --with-openssl (also works for BoringSSL and libressl) - --with-rustls - --with-schannel - --with-secure-transport - --with-wolfssl -]) - fi -fi - -AC_ARG_WITH(darwinssl,, - AC_MSG_ERROR([--with-darwin-ssl no longer works!])) - -dnl -dnl Detect the canonical host and target build environment -dnl - -AC_CANONICAL_HOST -dnl Get system canonical name -AC_DEFINE_UNQUOTED(OS, "${host}", [cpu-machine-OS]) - -# Silence warning: ar: 'u' modifier ignored since 'D' is the default -AC_SUBST(AR_FLAGS, [cr]) - -dnl This defines _ALL_SOURCE for AIX -CURL_CHECK_AIX_ALL_SOURCE - -dnl Our configure and build reentrant settings -CURL_CONFIGURE_THREAD_SAFE -CURL_CONFIGURE_REENTRANT - -dnl check for how to do large files -AC_SYS_LARGEFILE - -XC_LIBTOOL - -# -# Automake conditionals based on libtool related checks -# - -AM_CONDITIONAL([CURL_LT_SHLIB_USE_VERSION_INFO], - [test "x$xc_lt_shlib_use_version_info" = 'xyes']) -AM_CONDITIONAL([CURL_LT_SHLIB_USE_NO_UNDEFINED], - [test "x$xc_lt_shlib_use_no_undefined" = 'xyes']) -AM_CONDITIONAL([CURL_LT_SHLIB_USE_MIMPURE_TEXT], - [test "x$xc_lt_shlib_use_mimpure_text" = 'xyes']) - -# -# Due to libtool and automake machinery limitations of not allowing -# specifying separate CPPFLAGS or CFLAGS when compiling objects for -# inclusion of these in shared or static libraries, we are forced to -# build using separate configure runs for shared and static libraries -# on systems where different CPPFLAGS or CFLAGS are mandatory in order -# to compile objects for each kind of library. Notice that relying on -# the '-DPIC' CFLAG that libtool provides is not valid given that the -# user might for example choose to build static libraries with PIC. -# - -# -# Make our Makefile.am files use the staticlib CPPFLAG only when strictly -# targeting a static library and not building its shared counterpart. -# - -AM_CONDITIONAL([USE_CPPFLAG_CURL_STATICLIB], - [test "x$xc_lt_build_static_only" = 'xyes']) - -# -# Make staticlib CPPFLAG variable and its definition visible in output -# files unconditionally, providing an empty definition unless strictly -# targeting a static library and not building its shared counterpart. -# - -CPPFLAG_CURL_STATICLIB= -if test "x$xc_lt_build_static_only" = 'xyes'; then - CPPFLAG_CURL_STATICLIB='-DCURL_STATICLIB' -fi -AC_SUBST([CPPFLAG_CURL_STATICLIB]) - - -# Determine whether all dependent libraries must be specified when linking -if test "X$enable_shared" = "Xyes" -a "X$link_all_deplibs" = "Xno" -then - REQUIRE_LIB_DEPS=no -else - REQUIRE_LIB_DEPS=yes -fi -AC_SUBST(REQUIRE_LIB_DEPS) -AM_CONDITIONAL(USE_EXPLICIT_LIB_DEPS, test x$REQUIRE_LIB_DEPS = xyes) - -dnl check if there's a way to force code inline -AC_C_INLINE - -dnl ********************************************************************** -dnl platform/compiler/architecture specific checks/flags -dnl ********************************************************************** - -CURL_CHECK_COMPILER -CURL_SET_COMPILER_BASIC_OPTS -CURL_SET_COMPILER_DEBUG_OPTS -CURL_SET_COMPILER_OPTIMIZE_OPTS -CURL_SET_COMPILER_WARNING_OPTS - -if test "$compiler_id" = "INTEL_UNIX_C"; then - # - if test "$compiler_num" -ge "1000"; then - dnl icc 10.X or later - CFLAGS="$CFLAGS -shared-intel" - elif test "$compiler_num" -ge "900"; then - dnl icc 9.X specific - CFLAGS="$CFLAGS -i-dynamic" - fi - # -fi - -CURL_CFLAG_EXTRAS="" -if test X"$want_werror" = Xyes; then - CURL_CFLAG_EXTRAS="-Werror" - if test "$compiler_id" = "GNU_C"; then - dnl enable -pedantic-errors for GCC 5 and later, - dnl as before that it was the same as -Werror=pedantic - if test "$compiler_num" -ge "500"; then - CURL_CFLAG_EXTRAS="$CURL_CFLAG_EXTRAS -pedantic-errors" - fi - fi -fi -AC_SUBST(CURL_CFLAG_EXTRAS) - -CURL_CHECK_COMPILER_HALT_ON_ERROR -CURL_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE -CURL_CHECK_COMPILER_PROTOTYPE_MISMATCH -CURL_CHECK_COMPILER_SYMBOL_HIDING - -CURL_CHECK_CURLDEBUG -AM_CONDITIONAL(CURLDEBUG, test x$want_curldebug = xyes) - -supports_unittests=yes -# cross-compilation of unit tests static library/programs fails when -# libcurl shared library is built. This might be due to a libtool or -# automake issue. In this case we disable unit tests. -if test "x$cross_compiling" != "xno" && - test "x$enable_shared" != "xno"; then - supports_unittests=no -fi - -# IRIX 6.5.24 gcc 3.3 autobuilds fail unittests library compilation due to -# a problem related with OpenSSL headers and library versions not matching. -# Disable unit tests while time to further investigate this is found. -case $host in - mips-sgi-irix6.5) - if test "$compiler_id" = "GNU_C"; then - supports_unittests=no - fi - ;; -esac - -# All AIX autobuilds fails unit tests linking against unittests library -# due to unittests library being built with no symbols or members. Libtool ? -# Disable unit tests while time to further investigate this is found. -case $host_os in - aix*) - supports_unittests=no - ;; -esac - -dnl Build unit tests when option --enable-debug is given. -if test "x$want_debug" = "xyes" && - test "x$supports_unittests" = "xyes"; then - want_unittests=yes -else - want_unittests=no -fi -AM_CONDITIONAL(BUILD_UNITTESTS, test x$want_unittests = xyes) - -# For original MinGW (ie not MinGW-w64) define the Windows minimum supported OS -# version to Windows XP (0x501) if it hasn't already been defined by the user. -# Without this override original MinGW defaults the version to Windows NT 4.0. -# Note original MinGW sets _WIN32_WINNT if not defined to whatever WINVER is. -case $host in - *-*-mingw32*) - AC_MSG_CHECKING([if MinGW minimum supported OS should be set to XP]) - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ -#include <_mingw.h> - ]],[[ -#if defined(__MINGW64_VERSION_MAJOR) || \ - defined(WINVER) || \ - defined(_WIN32_WINNT) -#error -#endif - ]]) - ],[ - CPPFLAGS="$CPPFLAGS -DWINVER=0x501" - AC_MSG_RESULT([yes]) - ],[ - AC_MSG_RESULT([no]) - ]) - ;; -esac - -# Detect original MinGW (not MinGW-w64) -curl_mingw_original=no -case $host in - *-*-mingw32*) - AC_MSG_CHECKING([using original MinGW (not MinGW-w64)]) - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ -#include <_mingw.h> - ]],[[ -#if defined(__MINGW64_VERSION_MAJOR) -#error -#endif - ]]) - ],[ - curl_mingw_original=yes - AC_MSG_RESULT([yes]) - ],[ - AC_MSG_RESULT([no]) - ]) - ;; -esac - -dnl ********************************************************************** -dnl Compilation based checks should not be done before this point. -dnl ********************************************************************** - -dnl ********************************************************************** -dnl Make sure that our checks for headers windows.h winsock2.h -dnl and ws2tcpip.h take precedence over any other further checks which -dnl could be done later using AC_CHECK_HEADER or AC_CHECK_HEADERS for -dnl this specific header files. And do them before its results are used. -dnl ********************************************************************** - -CURL_CHECK_HEADER_WINDOWS -CURL_CHECK_NATIVE_WINDOWS -case X-"$curl_cv_native_windows" in - X-yes) - CURL_CHECK_HEADER_WINSOCK2 - CURL_CHECK_HEADER_WS2TCPIP - CURL_CHECK_HEADER_WINCRYPT - CURL_CHECK_HEADER_WINLDAP - ;; - *) - curl_cv_header_winsock2_h="no" - curl_cv_header_ws2tcpip_h="no" - curl_cv_header_wincrypt_h="no" - curl_cv_header_winldap_h="no" - ;; -esac -CURL_CHECK_WIN32_LARGEFILE -CURL_CHECK_WIN32_CRYPTO - -CURL_DARWIN_CFLAGS -CURL_DARWIN_SYSTEMCONFIGURATION -CURL_SUPPORTS_BUILTIN_AVAILABLE - - -dnl ************************************************************ -dnl switch off particular protocols -dnl -AC_MSG_CHECKING([whether to support http]) -AC_ARG_ENABLE(http, -AS_HELP_STRING([--enable-http],[Enable HTTP support]) -AS_HELP_STRING([--disable-http],[Disable HTTP support]), -[ case "$enableval" in - no) - AC_MSG_RESULT(no) - AC_DEFINE(CURL_DISABLE_HTTP, 1, [to disable HTTP]) - disable_http="yes" - AC_MSG_WARN([disable HTTP disables FTP over proxy and RTSP]) - AC_SUBST(CURL_DISABLE_HTTP, [1]) - AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP]) - AC_SUBST(CURL_DISABLE_RTSP, [1]) - dnl toggle off alt-svc too when HTTP is disabled - AC_DEFINE(CURL_DISABLE_ALTSVC, 1, [disable alt-svc]) - AC_DEFINE(CURL_DISABLE_HSTS, 1, [disable HSTS]) - curl_h1_msg="no (--enable-http, --with-hyper)" - curl_altsvc_msg="no"; - curl_hsts_msg="no (--enable-hsts)"; - enable_altsvc="no" - hsts="no" - ;; - *) AC_MSG_RESULT(yes) - ;; - esac ], - AC_MSG_RESULT(yes) -) -AC_MSG_CHECKING([whether to support ftp]) -AC_ARG_ENABLE(ftp, -AS_HELP_STRING([--enable-ftp],[Enable FTP support]) -AS_HELP_STRING([--disable-ftp],[Disable FTP support]), -[ case "$enableval" in - no) - AC_MSG_RESULT(no) - AC_DEFINE(CURL_DISABLE_FTP, 1, [to disable FTP]) - AC_SUBST(CURL_DISABLE_FTP, [1]) - ;; - *) AC_MSG_RESULT(yes) - ;; - esac ], - AC_MSG_RESULT(yes) -) -AC_MSG_CHECKING([whether to support file]) -AC_ARG_ENABLE(file, -AS_HELP_STRING([--enable-file],[Enable FILE support]) -AS_HELP_STRING([--disable-file],[Disable FILE support]), -[ case "$enableval" in - no) - AC_MSG_RESULT(no) - AC_DEFINE(CURL_DISABLE_FILE, 1, [to disable FILE]) - AC_SUBST(CURL_DISABLE_FILE, [1]) - ;; - *) AC_MSG_RESULT(yes) - ;; - esac ], - AC_MSG_RESULT(yes) -) -AC_MSG_CHECKING([whether to support ldap]) -AC_ARG_ENABLE(ldap, -AS_HELP_STRING([--enable-ldap],[Enable LDAP support]) -AS_HELP_STRING([--disable-ldap],[Disable LDAP support]), -[ case "$enableval" in - no) - AC_MSG_RESULT(no) - AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP]) - AC_SUBST(CURL_DISABLE_LDAP, [1]) - ;; - yes) - ldap_askedfor="yes" - AC_MSG_RESULT(yes) - ;; - *) - AC_MSG_RESULT(yes) - ;; - esac ],[ - AC_MSG_RESULT(yes) ] -) -AC_MSG_CHECKING([whether to support ldaps]) -AC_ARG_ENABLE(ldaps, -AS_HELP_STRING([--enable-ldaps],[Enable LDAPS support]) -AS_HELP_STRING([--disable-ldaps],[Disable LDAPS support]), -[ case "$enableval" in - no) - AC_MSG_RESULT(no) - AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS]) - AC_SUBST(CURL_DISABLE_LDAPS, [1]) - ;; - *) if test "x$CURL_DISABLE_LDAP" = "x1" ; then - AC_MSG_RESULT(LDAP needs to be enabled to support LDAPS) - AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS]) - AC_SUBST(CURL_DISABLE_LDAPS, [1]) - else - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_LDAP_SSL, 1, [Use LDAPS implementation]) - AC_SUBST(HAVE_LDAP_SSL, [1]) - fi - ;; - esac ],[ - if test "x$CURL_DISABLE_LDAP" = "x1" ; then - AC_MSG_RESULT(no) - AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS]) - AC_SUBST(CURL_DISABLE_LDAPS, [1]) - else - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_LDAP_SSL, 1, [Use LDAPS implementation]) - AC_SUBST(HAVE_LDAP_SSL, [1]) - fi ] -) - -dnl ********************************************************************** -dnl Check for Hyper -dnl ********************************************************************** - -OPT_HYPER="no" - -AC_ARG_WITH(hyper, -AS_HELP_STRING([--with-hyper=PATH],[Enable hyper usage]) -AS_HELP_STRING([--without-hyper],[Disable hyper usage]), - [OPT_HYPER=$withval]) -case "$OPT_HYPER" in - no) - dnl --without-hyper option used - want_hyper="no" - ;; - yes) - dnl --with-hyper option used without path - want_hyper="default" - want_hyper_path="" - ;; - *) - dnl --with-hyper option used with path - want_hyper="yes" - want_hyper_path="$withval" - ;; -esac - -if test X"$want_hyper" != Xno; then - if test "x$disable_http" = "xyes"; then - AC_MSG_ERROR([--with-hyper is not compatible with --disable-http]) - fi - - dnl backup the pre-hyper variables - CLEANLDFLAGS="$LDFLAGS" - CLEANCPPFLAGS="$CPPFLAGS" - CLEANLIBS="$LIBS" - - CURL_CHECK_PKGCONFIG(hyper, $want_hyper_path) - - if test "$PKGCONFIG" != "no" ; then - LIB_HYPER=`CURL_EXPORT_PCDIR([$want_hyper_path]) - $PKGCONFIG --libs-only-l hyper` - CPP_HYPER=`CURL_EXPORT_PCDIR([$want_hyper_path]) dnl - $PKGCONFIG --cflags-only-I hyper` - LD_HYPER=`CURL_EXPORT_PCDIR([$want_hyper_path]) - $PKGCONFIG --libs-only-L hyper` - else - dnl no hyper pkg-config found - LIB_HYPER="-lhyper -ldl -lpthread -lm" - if test X"$want_hyper" != Xdefault; then - CPP_HYPER=-I"$want_hyper_path/capi/include" - LD_HYPER="-L$want_hyper_path/target/release -L$want_hyper_path/target/debug" - fi - fi - if test -n "$LIB_HYPER"; then - AC_MSG_NOTICE([-l is $LIB_HYPER]) - AC_MSG_NOTICE([-I is $CPP_HYPER]) - AC_MSG_NOTICE([-L is $LD_HYPER]) - - LDFLAGS="$LDFLAGS $LD_HYPER" - CPPFLAGS="$CPPFLAGS $CPP_HYPER" - LIBS="$LIB_HYPER $LIBS" - - if test "x$cross_compiling" != "xyes"; then - dnl remove -L, separate with colon if more than one - DIR_HYPER=`echo $LD_HYPER | $SED -e 's/^-L//' -e 's/ -L/:/g'` - fi - - AC_CHECK_LIB(hyper, hyper_io_new, - [ - AC_CHECK_HEADERS(hyper.h, - experimental="$experimental Hyper" - AC_MSG_NOTICE([Hyper support is experimental]) - curl_h1_msg="enabled (Hyper)" - curl_h2_msg=$curl_h1_msg - HYPER_ENABLED=1 - AC_DEFINE(USE_HYPER, 1, [if hyper is in use]) - AC_SUBST(USE_HYPER, [1]) - CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_HYPER" - export CURL_LIBRARY_PATH - AC_MSG_NOTICE([Added $DIR_HYPER to CURL_LIBRARY_PATH]), - ) - ], - for d in `echo $DIR_HYPER | $SED -e 's/:/ /'`; do - if test -f "$d/libhyper.a"; then - AC_MSG_ERROR([hyper was found in $d but was probably built with wrong flags. See docs/HYPER.md.]) - fi - done - AC_MSG_ERROR([--with-hyper but hyper was not found. See docs/HYPER.md.]) - ) - fi -fi - -if test X"$want_hyper" != Xno; then - AC_MSG_NOTICE([Disable RTSP support with hyper]) - AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP]) - AC_SUBST(CURL_DISABLE_RTSP, [1]) - -else - - AC_MSG_CHECKING([whether to support rtsp]) - AC_ARG_ENABLE(rtsp, - AS_HELP_STRING([--enable-rtsp],[Enable RTSP support]) - AS_HELP_STRING([--disable-rtsp],[Disable RTSP support]), - [ case "$enableval" in - no) - AC_MSG_RESULT(no) - AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP]) - AC_SUBST(CURL_DISABLE_RTSP, [1]) - ;; - *) - if test x$CURL_DISABLE_HTTP = x1 ; then - AC_MSG_ERROR(HTTP support needs to be enabled in order to enable RTSP support!) - else - AC_MSG_RESULT(yes) - curl_rtsp_msg="enabled" - fi - ;; - esac ], - if test "x$CURL_DISABLE_HTTP" != "x1"; then - AC_MSG_RESULT(yes) - curl_rtsp_msg="enabled" - else - AC_MSG_RESULT(no) - fi - ) -fi - -AC_MSG_CHECKING([whether to support proxies]) -AC_ARG_ENABLE(proxy, -AS_HELP_STRING([--enable-proxy],[Enable proxy support]) -AS_HELP_STRING([--disable-proxy],[Disable proxy support]), -[ case "$enableval" in - no) - AC_MSG_RESULT(no) - AC_DEFINE(CURL_DISABLE_PROXY, 1, [to disable proxies]) - AC_SUBST(CURL_DISABLE_PROXY, [1]) - https_proxy="no" - ;; - *) AC_MSG_RESULT(yes) - ;; - esac ], - AC_MSG_RESULT(yes) -) - -AC_MSG_CHECKING([whether to support dict]) -AC_ARG_ENABLE(dict, -AS_HELP_STRING([--enable-dict],[Enable DICT support]) -AS_HELP_STRING([--disable-dict],[Disable DICT support]), -[ case "$enableval" in - no) - AC_MSG_RESULT(no) - AC_DEFINE(CURL_DISABLE_DICT, 1, [to disable DICT]) - AC_SUBST(CURL_DISABLE_DICT, [1]) - ;; - *) AC_MSG_RESULT(yes) - ;; - esac ], - AC_MSG_RESULT(yes) -) -AC_MSG_CHECKING([whether to support telnet]) -AC_ARG_ENABLE(telnet, -AS_HELP_STRING([--enable-telnet],[Enable TELNET support]) -AS_HELP_STRING([--disable-telnet],[Disable TELNET support]), -[ case "$enableval" in - no) - AC_MSG_RESULT(no) - AC_DEFINE(CURL_DISABLE_TELNET, 1, [to disable TELNET]) - AC_SUBST(CURL_DISABLE_TELNET, [1]) - ;; - *) AC_MSG_RESULT(yes) - ;; - esac ], - AC_MSG_RESULT(yes) -) -AC_MSG_CHECKING([whether to support tftp]) -AC_ARG_ENABLE(tftp, -AS_HELP_STRING([--enable-tftp],[Enable TFTP support]) -AS_HELP_STRING([--disable-tftp],[Disable TFTP support]), -[ case "$enableval" in - no) - AC_MSG_RESULT(no) - AC_DEFINE(CURL_DISABLE_TFTP, 1, [to disable TFTP]) - AC_SUBST(CURL_DISABLE_TFTP, [1]) - ;; - *) AC_MSG_RESULT(yes) - ;; - esac ], - AC_MSG_RESULT(yes) -) - -AC_MSG_CHECKING([whether to support pop3]) -AC_ARG_ENABLE(pop3, -AS_HELP_STRING([--enable-pop3],[Enable POP3 support]) -AS_HELP_STRING([--disable-pop3],[Disable POP3 support]), -[ case "$enableval" in - no) - AC_MSG_RESULT(no) - AC_DEFINE(CURL_DISABLE_POP3, 1, [to disable POP3]) - AC_SUBST(CURL_DISABLE_POP3, [1]) - ;; - *) AC_MSG_RESULT(yes) - ;; - esac ], - AC_MSG_RESULT(yes) -) - - -AC_MSG_CHECKING([whether to support imap]) -AC_ARG_ENABLE(imap, -AS_HELP_STRING([--enable-imap],[Enable IMAP support]) -AS_HELP_STRING([--disable-imap],[Disable IMAP support]), -[ case "$enableval" in - no) - AC_MSG_RESULT(no) - AC_DEFINE(CURL_DISABLE_IMAP, 1, [to disable IMAP]) - AC_SUBST(CURL_DISABLE_IMAP, [1]) - ;; - *) AC_MSG_RESULT(yes) - ;; - esac ], - AC_MSG_RESULT(yes) -) - - -AC_MSG_CHECKING([whether to support smb]) -AC_ARG_ENABLE(smb, -AS_HELP_STRING([--enable-smb],[Enable SMB/CIFS support]) -AS_HELP_STRING([--disable-smb],[Disable SMB/CIFS support]), -[ case "$enableval" in - no) - AC_MSG_RESULT(no) - AC_DEFINE(CURL_DISABLE_SMB, 1, [to disable SMB/CIFS]) - AC_SUBST(CURL_DISABLE_SMB, [1]) - ;; - *) AC_MSG_RESULT(yes) - ;; - esac ], - AC_MSG_RESULT(yes) -) - -AC_MSG_CHECKING([whether to support smtp]) -AC_ARG_ENABLE(smtp, -AS_HELP_STRING([--enable-smtp],[Enable SMTP support]) -AS_HELP_STRING([--disable-smtp],[Disable SMTP support]), -[ case "$enableval" in - no) - AC_MSG_RESULT(no) - AC_DEFINE(CURL_DISABLE_SMTP, 1, [to disable SMTP]) - AC_SUBST(CURL_DISABLE_SMTP, [1]) - ;; - *) AC_MSG_RESULT(yes) - ;; - esac ], - AC_MSG_RESULT(yes) -) - -AC_MSG_CHECKING([whether to support gopher]) -AC_ARG_ENABLE(gopher, -AS_HELP_STRING([--enable-gopher],[Enable Gopher support]) -AS_HELP_STRING([--disable-gopher],[Disable Gopher support]), -[ case "$enableval" in - no) - AC_MSG_RESULT(no) - AC_DEFINE(CURL_DISABLE_GOPHER, 1, [to disable Gopher]) - AC_SUBST(CURL_DISABLE_GOPHER, [1]) - ;; - *) AC_MSG_RESULT(yes) - ;; - esac ], - AC_MSG_RESULT(yes) -) - -AC_MSG_CHECKING([whether to support mqtt]) -AC_ARG_ENABLE(mqtt, -AS_HELP_STRING([--enable-mqtt],[Enable MQTT support]) -AS_HELP_STRING([--disable-mqtt],[Disable MQTT support]), -[ case "$enableval" in - no) - AC_MSG_RESULT(no) - AC_DEFINE(CURL_DISABLE_MQTT, 1, [to disable MQTT]) - AC_SUBST(CURL_DISABLE_MQTT, [1]) - ;; - *) AC_MSG_RESULT(yes) - ;; - esac ], - AC_MSG_RESULT(no) -) - -dnl ********************************************************************** -dnl Check for built-in manual -dnl ********************************************************************** - -AC_MSG_CHECKING([whether to provide built-in manual]) -AC_ARG_ENABLE(manual, -AS_HELP_STRING([--enable-manual],[Enable built-in manual]) -AS_HELP_STRING([--disable-manual],[Disable built-in manual]), -[ case "$enableval" in - no) - AC_MSG_RESULT(no) - ;; - *) AC_MSG_RESULT(yes) - USE_MANUAL="1" - ;; - esac ], - AC_MSG_RESULT(yes) - USE_MANUAL="1" -) -dnl The actual use of the USE_MANUAL variable is done much later in this -dnl script to allow other actions to disable it as well. - -dnl ************************************************************ -dnl disable C code generation support -dnl -AC_MSG_CHECKING([whether to enable generation of C code]) -AC_ARG_ENABLE(libcurl_option, -AS_HELP_STRING([--enable-libcurl-option],[Enable --libcurl C code generation support]) -AS_HELP_STRING([--disable-libcurl-option],[Disable --libcurl C code generation support]), -[ case "$enableval" in - no) - AC_MSG_RESULT(no) - AC_DEFINE(CURL_DISABLE_LIBCURL_OPTION, 1, [to disable --libcurl C code generation option]) - curl_libcurl_msg="no" - ;; - *) AC_MSG_RESULT(yes) - ;; - esac ], - AC_MSG_RESULT(yes) -) - -dnl ********************************************************************** -dnl Checks for libraries. -dnl ********************************************************************** - -AC_MSG_CHECKING([whether to use libgcc]) -AC_ARG_ENABLE(libgcc, -AS_HELP_STRING([--enable-libgcc],[use libgcc when linking]), -[ case "$enableval" in - yes) - LIBS="-lgcc $LIBS" - AC_MSG_RESULT(yes) - ;; - *) AC_MSG_RESULT(no) - ;; - esac ], - AC_MSG_RESULT(no) -) - -CURL_CHECK_LIB_XNET - -dnl gethostbyname without lib or in the nsl lib? -AC_CHECK_FUNC(gethostbyname, - [HAVE_GETHOSTBYNAME="1" - ], - [ AC_CHECK_LIB(nsl, gethostbyname, - [HAVE_GETHOSTBYNAME="1" - LIBS="-lnsl $LIBS" - ]) - ]) - -if test "$HAVE_GETHOSTBYNAME" != "1" -then - dnl gethostbyname in the socket lib? - AC_CHECK_LIB(socket, gethostbyname, - [HAVE_GETHOSTBYNAME="1" - LIBS="-lsocket $LIBS" - ]) -fi - -if test "$HAVE_GETHOSTBYNAME" != "1" -then - dnl gethostbyname in the watt lib? - AC_CHECK_LIB(watt, gethostbyname, - [HAVE_GETHOSTBYNAME="1" - CPPFLAGS="-I/dev/env/WATT_ROOT/inc" - LDFLAGS="-L/dev/env/WATT_ROOT/lib" - LIBS="-lwatt $LIBS" - ]) -fi - -dnl At least one system has been identified to require BOTH nsl and socket -dnl libs at the same time to link properly. -if test "$HAVE_GETHOSTBYNAME" != "1" -then - AC_MSG_CHECKING([for gethostbyname with both nsl and socket libs]) - my_ac_save_LIBS=$LIBS - LIBS="-lnsl -lsocket $LIBS" - AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ - ]],[[ - gethostbyname(); - ]]) - ],[ - AC_MSG_RESULT([yes]) - HAVE_GETHOSTBYNAME="1" - ],[ - AC_MSG_RESULT([no]) - LIBS=$my_ac_save_LIBS - ]) -fi - -if test "$HAVE_GETHOSTBYNAME" != "1" -then - dnl This is for winsock systems - if test "$curl_cv_header_windows_h" = "yes"; then - if test "$curl_cv_header_winsock2_h" = "yes"; then - winsock_LIB="-lws2_32" - fi - if test ! -z "$winsock_LIB"; then - my_ac_save_LIBS=$LIBS - LIBS="$winsock_LIB $LIBS" - AC_MSG_CHECKING([for gethostbyname in $winsock_LIB]) - AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ -#ifdef HAVE_WINDOWS_H -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#ifdef HAVE_WINSOCK2_H -#include -#endif -#endif - ]],[[ - gethostbyname("www.dummysite.com"); - ]]) - ],[ - AC_MSG_RESULT([yes]) - HAVE_GETHOSTBYNAME="1" - ],[ - AC_MSG_RESULT([no]) - winsock_LIB="" - LIBS=$my_ac_save_LIBS - ]) - fi - fi -fi - -if test "$HAVE_GETHOSTBYNAME" != "1" -then - dnl This is for Minix 3.1 - AC_MSG_CHECKING([for gethostbyname for Minix 3]) - AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ -/* Older Minix versions may need here instead */ -#include - ]],[[ - gethostbyname("www.dummysite.com"); - ]]) - ],[ - AC_MSG_RESULT([yes]) - HAVE_GETHOSTBYNAME="1" - ],[ - AC_MSG_RESULT([no]) - ]) -fi - -if test "$HAVE_GETHOSTBYNAME" != "1" -then - dnl This is for eCos with a stubbed DNS implementation - AC_MSG_CHECKING([for gethostbyname for eCos]) - AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ -#include -#include - ]],[[ - gethostbyname("www.dummysite.com"); - ]]) - ],[ - AC_MSG_RESULT([yes]) - HAVE_GETHOSTBYNAME="1" - ],[ - AC_MSG_RESULT([no]) - ]) -fi - -if test "$HAVE_GETHOSTBYNAME" != "1" -o "${with_amissl+set}" = set -then - dnl This is for AmigaOS with bsdsocket.library - needs testing before -lnet - AC_MSG_CHECKING([for gethostbyname for AmigaOS bsdsocket.library]) - AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ - #define __USE_INLINE__ - #include - #ifdef __amigaos4__ - struct SocketIFace *ISocket = NULL; - #else - struct Library *SocketBase = NULL; - #endif - ]],[[ - gethostbyname("www.dummysite.com"); - ]]) - ],[ - AC_MSG_RESULT([yes]) - HAVE_GETHOSTBYNAME="1" - HAVE_PROTO_BSDSOCKET_H="1" - AC_DEFINE(HAVE_PROTO_BSDSOCKET_H, 1, [if Amiga bsdsocket.library is in use]) - AC_SUBST(HAVE_PROTO_BSDSOCKET_H, [1]) - ],[ - AC_MSG_RESULT([no]) - ]) -fi - -if test "$HAVE_GETHOSTBYNAME" != "1" -then - dnl gethostbyname in the network lib - for Haiku OS - AC_CHECK_LIB(network, gethostbyname, - [HAVE_GETHOSTBYNAME="1" - LIBS="-lnetwork $LIBS" - ]) -fi - -if test "$HAVE_GETHOSTBYNAME" != "1"; then - AC_MSG_ERROR([couldn't find libraries for gethostbyname()]) -fi - -CURL_CHECK_LIBS_CONNECT - -CURL_NETWORK_LIBS=$LIBS - -dnl ********************************************************************** -dnl In case that function clock_gettime with monotonic timer is available, -dnl check for additional required libraries. -dnl ********************************************************************** -CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC - -dnl ********************************************************************** -dnl The preceding library checks are all potentially useful for test -dnl servers and libtest cases which require networking and clock_gettime -dnl support. Save the list of required libraries at this point for use -dnl while linking those test servers and programs. -dnl ********************************************************************** -CURL_NETWORK_AND_TIME_LIBS=$LIBS - -dnl ********************************************************************** -dnl Check for the presence of ZLIB libraries and headers -dnl ********************************************************************** - -dnl Check for & handle argument to --with-zlib. - -clean_CPPFLAGS=$CPPFLAGS -clean_LDFLAGS=$LDFLAGS -clean_LIBS=$LIBS -ZLIB_LIBS="" -AC_ARG_WITH(zlib, -AS_HELP_STRING([--with-zlib=PATH],[search for zlib in PATH]) -AS_HELP_STRING([--without-zlib],[disable use of zlib]), - [OPT_ZLIB="$withval"]) - -if test "$OPT_ZLIB" = "no" ; then - AC_MSG_WARN([zlib disabled]) -else - if test "$OPT_ZLIB" = "yes" ; then - OPT_ZLIB="" - fi - - if test -z "$OPT_ZLIB" ; then - CURL_CHECK_PKGCONFIG(zlib) - - if test "$PKGCONFIG" != "no" ; then - LIBS="`$PKGCONFIG --libs-only-l zlib` $LIBS" - LDFLAGS="$LDFLAGS `$PKGCONFIG --libs-only-L zlib`" - CPPFLAGS="$CPPFLAGS `$PKGCONFIG --cflags-only-I zlib`" - OPT_ZLIB="" - HAVE_LIBZ="1" - fi - - if test -z "$HAVE_LIBZ"; then - - dnl Check for the lib without setting any new path, since many - dnl people have it in the default path - - AC_CHECK_LIB(z, inflateEnd, - dnl libz found, set the variable - [HAVE_LIBZ="1" - LIBS="-lz $LIBS"], - dnl if no lib found, try /usr/local - [OPT_ZLIB="/usr/local"]) - fi - fi - - dnl Add a nonempty path to the compiler flags - if test -n "$OPT_ZLIB"; then - CPPFLAGS="$CPPFLAGS -I$OPT_ZLIB/include" - LDFLAGS="$LDFLAGS -L$OPT_ZLIB/lib$libsuff" - fi - - AC_CHECK_HEADER(zlib.h, - [ - dnl zlib.h was found - HAVE_ZLIB_H="1" - dnl if the lib wasn't found already, try again with the new paths - if test "$HAVE_LIBZ" != "1"; then - AC_CHECK_LIB(z, gzread, - [ - dnl the lib was found! - HAVE_LIBZ="1" - LIBS="-lz $LIBS" - ], - [ CPPFLAGS=$clean_CPPFLAGS - LDFLAGS=$clean_LDFLAGS]) - fi - ], - [ - dnl zlib.h was not found, restore the flags - CPPFLAGS=$clean_CPPFLAGS - LDFLAGS=$clean_LDFLAGS] - ) - - if test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" != "1" - then - AC_MSG_WARN([configure found only the libz lib, not the header file!]) - HAVE_LIBZ="" - CPPFLAGS=$clean_CPPFLAGS - LDFLAGS=$clean_LDFLAGS - LIBS=$clean_LIBS - elif test "$HAVE_LIBZ" != "1" && test "$HAVE_ZLIB_H" = "1" - then - AC_MSG_WARN([configure found only the libz header file, not the lib!]) - CPPFLAGS=$clean_CPPFLAGS - LDFLAGS=$clean_LDFLAGS - LIBS=$clean_LIBS - elif test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" = "1" - then - dnl both header and lib were found! - AC_SUBST(HAVE_LIBZ) - AC_DEFINE(HAVE_ZLIB_H, 1, [if you have the zlib.h header file]) - AC_DEFINE(HAVE_LIBZ, 1, [if zlib is available]) - - ZLIB_LIBS="-lz" - LIBS="-lz $clean_LIBS" - - dnl replace 'HAVE_LIBZ' in the automake makefile.ams - AMFIXLIB="1" - AC_MSG_NOTICE([found both libz and libz.h header]) - curl_zlib_msg="enabled" - fi -fi - -dnl set variable for use in automakefile(s) -AM_CONDITIONAL(HAVE_LIBZ, test x"$AMFIXLIB" = x1) -AC_SUBST(ZLIB_LIBS) - -dnl ********************************************************************** -dnl Check for the presence of BROTLI decoder libraries and headers -dnl ********************************************************************** - -dnl Brotli project home page: https://github.com/google/brotli - -dnl Default to compiler & linker defaults for BROTLI files & libraries. -OPT_BROTLI=off -AC_ARG_WITH(brotli,dnl -AS_HELP_STRING([--with-brotli=PATH],[Where to look for brotli, PATH points to the BROTLI installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option]) -AS_HELP_STRING([--without-brotli], [disable BROTLI]), - OPT_BROTLI=$withval) - -if test X"$OPT_BROTLI" != Xno; then - dnl backup the pre-brotli variables - CLEANLDFLAGS="$LDFLAGS" - CLEANCPPFLAGS="$CPPFLAGS" - CLEANLIBS="$LIBS" - - case "$OPT_BROTLI" in - yes) - dnl --with-brotli (without path) used - CURL_CHECK_PKGCONFIG(libbrotlidec) - - if test "$PKGCONFIG" != "no" ; then - LIB_BROTLI=`$PKGCONFIG --libs-only-l libbrotlidec` - LD_BROTLI=`$PKGCONFIG --libs-only-L libbrotlidec` - CPP_BROTLI=`$PKGCONFIG --cflags-only-I libbrotlidec` - version=`$PKGCONFIG --modversion libbrotlidec` - DIR_BROTLI=`echo $LD_BROTLI | $SED -e 's/^-L//'` - fi - - ;; - off) - dnl no --with-brotli option given, just check default places - ;; - *) - dnl use the given --with-brotli spot - PREFIX_BROTLI=$OPT_BROTLI - ;; - esac - - dnl if given with a prefix, we set -L and -I based on that - if test -n "$PREFIX_BROTLI"; then - LIB_BROTLI="-lbrotlidec" - LD_BROTLI=-L${PREFIX_BROTLI}/lib$libsuff - CPP_BROTLI=-I${PREFIX_BROTLI}/include - DIR_BROTLI=${PREFIX_BROTLI}/lib$libsuff - fi - - LDFLAGS="$LDFLAGS $LD_BROTLI" - CPPFLAGS="$CPPFLAGS $CPP_BROTLI" - LIBS="$LIB_BROTLI $LIBS" - - AC_CHECK_LIB(brotlidec, BrotliDecoderDecompress) - - AC_CHECK_HEADERS(brotli/decode.h, - curl_brotli_msg="enabled (libbrotlidec)" - HAVE_BROTLI=1 - AC_DEFINE(HAVE_BROTLI, 1, [if BROTLI is in use]) - AC_SUBST(HAVE_BROTLI, [1]) - ) - - if test X"$OPT_BROTLI" != Xoff && - test "$HAVE_BROTLI" != "1"; then - AC_MSG_ERROR([BROTLI libs and/or directories were not found where specified!]) - fi - - if test "$HAVE_BROTLI" = "1"; then - if test -n "$DIR_BROTLI"; then - dnl when the brotli shared libs were found in a path that the run-time - dnl linker doesn't search through, we need to add it to CURL_LIBRARY_PATH - dnl to prevent further configure tests to fail due to this - - if test "x$cross_compiling" != "xyes"; then - CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_BROTLI" - export CURL_LIBRARY_PATH - AC_MSG_NOTICE([Added $DIR_BROTLI to CURL_LIBRARY_PATH]) - fi - fi - else - dnl no brotli, revert back to clean variables - LDFLAGS=$CLEANLDFLAGS - CPPFLAGS=$CLEANCPPFLAGS - LIBS=$CLEANLIBS - fi -fi - -dnl ********************************************************************** -dnl Check for libzstd -dnl ********************************************************************** - -dnl Default to compiler & linker defaults for libzstd -OPT_ZSTD=off -AC_ARG_WITH(zstd,dnl -AS_HELP_STRING([--with-zstd=PATH],[Where to look for libzstd, PATH points to the libzstd installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option]) -AS_HELP_STRING([--without-zstd], [disable libzstd]), - OPT_ZSTD=$withval) - -if test X"$OPT_ZSTD" != Xno; then - dnl backup the pre-zstd variables - CLEANLDFLAGS="$LDFLAGS" - CLEANCPPFLAGS="$CPPFLAGS" - CLEANLIBS="$LIBS" - - case "$OPT_ZSTD" in - yes) - dnl --with-zstd (without path) used - CURL_CHECK_PKGCONFIG(libzstd) - - if test "$PKGCONFIG" != "no" ; then - LIB_ZSTD=`$PKGCONFIG --libs-only-l libzstd` - LD_ZSTD=`$PKGCONFIG --libs-only-L libzstd` - CPP_ZSTD=`$PKGCONFIG --cflags-only-I libzstd` - version=`$PKGCONFIG --modversion libzstd` - DIR_ZSTD=`echo $LD_ZSTD | $SED -e 's/-L//'` - fi - - ;; - off) - dnl no --with-zstd option given, just check default places - ;; - *) - dnl use the given --with-zstd spot - PREFIX_ZSTD=$OPT_ZSTD - ;; - esac - - dnl if given with a prefix, we set -L and -I based on that - if test -n "$PREFIX_ZSTD"; then - LIB_ZSTD="-lzstd" - LD_ZSTD=-L${PREFIX_ZSTD}/lib$libsuff - CPP_ZSTD=-I${PREFIX_ZSTD}/include - DIR_ZSTD=${PREFIX_ZSTD}/lib$libsuff - fi - - LDFLAGS="$LDFLAGS $LD_ZSTD" - CPPFLAGS="$CPPFLAGS $CPP_ZSTD" - LIBS="$LIB_ZSTD $LIBS" - - AC_CHECK_LIB(zstd, ZSTD_createDStream) - - AC_CHECK_HEADERS(zstd.h, - curl_zstd_msg="enabled (libzstd)" - HAVE_ZSTD=1 - AC_DEFINE(HAVE_ZSTD, 1, [if libzstd is in use]) - AC_SUBST(HAVE_ZSTD, [1]) - ) - - if test X"$OPT_ZSTD" != Xoff && - test "$HAVE_ZSTD" != "1"; then - AC_MSG_ERROR([libzstd was not found where specified!]) - fi - - if test "$HAVE_ZSTD" = "1"; then - if test -n "$DIR_ZSTD"; then - dnl when the zstd shared lib were found in a path that the run-time - dnl linker doesn't search through, we need to add it to - dnl CURL_LIBRARY_PATH to prevent further configure tests to fail due to - dnl this - - if test "x$cross_compiling" != "xyes"; then - CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_ZSTD" - export CURL_LIBRARY_PATH - AC_MSG_NOTICE([Added $DIR_ZSTD to CURL_LIBRARY_PATH]) - fi - fi - else - dnl no zstd, revert back to clean variables - LDFLAGS=$CLEANLDFLAGS - CPPFLAGS=$CLEANCPPFLAGS - LIBS=$CLEANLIBS - fi -fi - -dnl ********************************************************************** -dnl Check for LDAP -dnl ********************************************************************** - -LDAPLIBNAME="" -AC_ARG_WITH(ldap-lib, -AS_HELP_STRING([--with-ldap-lib=libname],[Specify name of ldap lib file]), - [LDAPLIBNAME="$withval"]) - -LBERLIBNAME="" -AC_ARG_WITH(lber-lib, -AS_HELP_STRING([--with-lber-lib=libname],[Specify name of lber lib file]), - [LBERLIBNAME="$withval"]) - -if test x$CURL_DISABLE_LDAP != x1 ; then - - CURL_CHECK_HEADER_LBER - CURL_CHECK_HEADER_LDAP - CURL_CHECK_HEADER_LDAP_SSL - - if test -z "$LDAPLIBNAME" ; then - if test "$curl_cv_native_windows" = "yes"; then - dnl Windows uses a single and unique LDAP library name - LDAPLIBNAME="wldap32" - LBERLIBNAME="no" - fi - fi - - if test "$LDAPLIBNAME" ; then - AC_CHECK_LIB("$LDAPLIBNAME", ldap_init,, [ - if test -n "$ldap_askedfor"; then - AC_MSG_ERROR([couldn't detect the LDAP libraries]) - fi - AC_MSG_WARN(["$LDAPLIBNAME" is not an LDAP library: LDAP disabled]) - AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP]) - AC_SUBST(CURL_DISABLE_LDAP, [1]) - AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS]) - AC_SUBST(CURL_DISABLE_LDAPS, [1])]) - else - dnl Try to find the right ldap libraries for this system - CURL_CHECK_LIBS_LDAP - case X-"$curl_cv_ldap_LIBS" in - X-unknown) - if test -n "$ldap_askedfor"; then - AC_MSG_ERROR([couldn't detect the LDAP libraries]) - fi - AC_MSG_WARN([Cannot find libraries for LDAP support: LDAP disabled]) - AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP]) - AC_SUBST(CURL_DISABLE_LDAP, [1]) - AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS]) - AC_SUBST(CURL_DISABLE_LDAPS, [1]) - ;; - esac - fi -fi - -if test x$CURL_DISABLE_LDAP != x1 ; then - - if test "$LBERLIBNAME" ; then - dnl If name is "no" then don't define this library at all - dnl (it's only needed if libldap.so's dependencies are broken). - if test "$LBERLIBNAME" != "no" ; then - AC_CHECK_LIB("$LBERLIBNAME", ber_free,, [ - AC_MSG_WARN(["$LBERLIBNAME" is not an LBER library: LDAP disabled]) - AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP]) - AC_SUBST(CURL_DISABLE_LDAP, [1]) - AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS]) - AC_SUBST(CURL_DISABLE_LDAPS, [1])]) - fi - fi -fi - -if test x$CURL_DISABLE_LDAP != x1 ; then - AC_CHECK_FUNCS([ldap_url_parse]) - - if test "$LDAPLIBNAME" = "wldap32"; then - curl_ldap_msg="enabled (winldap)" - AC_DEFINE(USE_WIN32_LDAP, 1, [Use Windows LDAP implementation]) - else - curl_ldap_msg="enabled (OpenLDAP)" - if test "x$ac_cv_func_ldap_init_fd" = "xyes"; then - AC_DEFINE(USE_OPENLDAP, 1, [Use OpenLDAP-specific code]) - AC_SUBST(USE_OPENLDAP, [1]) - fi - fi -fi - -if test x$CURL_DISABLE_LDAPS != x1 ; then - curl_ldaps_msg="enabled" -fi - -dnl ********************************************************************** -dnl Checks for IPv6 -dnl ********************************************************************** - -AC_MSG_CHECKING([whether to enable IPv6]) -AC_ARG_ENABLE(ipv6, -AS_HELP_STRING([--enable-ipv6],[Enable IPv6 (with IPv4) support]) -AS_HELP_STRING([--disable-ipv6],[Disable IPv6 support]), -[ case "$enableval" in - no) - AC_MSG_RESULT(no) - ipv6=no - ;; - *) AC_MSG_RESULT(yes) - ipv6=yes - ;; - esac ], - - AC_RUN_IFELSE([AC_LANG_SOURCE([[ -/* are AF_INET6 and sockaddr_in6 available? */ -#include -#ifdef HAVE_WINSOCK2_H -#include -#include -#else -#include -#include -#if defined (__TANDEM) -# include -#endif -#endif -#include /* for exit() */ -main() -{ - struct sockaddr_in6 s; - (void)s; - if (socket(AF_INET6, SOCK_STREAM, 0) < 0) - exit(1); - else - exit(0); -} -]]) -], - AC_MSG_RESULT(yes) - ipv6=yes, - AC_MSG_RESULT(no) - ipv6=no, - AC_MSG_RESULT(yes) - ipv6=yes -)) - -if test "$ipv6" = yes; then - curl_ipv6_msg="enabled" - AC_DEFINE(ENABLE_IPV6, 1, [Define if you want to enable IPv6 support]) - IPV6_ENABLED=1 - AC_SUBST(IPV6_ENABLED) - - AC_MSG_CHECKING([if struct sockaddr_in6 has sin6_scope_id member]) - AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([[ -#include -#ifdef HAVE_WINSOCK2_H -#include -#include -#else -#include -#if defined (__TANDEM) -# include -#endif -#endif -]], [[ - struct sockaddr_in6 s; - s.sin6_scope_id = 0; -]])], [ - AC_MSG_RESULT([yes]) - AC_DEFINE(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID, 1, [Define to 1 if struct sockaddr_in6 has the sin6_scope_id member]) - ], [ - AC_MSG_RESULT([no]) - ]) -fi - -dnl ********************************************************************** -dnl Check if the operating system allows programs to write to their own argv[] -dnl ********************************************************************** - -AC_MSG_CHECKING([if argv can be written to]) -CURL_RUN_IFELSE([[ -int main(int argc, char **argv) -{ - (void)argc; - argv[0][0] = ' '; - return (argv[0][0] == ' ')?0:1; -} -]],[ - curl_cv_writable_argv=yes -],[ - curl_cv_writable_argv=no -],[ - curl_cv_writable_argv=cross -]) -case $curl_cv_writable_argv in -yes) - AC_DEFINE(HAVE_WRITABLE_ARGV, 1, [Define this symbol if your OS supports changing the contents of argv]) - AC_MSG_RESULT(yes) - ;; -no) - AC_MSG_RESULT(no) - ;; -*) - AC_MSG_RESULT(no) - AC_MSG_WARN([the previous check could not be made default was used]) - ;; -esac - -dnl ********************************************************************** -dnl Check for GSS-API libraries -dnl ********************************************************************** - -dnl check for GSS-API stuff in the /usr as default - -GSSAPI_ROOT="/usr" -AC_ARG_WITH(gssapi-includes, - AS_HELP_STRING([--with-gssapi-includes=DIR], - [Specify location of GSS-API headers]), - [ GSSAPI_INCS="-I$withval" - want_gss="yes" ] -) - -AC_ARG_WITH(gssapi-libs, - AS_HELP_STRING([--with-gssapi-libs=DIR], - [Specify location of GSS-API libs]), - [ GSSAPI_LIB_DIR="-L$withval" - want_gss="yes" ] -) - -AC_ARG_WITH(gssapi, - AS_HELP_STRING([--with-gssapi=DIR], - [Where to look for GSS-API]), [ - GSSAPI_ROOT="$withval" - if test x"$GSSAPI_ROOT" != xno; then - want_gss="yes" - if test x"$GSSAPI_ROOT" = xyes; then - dnl if yes, then use default root - GSSAPI_ROOT="/usr" - fi - fi -]) - -: ${KRB5CONFIG:="$GSSAPI_ROOT/bin/krb5-config"} - -save_CPPFLAGS="$CPPFLAGS" -AC_MSG_CHECKING([if GSS-API support is requested]) -if test x"$want_gss" = xyes; then - AC_MSG_RESULT(yes) - - if test $GSSAPI_ROOT != "/usr"; then - CURL_CHECK_PKGCONFIG(mit-krb5-gssapi, $GSSAPI_ROOT/lib/pkgconfig) - else - CURL_CHECK_PKGCONFIG(mit-krb5-gssapi) - fi - if test -z "$GSSAPI_INCS"; then - if test -n "$host_alias" -a -f "$GSSAPI_ROOT/bin/$host_alias-krb5-config"; then - GSSAPI_INCS=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --cflags gssapi` - elif test "$PKGCONFIG" != "no" ; then - GSSAPI_INCS=`$PKGCONFIG --cflags mit-krb5-gssapi` - elif test -f "$KRB5CONFIG"; then - GSSAPI_INCS=`$KRB5CONFIG --cflags gssapi` - elif test "$GSSAPI_ROOT" != "yes"; then - GSSAPI_INCS="-I$GSSAPI_ROOT/include" - fi - fi - - CPPFLAGS="$CPPFLAGS $GSSAPI_INCS" - - AC_CHECK_HEADER(gss.h, - [ - dnl found in the given dirs - AC_DEFINE(HAVE_GSSGNU, 1, [if you have GNU GSS]) - gnu_gss=yes - ], - [ - dnl not found, check Heimdal or MIT - AC_CHECK_HEADERS([gssapi/gssapi.h], [], [not_mit=1]) - AC_CHECK_HEADERS( - [gssapi/gssapi_generic.h gssapi/gssapi_krb5.h], - [], - [not_mit=1], - [ -AC_INCLUDES_DEFAULT -#ifdef HAVE_GSSAPI_GSSAPI_H -#include -#endif - ]) - if test "x$not_mit" = "x1"; then - dnl MIT not found, check for Heimdal - AC_CHECK_HEADER(gssapi.h, - [ - dnl found - AC_DEFINE(HAVE_GSSHEIMDAL, 1, [if you have Heimdal]) - ], - [ - dnl no header found, disabling GSS - want_gss=no - AC_MSG_WARN(disabling GSS-API support since no header files were found) - ] - ) - else - dnl MIT found - AC_DEFINE(HAVE_GSSMIT, 1, [if you have MIT Kerberos]) - dnl check if we have a really old MIT Kerberos version (<= 1.2) - AC_MSG_CHECKING([if GSS-API headers declare GSS_C_NT_HOSTBASED_SERVICE]) - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ -#include -#include -#include - ]],[[ - gss_import_name( - (OM_uint32 *)0, - (gss_buffer_t)0, - GSS_C_NT_HOSTBASED_SERVICE, - (gss_name_t *)0); - ]]) - ],[ - AC_MSG_RESULT([yes]) - ],[ - AC_MSG_RESULT([no]) - AC_DEFINE(HAVE_OLD_GSSMIT, 1, - [if you have an old MIT Kerberos version, lacking GSS_C_NT_HOSTBASED_SERVICE]) - ]) - fi - ] - ) -else - AC_MSG_RESULT(no) -fi -if test x"$want_gss" = xyes; then - AC_DEFINE(HAVE_GSSAPI, 1, [if you have GSS-API libraries]) - HAVE_GSSAPI=1 - curl_gss_msg="enabled (MIT Kerberos/Heimdal)" - - if test -n "$gnu_gss"; then - curl_gss_msg="enabled (GNU GSS)" - LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR" - LIBS="-lgss $LIBS" - elif test -z "$GSSAPI_LIB_DIR"; then - case $host in - *-*-darwin*) - LIBS="-lgssapi_krb5 -lresolv $LIBS" - ;; - *) - if test $GSSAPI_ROOT != "/usr"; then - CURL_CHECK_PKGCONFIG(mit-krb5-gssapi, $GSSAPI_ROOT/lib/pkgconfig) - else - CURL_CHECK_PKGCONFIG(mit-krb5-gssapi) - fi - if test -n "$host_alias" -a -f "$GSSAPI_ROOT/bin/$host_alias-krb5-config"; then - dnl krb5-config doesn't have --libs-only-L or similar, put everything - dnl into LIBS - gss_libs=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --libs gssapi` - LIBS="$gss_libs $LIBS" - elif test "$PKGCONFIG" != "no" ; then - gss_libs=`$PKGCONFIG --libs mit-krb5-gssapi` - LIBS="$gss_libs $LIBS" - elif test -f "$KRB5CONFIG"; then - dnl krb5-config doesn't have --libs-only-L or similar, put everything - dnl into LIBS - gss_libs=`$KRB5CONFIG --libs gssapi` - LIBS="$gss_libs $LIBS" - else - case $host in - *-hp-hpux*) - gss_libname="gss" - ;; - *) - gss_libname="gssapi" - ;; - esac - - if test "$GSSAPI_ROOT" != "yes"; then - LDFLAGS="$LDFLAGS -L$GSSAPI_ROOT/lib$libsuff" - LIBS="-l$gss_libname $LIBS" - else - LIBS="-l$gss_libname $LIBS" - fi - fi - ;; - esac - else - LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR" - case $host in - *-hp-hpux*) - LIBS="-lgss $LIBS" - ;; - *) - LIBS="-lgssapi $LIBS" - ;; - esac - fi -else - CPPFLAGS="$save_CPPFLAGS" -fi - -if test x"$want_gss" = xyes; then - AC_MSG_CHECKING([if we can link against GSS-API library]) - AC_LINK_IFELSE([ - AC_LANG_FUNC_LINK_TRY([gss_init_sec_context]) - ],[ - AC_MSG_RESULT([yes]) - ],[ - AC_MSG_RESULT([no]) - AC_MSG_ERROR([--with-gssapi was specified, but a GSS-API library was not found.]) - ]) -fi - -build_libstubgss=no -if test x"$want_gss" = "xyes"; then - build_libstubgss=yes -fi - -AM_CONDITIONAL(BUILD_STUB_GSS, test "x$build_libstubgss" = "xyes") - -dnl ------------------------------------------------------------- -dnl parse --with-default-ssl-backend so it can be validated below -dnl ------------------------------------------------------------- - -DEFAULT_SSL_BACKEND=no -VALID_DEFAULT_SSL_BACKEND= -AC_ARG_WITH(default-ssl-backend, -AS_HELP_STRING([--with-default-ssl-backend=NAME],[Use NAME as default SSL backend]) -AS_HELP_STRING([--without-default-ssl-backend],[Use implicit default SSL backend]), - [DEFAULT_SSL_BACKEND=$withval]) -case "$DEFAULT_SSL_BACKEND" in - no) - dnl --without-default-ssl-backend option used - ;; - default|yes) - dnl --with-default-ssl-backend option used without name - AC_MSG_ERROR([The name of the default SSL backend is required.]) - ;; - *) - dnl --with-default-ssl-backend option used with name - AC_SUBST(DEFAULT_SSL_BACKEND) - dnl needs to be validated below - VALID_DEFAULT_SSL_BACKEND=no - ;; -esac - -CURL_WITH_SCHANNEL -CURL_WITH_SECURETRANSPORT -CURL_WITH_AMISSL -CURL_WITH_OPENSSL -CURL_WITH_GNUTLS -CURL_WITH_MBEDTLS -CURL_WITH_WOLFSSL -CURL_WITH_BEARSSL -CURL_WITH_RUSTLS -CURL_WITH_NSS - -dnl link required libraries for USE_WIN32_CRYPTO or USE_SCHANNEL -if test "x$USE_WIN32_CRYPTO" = "x1" -o "x$USE_SCHANNEL" = "x1"; then - LIBS="-ladvapi32 -lcrypt32 $LIBS" -fi - -dnl link bcrypt for BCryptGenRandom() (used when building for Vista or newer) -if test "x$curl_cv_native_windows" = "xyes" && - test "x$curl_mingw_original" = "xno"; then - LIBS="-lbcrypt $LIBS" -fi - -case "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$MBEDTLS_ENABLED$WOLFSSL_ENABLED$SCHANNEL_ENABLED$SECURETRANSPORT_ENABLED$BEARSSL_ENABLED$RUSTLS_ENABLED$SSL_DISABLED" -in -x) - AC_MSG_ERROR([TLS not detected, you will not be able to use HTTPS, FTPS, NTLM and more. -Use --with-openssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-nss, --with-schannel, --with-secure-transport, --with-amissl, --with-bearssl or --with-rustls to address this.]) - ;; -x1) - # one SSL backend is enabled - AC_SUBST(SSL_ENABLED) - SSL_ENABLED="1" - AC_MSG_NOTICE([built with one SSL backend]) - ;; -xD) - # explicitly built without TLS - ;; -*) - # more than one SSL backend is enabled - AC_SUBST(SSL_ENABLED) - SSL_ENABLED="1" - AC_SUBST(CURL_WITH_MULTI_SSL) - CURL_WITH_MULTI_SSL="1" - AC_DEFINE(CURL_WITH_MULTI_SSL, 1, [built with multiple SSL backends]) - AC_MSG_NOTICE([built with multiple SSL backends]) - ;; -esac - -if test -n "$ssl_backends"; then - curl_ssl_msg="enabled ($ssl_backends)" -fi - -if test no = "$VALID_DEFAULT_SSL_BACKEND" -then - if test -n "$SSL_ENABLED" - then - AC_MSG_ERROR([Default SSL backend $DEFAULT_SSL_BACKEND not enabled!]) - else - AC_MSG_ERROR([Default SSL backend requires SSL!]) - fi -elif test yes = "$VALID_DEFAULT_SSL_BACKEND" -then - AC_DEFINE_UNQUOTED([CURL_DEFAULT_SSL_BACKEND], ["$DEFAULT_SSL_BACKEND"], [Default SSL backend]) -fi - -dnl ********************************************************************** -dnl Check for the CA bundle -dnl ********************************************************************** - -if test -n "$check_for_ca_bundle"; then - CURL_CHECK_CA_BUNDLE -fi - -dnl ********************************************************************** -dnl Check for libpsl -dnl ********************************************************************** - -AC_ARG_WITH(libpsl, - AS_HELP_STRING([--without-libpsl], - [disable support for libpsl cookie checking]), - with_libpsl=$withval, - with_libpsl=yes) -if test $with_libpsl != "no"; then - AC_SEARCH_LIBS(psl_builtin, psl, - [curl_psl_msg="enabled"; - AC_DEFINE([USE_LIBPSL], [1], [PSL support enabled]) - ], - [curl_psl_msg="no (libpsl not found)"; - AC_MSG_WARN([libpsl was not found]) - ] - ) -fi -AM_CONDITIONAL([USE_LIBPSL], [test "$curl_psl_msg" = "enabled"]) - - -dnl ********************************************************************** -dnl Check for libgsasl -dnl ********************************************************************** - -AC_ARG_WITH(libgsasl, - AS_HELP_STRING([--without-libgsasl], - [disable libgsasl support for SCRAM]), - with_libgsasl=$withval, - with_libgsasl=yes) -if test $with_libgsasl != "no"; then - AC_SEARCH_LIBS(gsasl_init, gsasl, - [curl_gsasl_msg="enabled"; - AC_DEFINE([USE_GSASL], [1], [GSASL support enabled]) - ], - [curl_gsasl_msg="no (libgsasl not found)"; - AC_MSG_WARN([libgsasl was not found]) - ] - ) -fi -AM_CONDITIONAL([USE_GSASL], [test "$curl_gsasl_msg" = "enabled"]) - -AC_ARG_WITH(libmetalink,, - AC_MSG_ERROR([--with-libmetalink no longer works!])) - -dnl ********************************************************************** -dnl Check for the presence of LIBSSH2 libraries and headers -dnl ********************************************************************** - -dnl Default to compiler & linker defaults for LIBSSH2 files & libraries. -OPT_LIBSSH2=off -AC_ARG_WITH(libssh2,dnl -AS_HELP_STRING([--with-libssh2=PATH],[Where to look for libssh2, PATH points to the libssh2 installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option]) -AS_HELP_STRING([--with-libssh2], [enable libssh2]), - OPT_LIBSSH2=$withval, OPT_LIBSSH2=no) - - -OPT_LIBSSH=off -AC_ARG_WITH(libssh,dnl -AS_HELP_STRING([--with-libssh=PATH],[Where to look for libssh, PATH points to the libssh installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option]) -AS_HELP_STRING([--with-libssh], [enable libssh]), - OPT_LIBSSH=$withval, OPT_LIBSSH=no) - -OPT_WOLFSSH=off -AC_ARG_WITH(wolfssh,dnl -AS_HELP_STRING([--with-wolfssh=PATH],[Where to look for wolfssh, PATH points to the wolfSSH installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option]) -AS_HELP_STRING([--with-wolfssh], [enable wolfssh]), - OPT_WOLFSSH=$withval, OPT_WOLFSSH=no) - -if test X"$OPT_LIBSSH2" != Xno; then - dnl backup the pre-libssh2 variables - CLEANLDFLAGS="$LDFLAGS" - CLEANCPPFLAGS="$CPPFLAGS" - CLEANLIBS="$LIBS" - - case "$OPT_LIBSSH2" in - yes) - dnl --with-libssh2 (without path) used - CURL_CHECK_PKGCONFIG(libssh2) - - if test "$PKGCONFIG" != "no" ; then - LIB_SSH2=`$PKGCONFIG --libs libssh2` - LD_SSH2=`$PKGCONFIG --libs-only-L libssh2` - CPP_SSH2=`$PKGCONFIG --cflags-only-I libssh2` - version=`$PKGCONFIG --modversion libssh2` - DIR_SSH2=`echo $LD_SSH2 | $SED -e 's/^-L//'` - fi - - ;; - off) - dnl no --with-libssh2 option given, just check default places - ;; - *) - dnl use the given --with-libssh2 spot - PREFIX_SSH2=$OPT_LIBSSH2 - ;; - esac - - dnl if given with a prefix, we set -L and -I based on that - if test -n "$PREFIX_SSH2"; then - LIB_SSH2="-lssh2" - LD_SSH2=-L${PREFIX_SSH2}/lib$libsuff - CPP_SSH2=-I${PREFIX_SSH2}/include - DIR_SSH2=${PREFIX_SSH2}/lib$libsuff - fi - - LDFLAGS="$LDFLAGS $LD_SSH2" - CPPFLAGS="$CPPFLAGS $CPP_SSH2" - LIBS="$LIB_SSH2 $LIBS" - - dnl check for function added in libssh2 version 1.0 - AC_CHECK_LIB(ssh2, libssh2_session_block_directions) - - AC_CHECK_HEADERS(libssh2.h, - curl_ssh_msg="enabled (libSSH2)" - LIBSSH2_ENABLED=1 - AC_DEFINE(USE_LIBSSH2, 1, [if libSSH2 is in use]) - AC_SUBST(USE_LIBSSH2, [1]) - ) - - if test X"$OPT_LIBSSH2" != Xoff && - test "$LIBSSH2_ENABLED" != "1"; then - AC_MSG_ERROR([libSSH2 libs and/or directories were not found where specified!]) - fi - - if test "$LIBSSH2_ENABLED" = "1"; then - if test -n "$DIR_SSH2"; then - dnl when the libssh2 shared libs were found in a path that the run-time - dnl linker doesn't search through, we need to add it to CURL_LIBRARY_PATH - dnl to prevent further configure tests to fail due to this - - if test "x$cross_compiling" != "xyes"; then - CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_SSH2" - export CURL_LIBRARY_PATH - AC_MSG_NOTICE([Added $DIR_SSH2 to CURL_LIBRARY_PATH]) - fi - fi - else - dnl no libssh2, revert back to clean variables - LDFLAGS=$CLEANLDFLAGS - CPPFLAGS=$CLEANCPPFLAGS - LIBS=$CLEANLIBS - fi -elif test X"$OPT_LIBSSH" != Xno; then - dnl backup the pre-libssh variables - CLEANLDFLAGS="$LDFLAGS" - CLEANCPPFLAGS="$CPPFLAGS" - CLEANLIBS="$LIBS" - - case "$OPT_LIBSSH" in - yes) - dnl --with-libssh (without path) used - CURL_CHECK_PKGCONFIG(libssh) - - if test "$PKGCONFIG" != "no" ; then - LIB_SSH=`$PKGCONFIG --libs-only-l libssh` - LD_SSH=`$PKGCONFIG --libs-only-L libssh` - CPP_SSH=`$PKGCONFIG --cflags-only-I libssh` - version=`$PKGCONFIG --modversion libssh` - DIR_SSH=`echo $LD_SSH | $SED -e 's/^-L//'` - fi - - ;; - off) - dnl no --with-libssh option given, just check default places - ;; - *) - dnl use the given --with-libssh spot - PREFIX_SSH=$OPT_LIBSSH - ;; - esac - - dnl if given with a prefix, we set -L and -I based on that - if test -n "$PREFIX_SSH"; then - LIB_SSH="-lssh" - LD_SSH=-L${PREFIX_SSH}/lib$libsuff - CPP_SSH=-I${PREFIX_SSH}/include - DIR_SSH=${PREFIX_SSH}/lib$libsuff - fi - - LDFLAGS="$LDFLAGS $LD_SSH" - CPPFLAGS="$CPPFLAGS $CPP_SSH" - LIBS="$LIB_SSH $LIBS" - - AC_CHECK_LIB(ssh, ssh_new) - - AC_CHECK_HEADERS(libssh/libssh.h, - curl_ssh_msg="enabled (libSSH)" - LIBSSH_ENABLED=1 - AC_DEFINE(USE_LIBSSH, 1, [if libSSH is in use]) - AC_SUBST(USE_LIBSSH, [1]) - ) - - if test X"$OPT_LIBSSH" != Xoff && - test "$LIBSSH_ENABLED" != "1"; then - AC_MSG_ERROR([libSSH libs and/or directories were not found where specified!]) - fi - - if test "$LIBSSH_ENABLED" = "1"; then - if test -n "$DIR_SSH"; then - dnl when the libssh shared libs were found in a path that the run-time - dnl linker doesn't search through, we need to add it to CURL_LIBRARY_PATH - dnl to prevent further configure tests to fail due to this - - if test "x$cross_compiling" != "xyes"; then - CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_SSH" - export CURL_LIBRARY_PATH - AC_MSG_NOTICE([Added $DIR_SSH to CURL_LIBRARY_PATH]) - fi - fi - else - dnl no libssh, revert back to clean variables - LDFLAGS=$CLEANLDFLAGS - CPPFLAGS=$CLEANCPPFLAGS - LIBS=$CLEANLIBS - fi -elif test X"$OPT_WOLFSSH" != Xno; then - dnl backup the pre-wolfssh variables - CLEANLDFLAGS="$LDFLAGS" - CLEANCPPFLAGS="$CPPFLAGS" - CLEANLIBS="$LIBS" - - - if test "$OPT_WOLFSSH" != yes; then - WOLFCONFIG="$OPT_WOLFSSH/bin/wolfssh-config" - LDFLAGS="$LDFLAGS `$WOLFCONFIG --libs`" - CPPFLAGS="$CPPFLAGS `$WOLFCONFIG --cflags`" - fi - - AC_CHECK_LIB(wolfssh, wolfSSH_Init) - - AC_CHECK_HEADERS(wolfssh/ssh.h, - curl_ssh_msg="enabled (wolfSSH)" - WOLFSSH_ENABLED=1 - AC_DEFINE(USE_WOLFSSH, 1, [if wolfSSH is in use]) - AC_SUBST(USE_WOLFSSH, [1]) - ) - -fi - -dnl ********************************************************************** -dnl Check for the presence of LIBRTMP libraries and headers -dnl ********************************************************************** - -dnl Default to compiler & linker defaults for LIBRTMP files & libraries. -OPT_LIBRTMP=off -AC_ARG_WITH(librtmp,dnl -AS_HELP_STRING([--with-librtmp=PATH],[Where to look for librtmp, PATH points to the LIBRTMP installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option]) -AS_HELP_STRING([--without-librtmp], [disable LIBRTMP]), - OPT_LIBRTMP=$withval) - -if test X"$OPT_LIBRTMP" != Xno; then - dnl backup the pre-librtmp variables - CLEANLDFLAGS="$LDFLAGS" - CLEANCPPFLAGS="$CPPFLAGS" - CLEANLIBS="$LIBS" - - case "$OPT_LIBRTMP" in - yes) - dnl --with-librtmp (without path) used - CURL_CHECK_PKGCONFIG(librtmp) - - if test "$PKGCONFIG" != "no" ; then - LIB_RTMP=`$PKGCONFIG --libs-only-l librtmp` - LD_RTMP=`$PKGCONFIG --libs-only-L librtmp` - CPP_RTMP=`$PKGCONFIG --cflags-only-I librtmp` - version=`$PKGCONFIG --modversion librtmp` - DIR_RTMP=`echo $LD_RTMP | $SED -e 's/^-L//'` - else - dnl To avoid link errors, we do not allow --librtmp without - dnl a pkgconfig file - AC_MSG_ERROR([--librtmp was specified but could not find librtmp pkgconfig file.]) - fi - - ;; - off) - dnl no --with-librtmp option given, just check default places - LIB_RTMP="-lrtmp" - ;; - *) - dnl use the given --with-librtmp spot - LIB_RTMP="-lrtmp" - PREFIX_RTMP=$OPT_LIBRTMP - ;; - esac - - dnl if given with a prefix, we set -L and -I based on that - if test -n "$PREFIX_RTMP"; then - LD_RTMP=-L${PREFIX_RTMP}/lib$libsuff - CPP_RTMP=-I${PREFIX_RTMP}/include - DIR_RTMP=${PREFIX_RTMP}/lib$libsuff - fi - - LDFLAGS="$LDFLAGS $LD_RTMP" - CPPFLAGS="$CPPFLAGS $CPP_RTMP" - LIBS="$LIB_RTMP $LIBS" - - AC_CHECK_LIB(rtmp, RTMP_Init, - [ - AC_CHECK_HEADERS(librtmp/rtmp.h, - curl_rtmp_msg="enabled (librtmp)" - LIBRTMP_ENABLED=1 - AC_DEFINE(USE_LIBRTMP, 1, [if librtmp is in use]) - AC_SUBST(USE_LIBRTMP, [1]) - ) - ], - dnl not found, revert back to clean variables - LDFLAGS=$CLEANLDFLAGS - CPPFLAGS=$CLEANCPPFLAGS - LIBS=$CLEANLIBS - ) - - if test X"$OPT_LIBRTMP" != Xoff && - test "$LIBRTMP_ENABLED" != "1"; then - AC_MSG_ERROR([librtmp libs and/or directories were not found where specified!]) - fi - -fi - -dnl ********************************************************************** -dnl Check for linker switch for versioned symbols -dnl ********************************************************************** - -versioned_symbols_flavour= -AC_MSG_CHECKING([whether versioned symbols are wanted]) -AC_ARG_ENABLE(versioned-symbols, -AS_HELP_STRING([--enable-versioned-symbols], [Enable versioned symbols in shared library]) -AS_HELP_STRING([--disable-versioned-symbols], [Disable versioned symbols in shared library]), -[ case "$enableval" in - yes) AC_MSG_RESULT(yes) - AC_MSG_CHECKING([if libraries can be versioned]) - GLD=`$LD --help < /dev/null 2>/dev/null | grep version-script` - if test -z "$GLD"; then - AC_MSG_RESULT(no) - AC_MSG_WARN([You need an ld version supporting the --version-script option]) - else - AC_MSG_RESULT(yes) - if test "x$CURL_WITH_MULTI_SSL" = "x1"; then - versioned_symbols_flavour="MULTISSL_" - elif test "x$OPENSSL_ENABLED" = "x1"; then - versioned_symbols_flavour="OPENSSL_" - elif test "x$GNUTLS_ENABLED" = "x1"; then - versioned_symbols_flavour="GNUTLS_" - elif test "x$NSS_ENABLED" = "x1"; then - versioned_symbols_flavour="NSS_" - elif test "x$WOLFSSL_ENABLED" = "x1"; then - versioned_symbols_flavour="WOLFSSL_" - elif test "x$SCHANNEL_ENABLED" = "x1"; then - versioned_symbols_flavour="SCHANNEL_" - elif test "x$SECURETRANSPORT_ENABLED" = "x1"; then - versioned_symbols_flavour="SECURE_TRANSPORT_" - else - versioned_symbols_flavour="" - fi - versioned_symbols="yes" - fi - ;; - - *) AC_MSG_RESULT(no) - ;; - esac -], [ -AC_MSG_RESULT(no) -] -) - -AC_SUBST([CURL_LT_SHLIB_VERSIONED_FLAVOUR], - ["$versioned_symbols_flavour"]) -AM_CONDITIONAL([CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS], - [test "x$versioned_symbols" = 'xyes']) - -dnl Update .plist file with current version -AC_SUBST([CURL_PLIST_VERSION], - ["$CURLVERSION"]) - -dnl ------------------------------------------------- -dnl check winidn option before other IDN libraries -dnl ------------------------------------------------- - -AC_MSG_CHECKING([whether to enable Windows native IDN (Windows native builds only)]) -OPT_WINIDN="default" -AC_ARG_WITH(winidn, -AS_HELP_STRING([--with-winidn=PATH],[enable Windows native IDN]) -AS_HELP_STRING([--without-winidn], [disable Windows native IDN]), - OPT_WINIDN=$withval) -case "$OPT_WINIDN" in - no|default) - dnl --without-winidn option used or configure option not specified - want_winidn="no" - AC_MSG_RESULT([no]) - ;; - yes) - dnl --with-winidn option used without path - want_winidn="yes" - want_winidn_path="default" - AC_MSG_RESULT([yes]) - ;; - *) - dnl --with-winidn option used with path - want_winidn="yes" - want_winidn_path="$withval" - AC_MSG_RESULT([yes ($withval)]) - ;; -esac - -if test "$want_winidn" = "yes"; then - dnl winidn library support has been requested - clean_CFLAGS="$CFLAGS" - clean_CPPFLAGS="$CPPFLAGS" - clean_LDFLAGS="$LDFLAGS" - clean_LIBS="$LIBS" - WINIDN_LIBS="-lnormaliz" - WINIDN_CPPFLAGS="" - # - if test "$want_winidn_path" != "default"; then - dnl path has been specified - dnl pkg-config not available or provides no info - WINIDN_LDFLAGS="-L$want_winidn_path/lib$libsuff" - WINIDN_CPPFLAGS="-I$want_winidn_path/include" - WINIDN_DIR="$want_winidn_path/lib$libsuff" - fi - # - dnl WinIDN requires a minimum supported OS version of at least Vista (0x0600) - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ - #include - ]],[[ - #if (WINVER < 0x600) && (_WIN32_WINNT < 0x600) - #error - #endif - ]]) - ],[ - ],[ - CFLAGS=`echo $CFLAGS | $SED -e 's/-DWINVER=[[^ ]]*//g'` - CFLAGS=`echo $CFLAGS | $SED -e 's/-D_WIN32_WINNT=[[^ ]]*//g'` - CPPFLAGS=`echo $CPPFLAGS | $SED -e 's/-DWINVER=[[^ ]]*//g'` - CPPFLAGS=`echo $CPPFLAGS | $SED -e 's/-D_WIN32_WINNT=[[^ ]]*//g'` - WINIDN_CPPFLAGS="$WINIDN_CPPFLAGS -DWINVER=0x0600" - ]) - # - CPPFLAGS="$CPPFLAGS $WINIDN_CPPFLAGS" - LDFLAGS="$LDFLAGS $WINIDN_LDFLAGS" - LIBS="$WINIDN_LIBS $LIBS" - # - AC_MSG_CHECKING([if IdnToUnicode can be linked]) - AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ - #include - ]],[[ - IdnToUnicode(0, NULL, 0, NULL, 0); - ]]) - ],[ - AC_MSG_RESULT([yes]) - tst_links_winidn="yes" - ],[ - AC_MSG_RESULT([no]) - tst_links_winidn="no" - ]) - # - if test "$tst_links_winidn" = "yes"; then - AC_DEFINE(USE_WIN32_IDN, 1, [Define to 1 if you have the `normaliz' (WinIDN) library (-lnormaliz).]) - AC_DEFINE(WANT_IDN_PROTOTYPES, 1, [Define to 1 to provide own prototypes.]) - AC_SUBST([IDN_ENABLED], [1]) - curl_idn_msg="enabled (Windows-native)" - else - AC_MSG_WARN([Cannot find libraries for IDN support: IDN disabled]) - CFLAGS="$clean_CFLAGS" - CPPFLAGS="$clean_CPPFLAGS" - LDFLAGS="$clean_LDFLAGS" - LIBS="$clean_LIBS" - fi -fi - -dnl ********************************************************************** -dnl Check for the presence of IDN libraries and headers -dnl ********************************************************************** - -AC_MSG_CHECKING([whether to build with libidn2]) -OPT_IDN="default" -AC_ARG_WITH(libidn2, -AS_HELP_STRING([--with-libidn2=PATH],[Enable libidn2 usage]) -AS_HELP_STRING([--without-libidn2],[Disable libidn2 usage]), - [OPT_IDN=$withval]) -if test "x$tst_links_winidn" = "xyes"; then - want_idn="no" - AC_MSG_RESULT([no (using winidn instead)]) -else - case "$OPT_IDN" in - no) - dnl --without-libidn2 option used - want_idn="no" - AC_MSG_RESULT([no]) - ;; - default) - dnl configure option not specified - want_idn="yes" - want_idn_path="default" - AC_MSG_RESULT([(assumed) yes]) - ;; - yes) - dnl --with-libidn2 option used without path - want_idn="yes" - want_idn_path="default" - AC_MSG_RESULT([yes]) - ;; - *) - dnl --with-libidn2 option used with path - want_idn="yes" - want_idn_path="$withval" - AC_MSG_RESULT([yes ($withval)]) - ;; - esac -fi - -if test "$want_idn" = "yes"; then - dnl idn library support has been requested - clean_CPPFLAGS="$CPPFLAGS" - clean_LDFLAGS="$LDFLAGS" - clean_LIBS="$LIBS" - PKGCONFIG="no" - # - if test "$want_idn_path" != "default"; then - dnl path has been specified - IDN_PCDIR="$want_idn_path/lib$libsuff/pkgconfig" - CURL_CHECK_PKGCONFIG(libidn2, [$IDN_PCDIR]) - if test "$PKGCONFIG" != "no"; then - IDN_LIBS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl - $PKGCONFIG --libs-only-l libidn2 2>/dev/null` - IDN_LDFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl - $PKGCONFIG --libs-only-L libidn2 2>/dev/null` - IDN_CPPFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl - $PKGCONFIG --cflags-only-I libidn2 2>/dev/null` - IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/^-L//'` - else - dnl pkg-config not available or provides no info - IDN_LIBS="-lidn2" - IDN_LDFLAGS="-L$want_idn_path/lib$libsuff" - IDN_CPPFLAGS="-I$want_idn_path/include" - IDN_DIR="$want_idn_path/lib$libsuff" - fi - else - dnl path not specified - CURL_CHECK_PKGCONFIG(libidn2) - if test "$PKGCONFIG" != "no"; then - IDN_LIBS=`$PKGCONFIG --libs-only-l libidn2 2>/dev/null` - IDN_LDFLAGS=`$PKGCONFIG --libs-only-L libidn2 2>/dev/null` - IDN_CPPFLAGS=`$PKGCONFIG --cflags-only-I libidn2 2>/dev/null` - IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/^-L//'` - else - dnl pkg-config not available or provides no info - IDN_LIBS="-lidn2" - fi - fi - # - if test "$PKGCONFIG" != "no"; then - AC_MSG_NOTICE([pkg-config: IDN_LIBS: "$IDN_LIBS"]) - AC_MSG_NOTICE([pkg-config: IDN_LDFLAGS: "$IDN_LDFLAGS"]) - AC_MSG_NOTICE([pkg-config: IDN_CPPFLAGS: "$IDN_CPPFLAGS"]) - AC_MSG_NOTICE([pkg-config: IDN_DIR: "$IDN_DIR"]) - else - AC_MSG_NOTICE([IDN_LIBS: "$IDN_LIBS"]) - AC_MSG_NOTICE([IDN_LDFLAGS: "$IDN_LDFLAGS"]) - AC_MSG_NOTICE([IDN_CPPFLAGS: "$IDN_CPPFLAGS"]) - AC_MSG_NOTICE([IDN_DIR: "$IDN_DIR"]) - fi - # - CPPFLAGS="$CPPFLAGS $IDN_CPPFLAGS" - LDFLAGS="$LDFLAGS $IDN_LDFLAGS" - LIBS="$IDN_LIBS $LIBS" - # - AC_MSG_CHECKING([if idn2_lookup_ul can be linked]) - AC_LINK_IFELSE([ - AC_LANG_FUNC_LINK_TRY([idn2_lookup_ul]) - ],[ - AC_MSG_RESULT([yes]) - tst_links_libidn="yes" - ],[ - AC_MSG_RESULT([no]) - tst_links_libidn="no" - ]) - # - AC_CHECK_HEADERS( idn2.h ) - - if test "$tst_links_libidn" = "yes"; then - AC_DEFINE(HAVE_LIBIDN2, 1, [Define to 1 if you have the `idn2' library (-lidn2).]) - dnl different versions of libidn have different setups of these: - - AC_SUBST([IDN_ENABLED], [1]) - curl_idn_msg="enabled (libidn2)" - if test -n "$IDN_DIR" -a "x$cross_compiling" != "xyes"; then - CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$IDN_DIR" - export CURL_LIBRARY_PATH - AC_MSG_NOTICE([Added $IDN_DIR to CURL_LIBRARY_PATH]) - fi - else - AC_MSG_WARN([Cannot find libraries for IDN support: IDN disabled]) - CPPFLAGS="$clean_CPPFLAGS" - LDFLAGS="$clean_LDFLAGS" - LIBS="$clean_LIBS" - fi -fi - -dnl ********************************************************************** -dnl Check for nghttp2 -dnl ********************************************************************** - -OPT_H2="yes" - -if test "x$disable_http" = "xyes" -o X"$want_hyper" != Xno; then - # without HTTP or with Hyper, nghttp2 is no use - OPT_H2="no" -fi - -AC_ARG_WITH(nghttp2, -AS_HELP_STRING([--with-nghttp2=PATH],[Enable nghttp2 usage]) -AS_HELP_STRING([--without-nghttp2],[Disable nghttp2 usage]), - [OPT_H2=$withval]) -case "$OPT_H2" in - no) - dnl --without-nghttp2 option used - want_nghttp2="no" - ;; - yes) - dnl --with-nghttp2 option used without path - want_nghttp2="default" - want_nghttp2_path="" - want_nghttp2_pkg_config_path="" - ;; - *) - dnl --with-nghttp2 option used with path - want_nghttp2="yes" - want_nghttp2_path="$withval" - want_nghttp2_pkg_config_path="$withval/lib/pkgconfig" - ;; -esac - -if test X"$want_nghttp2" != Xno; then - dnl backup the pre-nghttp2 variables - CLEANLDFLAGS="$LDFLAGS" - CLEANCPPFLAGS="$CPPFLAGS" - CLEANLIBS="$LIBS" - - CURL_CHECK_PKGCONFIG(libnghttp2, $want_nghttp2_pkg_config_path) - - if test "$PKGCONFIG" != "no" ; then - LIB_H2=`CURL_EXPORT_PCDIR([$want_nghttp2_pkg_config_path]) - $PKGCONFIG --libs-only-l libnghttp2` - AC_MSG_NOTICE([-l is $LIB_H2]) - - CPP_H2=`CURL_EXPORT_PCDIR([$want_nghttp2_pkg_config_path]) dnl - $PKGCONFIG --cflags-only-I libnghttp2` - AC_MSG_NOTICE([-I is $CPP_H2]) - - LD_H2=`CURL_EXPORT_PCDIR([$want_nghttp2_pkg_config_path]) - $PKGCONFIG --libs-only-L libnghttp2` - AC_MSG_NOTICE([-L is $LD_H2]) - - DIR_H2=`echo $LD_H2 | $SED -e 's/^-L//'` - elif test x"$want_nghttp2_path" != x; then - LIB_H2="-lnghttp2" - LD_H2=-L${want_nghttp2_path}/lib$libsuff - CPP_H2=-I${want_nghttp2_path}/include - DIR_H2=${want_nghttp2_path}/lib$libsuff - elif test X"$want_nghttp2" != Xdefault; then - dnl no nghttp2 pkg-config found and no custom directory specified, - dnl deal with it - AC_MSG_ERROR([--with-nghttp2 was specified but could not find libnghttp2 pkg-config file.]) - fi - - LDFLAGS="$LDFLAGS $LD_H2" - CPPFLAGS="$CPPFLAGS $CPP_H2" - LIBS="$LIB_H2 $LIBS" - - # use nghttp2_session_set_local_window_size to require nghttp2 - # >= 1.12.0 - AC_CHECK_LIB(nghttp2, nghttp2_session_set_local_window_size, - [ - AC_CHECK_HEADERS(nghttp2/nghttp2.h, - curl_h2_msg="enabled (nghttp2)" - NGHTTP2_ENABLED=1 - AC_DEFINE(USE_NGHTTP2, 1, [if nghttp2 is in use]) - AC_SUBST(USE_NGHTTP2, [1]) - ) - - CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_H2" - export CURL_LIBRARY_PATH - AC_MSG_NOTICE([Added $DIR_H2 to CURL_LIBRARY_PATH]) - ], - dnl not found, revert back to clean variables - LDFLAGS=$CLEANLDFLAGS - CPPFLAGS=$CLEANCPPFLAGS - LIBS=$CLEANLIBS - ) -fi - -dnl ********************************************************************** -dnl Check for ngtcp2 (QUIC) -dnl ********************************************************************** - -OPT_TCP2="yes" - -if test "x$disable_http" = "xyes"; then - # without HTTP, ngtcp2 is no use - OPT_TCP2="no" -fi - -AC_ARG_WITH(ngtcp2, -AS_HELP_STRING([--with-ngtcp2=PATH],[Enable ngtcp2 usage]) -AS_HELP_STRING([--without-ngtcp2],[Disable ngtcp2 usage]), - [OPT_TCP2=$withval]) -case "$OPT_TCP2" in - no) - dnl --without-ngtcp2 option used - want_tcp2="no" - ;; - yes) - dnl --with-ngtcp2 option used without path - want_tcp2="default" - want_tcp2_path="" - ;; - *) - dnl --with-ngtcp2 option used with path - want_tcp2="yes" - want_tcp2_path="$withval/lib/pkgconfig" - ;; -esac - -curl_tcp2_msg="no (--with-ngtcp2)" -if test X"$want_tcp2" != Xno; then - dnl backup the pre-ngtcp2 variables - CLEANLDFLAGS="$LDFLAGS" - CLEANCPPFLAGS="$CPPFLAGS" - CLEANLIBS="$LIBS" - - CURL_CHECK_PKGCONFIG(libngtcp2, $want_tcp2_path) - - if test "$PKGCONFIG" != "no" ; then - LIB_TCP2=`CURL_EXPORT_PCDIR([$want_tcp2_path]) - $PKGCONFIG --libs-only-l libngtcp2` - AC_MSG_NOTICE([-l is $LIB_TCP2]) - - CPP_TCP2=`CURL_EXPORT_PCDIR([$want_tcp2_path]) dnl - $PKGCONFIG --cflags-only-I libngtcp2` - AC_MSG_NOTICE([-I is $CPP_TCP2]) - - LD_TCP2=`CURL_EXPORT_PCDIR([$want_tcp2_path]) - $PKGCONFIG --libs-only-L libngtcp2` - AC_MSG_NOTICE([-L is $LD_TCP2]) - - LDFLAGS="$LDFLAGS $LD_TCP2" - CPPFLAGS="$CPPFLAGS $CPP_TCP2" - LIBS="$LIB_TCP2 $LIBS" - - if test "x$cross_compiling" != "xyes"; then - DIR_TCP2=`echo $LD_TCP2 | $SED -e 's/^-L//'` - fi - AC_CHECK_LIB(ngtcp2, ngtcp2_conn_client_new_versioned, - [ - AC_CHECK_HEADERS(ngtcp2/ngtcp2.h, - NGTCP2_ENABLED=1 - AC_DEFINE(USE_NGTCP2, 1, [if ngtcp2 is in use]) - AC_SUBST(USE_NGTCP2, [1]) - CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_TCP2" - export CURL_LIBRARY_PATH - AC_MSG_NOTICE([Added $DIR_TCP2 to CURL_LIBRARY_PATH]) - ) - ], - dnl not found, revert back to clean variables - LDFLAGS=$CLEANLDFLAGS - CPPFLAGS=$CLEANCPPFLAGS - LIBS=$CLEANLIBS - ) - - else - dnl no ngtcp2 pkg-config found, deal with it - if test X"$want_tcp2" != Xdefault; then - dnl To avoid link errors, we do not allow --with-ngtcp2 without - dnl a pkgconfig file - AC_MSG_ERROR([--with-ngtcp2 was specified but could not find ngtcp2 pkg-config file.]) - fi - fi - -fi - -if test "x$NGTCP2_ENABLED" = "x1" -a "x$OPENSSL_ENABLED" = "x1"; then - dnl backup the pre-ngtcp2_crypto_openssl variables - CLEANLDFLAGS="$LDFLAGS" - CLEANCPPFLAGS="$CPPFLAGS" - CLEANLIBS="$LIBS" - - CURL_CHECK_PKGCONFIG(libngtcp2_crypto_openssl, $want_tcp2_path) - - if test "$PKGCONFIG" != "no" ; then - LIB_NGTCP2_CRYPTO_OPENSSL=`CURL_EXPORT_PCDIR([$want_tcp2_path]) - $PKGCONFIG --libs-only-l libngtcp2_crypto_openssl` - AC_MSG_NOTICE([-l is $LIB_NGTCP2_CRYPTO_OPENSSL]) - - CPP_NGTCP2_CRYPTO_OPENSSL=`CURL_EXPORT_PCDIR([$want_tcp2_path]) dnl - $PKGCONFIG --cflags-only-I libngtcp2_crypto_openssl` - AC_MSG_NOTICE([-I is $CPP_NGTCP2_CRYPTO_OPENSSL]) - - LD_NGTCP2_CRYPTO_OPENSSL=`CURL_EXPORT_PCDIR([$want_tcp2_path]) - $PKGCONFIG --libs-only-L libngtcp2_crypto_openssl` - AC_MSG_NOTICE([-L is $LD_NGTCP2_CRYPTO_OPENSSL]) - - LDFLAGS="$LDFLAGS $LD_NGTCP2_CRYPTO_OPENSSL" - CPPFLAGS="$CPPFLAGS $CPP_NGTCP2_CRYPTO_OPENSSL" - LIBS="$LIB_NGTCP2_CRYPTO_OPENSSL $LIBS" - - if test "x$cross_compiling" != "xyes"; then - DIR_NGTCP2_CRYPTO_OPENSSL=`echo $LD_NGTCP2_CRYPTO_OPENSSL | $SED -e 's/^-L//'` - fi - AC_CHECK_LIB(ngtcp2_crypto_openssl, ngtcp2_crypto_recv_client_initial_cb, - [ - AC_CHECK_HEADERS(ngtcp2/ngtcp2_crypto.h, - NGTCP2_ENABLED=1 - AC_DEFINE(USE_NGTCP2_CRYPTO_OPENSSL, 1, [if ngtcp2_crypto_openssl is in use]) - AC_SUBST(USE_NGTCP2_CRYPTO_OPENSSL, [1]) - CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGTCP2_CRYPTO_OPENSSL" - export CURL_LIBRARY_PATH - AC_MSG_NOTICE([Added $DIR_NGTCP2_CRYPTO_OPENSSL to CURL_LIBRARY_PATH]) - ) - ], - dnl not found, revert back to clean variables - LDFLAGS=$CLEANLDFLAGS - CPPFLAGS=$CLEANCPPFLAGS - LIBS=$CLEANLIBS - ) - - else - dnl no ngtcp2_crypto_openssl pkg-config found, deal with it - if test X"$want_tcp2" != Xdefault; then - dnl To avoid link errors, we do not allow --with-ngtcp2 without - dnl a pkgconfig file - AC_MSG_ERROR([--with-ngtcp2 was specified but could not find ngtcp2_crypto_openssl pkg-config file.]) - fi - fi -fi - -if test "x$NGTCP2_ENABLED" = "x1" -a "x$GNUTLS_ENABLED" = "x1"; then - dnl backup the pre-ngtcp2_crypto_gnutls variables - CLEANLDFLAGS="$LDFLAGS" - CLEANCPPFLAGS="$CPPFLAGS" - CLEANLIBS="$LIBS" - - CURL_CHECK_PKGCONFIG(libngtcp2_crypto_gnutls, $want_tcp2_path) - - if test "$PKGCONFIG" != "no" ; then - LIB_NGTCP2_CRYPTO_GNUTLS=`CURL_EXPORT_PCDIR([$want_tcp2_path]) - $PKGCONFIG --libs-only-l libngtcp2_crypto_gnutls` - AC_MSG_NOTICE([-l is $LIB_NGTCP2_CRYPTO_GNUTLS]) - - CPP_NGTCP2_CRYPTO_GNUTLS=`CURL_EXPORT_PCDIR([$want_tcp2_path]) dnl - $PKGCONFIG --cflags-only-I libngtcp2_crypto_gnutls` - AC_MSG_NOTICE([-I is $CPP_NGTCP2_CRYPTO_GNUTLS]) - - LD_NGTCP2_CRYPTO_GNUTLS=`CURL_EXPORT_PCDIR([$want_tcp2_path]) - $PKGCONFIG --libs-only-L libngtcp2_crypto_gnutls` - AC_MSG_NOTICE([-L is $LD_NGTCP2_CRYPTO_GNUTLS]) - - LDFLAGS="$LDFLAGS $LD_NGTCP2_CRYPTO_GNUTLS" - CPPFLAGS="$CPPFLAGS $CPP_NGTCP2_CRYPTO_GNUTLS" - LIBS="$LIB_NGTCP2_CRYPTO_GNUTLS $LIBS" - - if test "x$cross_compiling" != "xyes"; then - DIR_NGTCP2_CRYPTO_GNUTLS=`echo $LD_NGTCP2_CRYPTO_GNUTLS | $SED -e 's/^-L//'` - fi - AC_CHECK_LIB(ngtcp2_crypto_gnutls, ngtcp2_crypto_recv_client_initial_cb, - [ - AC_CHECK_HEADERS(ngtcp2/ngtcp2_crypto.h, - NGTCP2_ENABLED=1 - AC_DEFINE(USE_NGTCP2_CRYPTO_GNUTLS, 1, [if ngtcp2_crypto_gnutls is in use]) - AC_SUBST(USE_NGTCP2_CRYPTO_GNUTLS, [1]) - CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGTCP2_CRYPTO_GNUTLS" - export CURL_LIBRARY_PATH - AC_MSG_NOTICE([Added $DIR_NGTCP2_CRYPTO_GNUTLS to CURL_LIBRARY_PATH]) - ) - ], - dnl not found, revert back to clean variables - LDFLAGS=$CLEANLDFLAGS - CPPFLAGS=$CLEANCPPFLAGS - LIBS=$CLEANLIBS - ) - - else - dnl no ngtcp2_crypto_gnutls pkg-config found, deal with it - if test X"$want_tcp2" != Xdefault; then - dnl To avoid link errors, we do not allow --with-ngtcp2 without - dnl a pkgconfig file - AC_MSG_ERROR([--with-ngtcp2 was specified but could not find ngtcp2_crypto_gnutls pkg-config file.]) - fi - fi -fi - -if test "x$NGTCP2_ENABLED" = "x1" -a "x$WOLFSSL_ENABLED" = "x1"; then - dnl backup the pre-ngtcp2_crypto_wolfssl variables - CLEANLDFLAGS="$LDFLAGS" - CLEANCPPFLAGS="$CPPFLAGS" - CLEANLIBS="$LIBS" - - CURL_CHECK_PKGCONFIG(libngtcp2_crypto_wolfssl, $want_tcp2_path) - - if test "$PKGCONFIG" != "no" ; then - LIB_NGTCP2_CRYPTO_WOLFSSL=`CURL_EXPORT_PCDIR([$want_tcp2_path]) - $PKGCONFIG --libs-only-l libngtcp2_crypto_wolfssl` - AC_MSG_NOTICE([-l is $LIB_NGTCP2_CRYPTO_WOLFSSL]) - - CPP_NGTCP2_CRYPTO_WOLFSSL=`CURL_EXPORT_PCDIR([$want_tcp2_path]) dnl - $PKGCONFIG --cflags-only-I libngtcp2_crypto_wolfssl` - AC_MSG_NOTICE([-I is $CPP_NGTCP2_CRYPTO_WOLFSSL]) - - LD_NGTCP2_CRYPTO_WOLFSSL=`CURL_EXPORT_PCDIR([$want_tcp2_path]) - $PKGCONFIG --libs-only-L libngtcp2_crypto_wolfssl` - AC_MSG_NOTICE([-L is $LD_NGTCP2_CRYPTO_WOLFSSL]) - - LDFLAGS="$LDFLAGS $LD_NGTCP2_CRYPTO_WOLFSSL" - CPPFLAGS="$CPPFLAGS $CPP_NGTCP2_CRYPTO_WOLFSSL" - LIBS="$LIB_NGTCP2_CRYPTO_WOLFSSL $LIBS" - - if test "x$cross_compiling" != "xyes"; then - DIR_NGTCP2_CRYPTO_WOLFSSL=`echo $LD_NGTCP2_CRYPTO_WOLFSSL | $SED -e 's/^-L//'` - fi - AC_CHECK_LIB(ngtcp2_crypto_wolfssl, ngtcp2_crypto_recv_client_initial_cb, - [ - AC_CHECK_HEADERS(ngtcp2/ngtcp2_crypto.h, - NGTCP2_ENABLED=1 - AC_DEFINE(USE_NGTCP2_CRYPTO_WOLFSSL, 1, [if ngtcp2_crypto_wolfssl is in use]) - AC_SUBST(USE_NGTCP2_CRYPTO_WOLFSSL, [1]) - CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGTCP2_CRYPTO_WOLFSSL" - export CURL_LIBRARY_PATH - AC_MSG_NOTICE([Added $DIR_NGTCP2_CRYPTO_WOLFSSL to CURL_LIBRARY_PATH]) - ) - ], - dnl not found, revert back to clean variables - LDFLAGS=$CLEANLDFLAGS - CPPFLAGS=$CLEANCPPFLAGS - LIBS=$CLEANLIBS - ) - - else - dnl no ngtcp2_crypto_wolfssl pkg-config found, deal with it - if test X"$want_tcp2" != Xdefault; then - dnl To avoid link errors, we do not allow --with-ngtcp2 without - dnl a pkgconfig file - AC_MSG_ERROR([--with-ngtcp2 was specified but could not find ngtcp2_crypto_wolfssl pkg-config file.]) - fi - fi -fi - -dnl ********************************************************************** -dnl Check for nghttp3 (HTTP/3 with ngtcp2) -dnl ********************************************************************** - -OPT_NGHTTP3="yes" - -if test "x$NGTCP2_ENABLED" = "x"; then - # without ngtcp2, nghttp3 is of no use for us - OPT_NGHTTP3="no" -fi - -AC_ARG_WITH(nghttp3, -AS_HELP_STRING([--with-nghttp3=PATH],[Enable nghttp3 usage]) -AS_HELP_STRING([--without-nghttp3],[Disable nghttp3 usage]), - [OPT_NGHTTP3=$withval]) -case "$OPT_NGHTTP3" in - no) - dnl --without-nghttp3 option used - want_nghttp3="no" - ;; - yes) - dnl --with-nghttp3 option used without path - want_nghttp3="default" - want_nghttp3_path="" - ;; - *) - dnl --with-nghttp3 option used with path - want_nghttp3="yes" - want_nghttp3_path="$withval/lib/pkgconfig" - ;; -esac - -curl_http3_msg="no (--with-nghttp3)" -if test X"$want_nghttp3" != Xno; then - dnl backup the pre-nghttp3 variables - CLEANLDFLAGS="$LDFLAGS" - CLEANCPPFLAGS="$CPPFLAGS" - CLEANLIBS="$LIBS" - - CURL_CHECK_PKGCONFIG(libnghttp3, $want_nghttp3_path) - - if test "$PKGCONFIG" != "no" ; then - LIB_NGHTTP3=`CURL_EXPORT_PCDIR([$want_nghttp3_path]) - $PKGCONFIG --libs-only-l libnghttp3` - AC_MSG_NOTICE([-l is $LIB_NGHTTP3]) - - CPP_NGHTTP3=`CURL_EXPORT_PCDIR([$want_nghttp3_path]) dnl - $PKGCONFIG --cflags-only-I libnghttp3` - AC_MSG_NOTICE([-I is $CPP_NGHTTP3]) - - LD_NGHTTP3=`CURL_EXPORT_PCDIR([$want_nghttp3_path]) - $PKGCONFIG --libs-only-L libnghttp3` - AC_MSG_NOTICE([-L is $LD_NGHTTP3]) - - LDFLAGS="$LDFLAGS $LD_NGHTTP3" - CPPFLAGS="$CPPFLAGS $CPP_NGHTTP3" - LIBS="$LIB_NGHTTP3 $LIBS" - - if test "x$cross_compiling" != "xyes"; then - DIR_NGHTTP3=`echo $LD_NGHTTP3 | $SED -e 's/^-L//'` - fi - AC_CHECK_LIB(nghttp3, nghttp3_conn_client_new_versioned, - [ - AC_CHECK_HEADERS(nghttp3/nghttp3.h, - curl_h3_msg="enabled (ngtcp2 + nghttp3)" - NGHTTP3_ENABLED=1 - AC_DEFINE(USE_NGHTTP3, 1, [if nghttp3 is in use]) - AC_SUBST(USE_NGHTTP3, [1]) - CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGHTTP3" - export CURL_LIBRARY_PATH - AC_MSG_NOTICE([Added $DIR_NGHTTP3 to CURL_LIBRARY_PATH]) - experimental="$experimental HTTP3" - ) - ], - dnl not found, revert back to clean variables - LDFLAGS=$CLEANLDFLAGS - CPPFLAGS=$CLEANCPPFLAGS - LIBS=$CLEANLIBS - ) - - else - dnl no nghttp3 pkg-config found, deal with it - if test X"$want_nghttp3" != Xdefault; then - dnl To avoid link errors, we do not allow --with-nghttp3 without - dnl a pkgconfig file - AC_MSG_ERROR([--with-nghttp3 was specified but could not find nghttp3 pkg-config file.]) - fi - fi - -fi - -dnl ********************************************************************** -dnl Check for quiche (QUIC) -dnl ********************************************************************** - -OPT_QUICHE="no" - -if test "x$disable_http" = "xyes" -o "x$USE_NGTCP" = "x1"; then - # without HTTP or with ngtcp2, quiche is no use - OPT_QUICHE="no" -fi - -AC_ARG_WITH(quiche, -AS_HELP_STRING([--with-quiche=PATH],[Enable quiche usage]) -AS_HELP_STRING([--without-quiche],[Disable quiche usage]), - [OPT_QUICHE=$withval]) -case "$OPT_QUICHE" in - no) - dnl --without-quiche option used - want_quiche="no" - ;; - yes) - dnl --with-quiche option used without path - want_quiche="default" - want_quiche_path="" - ;; - *) - dnl --with-quiche option used with path - want_quiche="yes" - want_quiche_path="$withval" - ;; -esac - -if test X"$want_quiche" != Xno; then - - if test "$NGHTTP3_ENABLED" = 1; then - AC_MSG_ERROR([--with-quiche and --with-ngtcp2 are mutually exclusive]) - fi - - dnl backup the pre-quiche variables - CLEANLDFLAGS="$LDFLAGS" - CLEANCPPFLAGS="$CPPFLAGS" - CLEANLIBS="$LIBS" - - CURL_CHECK_PKGCONFIG(quiche, $want_quiche_path) - - if test "$PKGCONFIG" != "no" ; then - LIB_QUICHE=`CURL_EXPORT_PCDIR([$want_quiche_path]) - $PKGCONFIG --libs-only-l quiche` - AC_MSG_NOTICE([-l is $LIB_QUICHE]) - - CPP_QUICHE=`CURL_EXPORT_PCDIR([$want_quiche_path]) dnl - $PKGCONFIG --cflags-only-I quiche` - AC_MSG_NOTICE([-I is $CPP_QUICHE]) - - LD_QUICHE=`CURL_EXPORT_PCDIR([$want_quiche_path]) - $PKGCONFIG --libs-only-L quiche` - AC_MSG_NOTICE([-L is $LD_QUICHE]) - - LDFLAGS="$LDFLAGS $LD_QUICHE" - CPPFLAGS="$CPPFLAGS $CPP_QUICHE" - LIBS="$LIB_QUICHE $LIBS" - - if test "x$cross_compiling" != "xyes"; then - DIR_QUICHE=`echo $LD_QUICHE | $SED -e 's/^-L//'` - fi - AC_CHECK_LIB(quiche, quiche_connect, - [ - AC_CHECK_HEADERS(quiche.h, - experimental="$experimental HTTP3" - AC_MSG_NOTICE([HTTP3 support is experimental]) - curl_h3_msg="enabled (quiche)" - QUICHE_ENABLED=1 - AC_DEFINE(USE_QUICHE, 1, [if quiche is in use]) - AC_SUBST(USE_QUICHE, [1]) - AC_CHECK_FUNCS([quiche_conn_set_qlog_fd]) - CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_QUICHE" - export CURL_LIBRARY_PATH - AC_MSG_NOTICE([Added $DIR_QUICHE to CURL_LIBRARY_PATH]), - [], - [ -AC_INCLUDES_DEFAULT -#include - ] - ) - ], - dnl not found, revert back to clean variables - AC_MSG_ERROR([couldn't use quiche]) - ) - else - dnl no quiche pkg-config found, deal with it - if test X"$want_quiche" != Xdefault; then - dnl To avoid link errors, we do not allow --with-quiche without - dnl a pkgconfig file - AC_MSG_ERROR([--with-quiche was specified but could not find quiche pkg-config file.]) - fi - fi -fi - -dnl ********************************************************************** -dnl Check for msh3 (QUIC) -dnl ********************************************************************** - -OPT_MSH3="no" - -if test "x$disable_http" = "xyes" -o "x$USE_NGTCP" = "x1"; then - # without HTTP or with ngtcp2, msh3 is no use - OPT_MSH3="no" -fi - -AC_ARG_WITH(msh3, -AS_HELP_STRING([--with-msh3=PATH],[Enable msh3 usage]) -AS_HELP_STRING([--without-msh3],[Disable msh3 usage]), - [OPT_MSH3=$withval]) -case "$OPT_MSH3" in - no) - dnl --without-msh3 option used - want_msh3="no" - ;; - yes) - dnl --with-msh3 option used without path - want_msh3="default" - want_msh3_path="" - ;; - *) - dnl --with-msh3 option used with path - want_msh3="yes" - want_msh3_path="$withval" - ;; -esac - -if test X"$want_msh3" != Xno; then - - if test "$NGHTTP3_ENABLED" = 1; then - AC_MSG_ERROR([--with-msh3 and --with-ngtcp2 are mutually exclusive]) - fi - - dnl backup the pre-msh3 variables - CLEANLDFLAGS="$LDFLAGS" - CLEANCPPFLAGS="$CPPFLAGS" - CLEANLIBS="$LIBS" - - if test -n "$want_msh3_path"; then - LD_MSH3="-L$want_msh3_path/lib" - CPP_MSH3="-I$want_msh3_path/include" - DIR_MSH3="$want_msh3_path/lib" - LDFLAGS="$LDFLAGS $LD_MSH3" - CPPFLAGS="$CPPFLAGS $CPP_MSH3" - fi - LIBS="-lmsh3 $LIBS" - - AC_CHECK_LIB(msh3, MsH3ApiOpen, - [ - AC_CHECK_HEADERS(msh3.h, - curl_h3_msg="enabled (msh3)" - MSH3_ENABLED=1 - AC_DEFINE(USE_MSH3, 1, [if msh3 is in use]) - AC_SUBST(USE_MSH3, [1]) - CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_MSH3" - export CURL_LIBRARY_PATH - AC_MSG_NOTICE([Added $DIR_MSH3 to CURL_LIBRARY_PATH]), - experimental="$experimental HTTP3" - ) - ], - dnl not found, revert back to clean variables - LDFLAGS=$CLEANLDFLAGS - CPPFLAGS=$CLEANCPPFLAGS - LIBS=$CLEANLIBS - ) -fi - -dnl ********************************************************************** -dnl Check for zsh completion path -dnl ********************************************************************** - -OPT_ZSH_FPATH=default -AC_ARG_WITH(zsh-functions-dir, -AS_HELP_STRING([--with-zsh-functions-dir=PATH],[Install zsh completions to PATH]) -AS_HELP_STRING([--without-zsh-functions-dir],[Do not install zsh completions]), - [OPT_ZSH_FPATH=$withval]) -case "$OPT_ZSH_FPATH" in - no) - dnl --without-zsh-functions-dir option used - ;; - default|yes) - dnl --with-zsh-functions-dir option used without path - ZSH_FUNCTIONS_DIR="$datarootdir/zsh/site-functions" - AC_SUBST(ZSH_FUNCTIONS_DIR) - ;; - *) - dnl --with-zsh-functions-dir option used with path - ZSH_FUNCTIONS_DIR="$withval" - AC_SUBST(ZSH_FUNCTIONS_DIR) - ;; -esac - -dnl ********************************************************************** -dnl Check for fish completion path -dnl ********************************************************************** - -OPT_FISH_FPATH=default -AC_ARG_WITH(fish-functions-dir, -AS_HELP_STRING([--with-fish-functions-dir=PATH],[Install fish completions to PATH]) -AS_HELP_STRING([--without-fish-functions-dir],[Do not install fish completions]), - [OPT_FISH_FPATH=$withval]) -case "$OPT_FISH_FPATH" in - no) - dnl --without-fish-functions-dir option used - ;; - default|yes) - dnl --with-fish-functions-dir option used without path - CURL_CHECK_PKGCONFIG(fish) - if test "$PKGCONFIG" != "no" ; then - FISH_FUNCTIONS_DIR="$($PKGCONFIG --variable completionsdir fish)" - else - FISH_FUNCTIONS_DIR="$datarootdir/fish/vendor_completions.d" - fi - AC_SUBST(FISH_FUNCTIONS_DIR) - ;; - *) - dnl --with-fish-functions-dir option used with path - FISH_FUNCTIONS_DIR="$withval" - AC_SUBST(FISH_FUNCTIONS_DIR) - ;; -esac - -dnl Now check for the very most basic headers. Then we can use these -dnl ones as default-headers when checking for the rest! -AC_CHECK_HEADERS( - sys/types.h \ - sys/time.h \ - sys/select.h \ - sys/socket.h \ - sys/ioctl.h \ - sys/uio.h \ - assert.h \ - unistd.h \ - stdlib.h \ - arpa/inet.h \ - net/if.h \ - netinet/in.h \ - netinet/in6.h \ - sys/un.h \ - linux/tcp.h \ - netinet/tcp.h \ - netinet/udp.h \ - netdb.h \ - sys/sockio.h \ - sys/stat.h \ - sys/param.h \ - termios.h \ - termio.h \ - fcntl.h \ - io.h \ - pwd.h \ - utime.h \ - sys/utime.h \ - sys/poll.h \ - poll.h \ - socket.h \ - sys/resource.h \ - libgen.h \ - locale.h \ - errno.h \ - stdbool.h \ - arpa/tftp.h \ - sys/filio.h \ - sys/wait.h \ - setjmp.h, -dnl to do if not found -[], -dnl to do if found -[], -dnl default includes -[ -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#elif defined(HAVE_UNISTD_H) -#include -#endif -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -#ifdef HAVE_NETINET_IN_H -#include -#endif -#ifdef HAVE_NETINET_IN6_H -#include -#endif -#ifdef HAVE_SYS_UN_H -#include -#endif -] -) - - -dnl Checks for typedefs, structures, and compiler characteristics. -AC_C_CONST -CURL_CHECK_VARIADIC_MACROS -AC_TYPE_SIZE_T - -CURL_CHECK_STRUCT_TIMEVAL -CURL_VERIFY_RUNTIMELIBS - -CURL_SIZEOF(size_t) -CURL_SIZEOF(long) -CURL_SIZEOF(int) -CURL_SIZEOF(time_t) -CURL_SIZEOF(off_t) - -o=$CPPFLAGS -CPPFLAGS="-I$srcdir/include $CPPFLAGS" -CURL_SIZEOF(curl_off_t, [ -#include -]) -CPPFLAGS=$o - -AC_CHECK_TYPE(long long, - [AC_DEFINE(HAVE_LONGLONG, 1, - [Define to 1 if the compiler supports the 'long long' data type.])] - longlong="yes" -) - - -# check for ssize_t -AC_CHECK_TYPE(ssize_t, , - AC_DEFINE(ssize_t, int, [the signed version of size_t])) - -# check for bool type -AC_CHECK_TYPE([bool],[ - AC_DEFINE(HAVE_BOOL_T, 1, - [Define to 1 if bool is an available type.]) -], ,[ -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_STDBOOL_H -#include -#endif -]) - -# check for sa_family_t -AC_CHECK_TYPE(sa_family_t, - AC_DEFINE(CURL_SA_FAMILY_T, sa_family_t, [IP address type in sockaddr]), - [ - # The windows name? - AC_CHECK_TYPE(ADDRESS_FAMILY, - AC_DEFINE(CURL_SA_FAMILY_T, ADDRESS_FAMILY, [IP address type in sockaddr]), - AC_DEFINE(CURL_SA_FAMILY_T, unsigned short, [IP address type in sockaddr]), - [ -#ifdef HAVE_SYS_SOCKET_H -#include -#endif - ]) - ], -[ -#ifdef HAVE_SYS_SOCKET_H -#include -#endif -]) - -# check for suseconds_t -AC_CHECK_TYPE([suseconds_t],[ - AC_DEFINE(HAVE_SUSECONDS_T, 1, - [Define to 1 if suseconds_t is an available type.]) -], ,[ -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_SYS_TIME_H -#include -#endif -]) - -AC_MSG_CHECKING([if time_t is unsigned]) -CURL_RUN_IFELSE( - [ - #include - #include - time_t t = -1; - return (t > 0); - ],[ - AC_MSG_RESULT([yes]) - AC_DEFINE(HAVE_TIME_T_UNSIGNED, 1, [Define this if time_t is unsigned]) -],[ - AC_MSG_RESULT([no]) -],[ - dnl cross-compiling, most systems are unsigned - AC_MSG_RESULT([no]) -]) - -CURL_CONFIGURE_PULL_SYS_POLL - -TYPE_IN_ADDR_T - -TYPE_SOCKADDR_STORAGE - -CURL_CHECK_FUNC_SELECT - -CURL_CHECK_FUNC_RECV -CURL_CHECK_FUNC_SEND -CURL_CHECK_MSG_NOSIGNAL - -CURL_CHECK_FUNC_ALARM -CURL_CHECK_FUNC_BASENAME -CURL_CHECK_FUNC_CLOSESOCKET -CURL_CHECK_FUNC_CLOSESOCKET_CAMEL -CURL_CHECK_FUNC_CONNECT -CURL_CHECK_FUNC_FCNTL -CURL_CHECK_FUNC_FREEADDRINFO -CURL_CHECK_FUNC_FSETXATTR -CURL_CHECK_FUNC_FTRUNCATE -CURL_CHECK_FUNC_GETADDRINFO -CURL_CHECK_FUNC_GETHOSTBYNAME -CURL_CHECK_FUNC_GETHOSTBYNAME_R -CURL_CHECK_FUNC_GETHOSTNAME -CURL_CHECK_FUNC_GETPEERNAME -CURL_CHECK_FUNC_GETSOCKNAME -CURL_CHECK_FUNC_IF_NAMETOINDEX -CURL_CHECK_FUNC_GETIFADDRS -CURL_CHECK_FUNC_GMTIME_R -CURL_CHECK_FUNC_INET_NTOP -CURL_CHECK_FUNC_INET_PTON -CURL_CHECK_FUNC_IOCTLSOCKET -CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL -CURL_CHECK_FUNC_MEMRCHR -CURL_CHECK_FUNC_POLL -CURL_CHECK_FUNC_SIGACTION -CURL_CHECK_FUNC_SIGINTERRUPT -CURL_CHECK_FUNC_SIGNAL -CURL_CHECK_FUNC_SIGSETJMP -CURL_CHECK_FUNC_SOCKET -CURL_CHECK_FUNC_SOCKETPAIR -CURL_CHECK_FUNC_STRCASECMP -CURL_CHECK_FUNC_STRCMPI -CURL_CHECK_FUNC_STRDUP -CURL_CHECK_FUNC_STRERROR_R -CURL_CHECK_FUNC_STRICMP -CURL_CHECK_FUNC_STRTOK_R -CURL_CHECK_FUNC_STRTOLL - -case $host in - *msdosdjgpp) - ac_cv_func_pipe=no - skipcheck_pipe=yes - AC_MSG_NOTICE([skip check for pipe on msdosdjgpp]) - ;; -esac - -AC_CHECK_DECLS([getpwuid_r], [], [AC_DEFINE(HAVE_DECL_GETPWUID_R_MISSING, 1, "Set if getpwuid_r() declaration is missing")], - [[#include - #include ]]) - - -AC_CHECK_FUNCS([fnmatch \ - fchmod \ - geteuid \ - getpass_r \ - getppid \ - getpwuid \ - getpwuid_r \ - getrlimit \ - gettimeofday \ - if_nametoindex \ - mach_absolute_time \ - pipe \ - sched_yield \ - sendmsg \ - setlocale \ - setmode \ - setrlimit \ - utime \ - utimes -],[ -],[ - func="$ac_func" - eval skipcheck=\$skipcheck_$func - if test "x$skipcheck" != "xyes"; then - AC_MSG_CHECKING([deeper for $func]) - AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[ - ]],[[ - $func (); - ]]) - ],[ - AC_MSG_RESULT([yes]) - eval "ac_cv_func_$func=yes" - AC_DEFINE_UNQUOTED(XC_SH_TR_CPP([HAVE_$func]), [1], - [Define to 1 if you have the $func function.]) - ],[ - AC_MSG_RESULT([but still no]) - ]) - fi -]) - -CURL_CHECK_NONBLOCKING_SOCKET - -dnl ************************************************************ -dnl nroff tool stuff -dnl - -AC_PATH_PROG( PERL, perl, , - $PATH:/usr/local/bin/perl:/usr/bin/:/usr/local/bin ) -AC_SUBST(PERL) - -AC_PATH_PROGS( NROFF, gnroff nroff, , - $PATH:/usr/bin/:/usr/local/bin ) -AC_SUBST(NROFF) - -if test -n "$NROFF"; then - dnl only check for nroff options if an nroff command was found - - AC_MSG_CHECKING([how to use *nroff to get plain text from man pages]) - MANOPT="-man" - mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null` - if test -z "$mancheck"; then - MANOPT="-mandoc" - mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null` - if test -z "$mancheck"; then - MANOPT="" - AC_MSG_RESULT([failed]) - AC_MSG_WARN([found no *nroff option to get plaintext from man pages]) - else - AC_MSG_RESULT([$MANOPT]) - fi - else - AC_MSG_RESULT([$MANOPT]) - fi - AC_SUBST(MANOPT) -fi - -if test -z "$MANOPT" -then - dnl if no nroff tool was found, or no option that could convert man pages - dnl was found, then disable the built-in manual stuff - AC_MSG_WARN([disabling built-in manual]) - USE_MANUAL="no"; -fi - -dnl ************************************************************************* -dnl If the manual variable still is set, then we go with providing a built-in -dnl manual - -if test "$USE_MANUAL" = "1"; then - AC_DEFINE(USE_MANUAL, 1, [If you want to build curl with the built-in manual]) - curl_manual_msg="enabled" -fi - -dnl set variable for use in automakefile(s) -AM_CONDITIONAL(USE_MANUAL, test x"$USE_MANUAL" = x1) - -CURL_CHECK_LIB_ARES - -if test "x$curl_cv_native_windows" != "xyes" && - test "x$enable_shared" = "xyes"; then - build_libhostname=yes -else - build_libhostname=no -fi -AM_CONDITIONAL(BUILD_LIBHOSTNAME, test x$build_libhostname = xyes) - -if test "x$want_ares" != xyes; then - CURL_CHECK_OPTION_THREADED_RESOLVER -fi - -dnl ************************************************************ -dnl disable POSIX threads -dnl -AC_MSG_CHECKING([whether to use POSIX threads for threaded resolver]) -AC_ARG_ENABLE(pthreads, -AS_HELP_STRING([--enable-pthreads], - [Enable POSIX threads (default for threaded resolver)]) -AS_HELP_STRING([--disable-pthreads],[Disable POSIX threads]), -[ case "$enableval" in - no) AC_MSG_RESULT(no) - want_pthreads=no - ;; - *) AC_MSG_RESULT(yes) - want_pthreads=yes - ;; - esac ], [ - AC_MSG_RESULT(auto) - want_pthreads=auto - ] -) - -dnl turn off pthreads if rt is disabled -if test "$want_pthreads" != "no"; then - if test "$want_pthreads" = "yes" && test "$dontwant_rt" = "yes"; then - AC_MSG_ERROR([options --enable-pthreads and --disable-rt are mutually exclusive]) - fi - if test "$dontwant_rt" != "no"; then - dnl if --enable-pthreads was explicit then warn it's being ignored - if test "$want_pthreads" = "yes"; then - AC_MSG_WARN([--enable-pthreads Ignored since librt is disabled.]) - fi - want_pthreads=no - fi -fi - -dnl turn off pthreads if no threaded resolver -if test "$want_pthreads" != "no" && test "$want_thres" != "yes"; then - want_pthreads=no -fi - -dnl detect pthreads -if test "$want_pthreads" != "no"; then - AC_CHECK_HEADER(pthread.h, - [ AC_DEFINE(HAVE_PTHREAD_H, 1, [if you have ]) - save_CFLAGS="$CFLAGS" - dnl When statically linking against boringssl, -lpthread is added to LIBS. - dnl Make sure to that this does not pass the check below, we really want - dnl -pthread in CFLAGS as recommended for GCC. This also ensures that - dnl lib1541 and lib1565 tests are built with these options. Otherwise - dnl they fail the build since tests/libtest/Makefile.am clears LIBS. - save_LIBS="$LIBS" - - LIBS= - dnl Check for libc variants without a separate pthread lib like bionic - AC_CHECK_FUNC(pthread_create, [USE_THREADS_POSIX=1] ) - LIBS="$save_LIBS" - - dnl on HPUX, life is more complicated... - case $host in - *-hp-hpux*) - dnl it doesn't actually work without -lpthread - USE_THREADS_POSIX="" - ;; - *) - ;; - esac - - dnl if it wasn't found without lib, search for it in pthread lib - if test "$USE_THREADS_POSIX" != "1" - then - # assign PTHREAD for pkg-config use - PTHREAD=" -pthread" - - case $host in - *-ibm-aix*) - dnl Check if compiler is xlC - COMPILER_VERSION=`"$CC" -qversion 2>/dev/null` - if test x"$COMPILER_VERSION" = "x"; then - CFLAGS="$CFLAGS -pthread" - else - CFLAGS="$CFLAGS -qthreaded" - fi - ;; - powerpc-*amigaos*) - dnl No -pthread option, but link with -lpthread - PTHREAD=" -lpthread" - ;; - *) - CFLAGS="$CFLAGS -pthread" - ;; - esac - AC_CHECK_LIB(pthread, pthread_create, - [USE_THREADS_POSIX=1], - [ CFLAGS="$save_CFLAGS"]) - fi - - if test "x$USE_THREADS_POSIX" = "x1" - then - AC_DEFINE(USE_THREADS_POSIX, 1, [if you want POSIX threaded DNS lookup]) - curl_res_msg="POSIX threaded" - fi - ]) -fi - -dnl threaded resolver check -if test "$want_thres" = "yes" && test "x$USE_THREADS_POSIX" != "x1"; then - if test "$want_pthreads" = "yes"; then - AC_MSG_ERROR([--enable-pthreads but pthreads was not found]) - fi - dnl If native Windows fallback on Win32 threads since no POSIX threads - if test "$curl_cv_native_windows" = "yes"; then - USE_THREADS_WIN32=1 - AC_DEFINE(USE_THREADS_WIN32, 1, [if you want Win32 threaded DNS lookup]) - curl_res_msg="Win32 threaded" - else - AC_MSG_ERROR([Threaded resolver enabled but no thread library found]) - fi -fi - -CURL_CONVERT_INCLUDE_TO_ISYSTEM - -dnl ************************************************************ -dnl disable verbose text strings -dnl -AC_MSG_CHECKING([whether to enable verbose strings]) -AC_ARG_ENABLE(verbose, -AS_HELP_STRING([--enable-verbose],[Enable verbose strings]) -AS_HELP_STRING([--disable-verbose],[Disable verbose strings]), -[ case "$enableval" in - no) - AC_MSG_RESULT(no) - AC_DEFINE(CURL_DISABLE_VERBOSE_STRINGS, 1, [to disable verbose strings]) - curl_verbose_msg="no" - ;; - *) AC_MSG_RESULT(yes) - ;; - esac ], - AC_MSG_RESULT(yes) -) - -dnl ************************************************************ -dnl enable SSPI support -dnl -AC_MSG_CHECKING([whether to enable SSPI support (Windows native builds only)]) -AC_ARG_ENABLE(sspi, -AS_HELP_STRING([--enable-sspi],[Enable SSPI]) -AS_HELP_STRING([--disable-sspi],[Disable SSPI]), -[ case "$enableval" in - yes) - if test "$curl_cv_native_windows" = "yes"; then - AC_MSG_RESULT(yes) - AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support]) - AC_SUBST(USE_WINDOWS_SSPI, [1]) - curl_sspi_msg="enabled" - else - AC_MSG_RESULT(no) - AC_MSG_WARN([--enable-sspi Ignored. Only supported on native Windows builds.]) - fi - ;; - *) - if test "x$SCHANNEL_ENABLED" = "x1"; then - # --with-schannel implies --enable-sspi - AC_MSG_RESULT(yes) - else - AC_MSG_RESULT(no) - fi - ;; - esac ], - if test "x$SCHANNEL_ENABLED" = "x1"; then - # --with-schannel implies --enable-sspi - AC_MSG_RESULT(yes) - else - AC_MSG_RESULT(no) - fi -) - -dnl ************************************************************ -dnl disable cryptographic authentication -dnl -AC_MSG_CHECKING([whether to enable cryptographic authentication methods]) -AC_ARG_ENABLE(crypto-auth, -AS_HELP_STRING([--enable-crypto-auth],[Enable cryptographic authentication]) -AS_HELP_STRING([--disable-crypto-auth],[Disable cryptographic authentication]), -[ case "$enableval" in - no) - AC_MSG_RESULT(no) - AC_DEFINE(CURL_DISABLE_CRYPTO_AUTH, 1, [to disable cryptographic authentication]) - CURL_DISABLE_CRYPTO_AUTH=1 - ;; - *) AC_MSG_RESULT(yes) - ;; - esac ], - AC_MSG_RESULT(yes) -) - -dnl ************************************************************ -dnl disable NTLM support -dnl -AC_MSG_CHECKING([whether to support NTLM]) -AC_ARG_ENABLE(ntlm, -AS_HELP_STRING([--enable-ntlm],[Enable NTLM support]) -AS_HELP_STRING([--disable-ntlm],[Disable NTLM support]), -[ case "$enableval" in - no) - AC_MSG_RESULT(no) - AC_DEFINE(CURL_DISABLE_NTLM, 1, [to disable NTLM support]) - CURL_DISABLE_NTLM=1 - ;; - *) AC_MSG_RESULT(yes) - ;; - esac ], - AC_MSG_RESULT(yes) -) - -CURL_CHECK_OPTION_NTLM_WB - -CURL_CHECK_NTLM_WB - -dnl ************************************************************ -dnl disable TLS-SRP authentication -dnl -AC_MSG_CHECKING([whether to enable TLS-SRP authentication]) -AC_ARG_ENABLE(tls-srp, -AS_HELP_STRING([--enable-tls-srp],[Enable TLS-SRP authentication]) -AS_HELP_STRING([--disable-tls-srp],[Disable TLS-SRP authentication]), -[ case "$enableval" in - no) - AC_MSG_RESULT(no) - want_tls_srp=no - ;; - *) AC_MSG_RESULT(yes) - want_tls_srp=yes - ;; - esac ], - AC_MSG_RESULT(yes) - want_tls_srp=yes -) - -if test "$want_tls_srp" = "yes" && ( test "x$HAVE_GNUTLS_SRP" = "x1" || test "x$HAVE_OPENSSL_SRP" = "x1") ; then - AC_DEFINE(USE_TLS_SRP, 1, [Use TLS-SRP authentication]) - USE_TLS_SRP=1 - curl_tls_srp_msg="enabled" -fi - -dnl ************************************************************ -dnl disable Unix domain sockets support -dnl -AC_MSG_CHECKING([whether to enable Unix domain sockets]) -AC_ARG_ENABLE(unix-sockets, -AS_HELP_STRING([--enable-unix-sockets],[Enable Unix domain sockets]) -AS_HELP_STRING([--disable-unix-sockets],[Disable Unix domain sockets]), -[ case "$enableval" in - no) AC_MSG_RESULT(no) - want_unix_sockets=no - ;; - *) AC_MSG_RESULT(yes) - want_unix_sockets=yes - ;; - esac ], [ - AC_MSG_RESULT(auto) - want_unix_sockets=auto - ] -) -if test "x$want_unix_sockets" != "xno"; then - AC_CHECK_MEMBER([struct sockaddr_un.sun_path], [ - AC_DEFINE(USE_UNIX_SOCKETS, 1, [Use Unix domain sockets]) - AC_SUBST(USE_UNIX_SOCKETS, [1]) - curl_unix_sockets_msg="enabled" - ], [ - if test "x$want_unix_sockets" = "xyes"; then - AC_MSG_ERROR([--enable-unix-sockets is not available on this platform!]) - fi - ], [ - #include - ]) -fi - -dnl ************************************************************ -dnl disable cookies support -dnl -AC_MSG_CHECKING([whether to support cookies]) -AC_ARG_ENABLE(cookies, -AS_HELP_STRING([--enable-cookies],[Enable cookies support]) -AS_HELP_STRING([--disable-cookies],[Disable cookies support]), -[ case "$enableval" in - no) - AC_MSG_RESULT(no) - AC_DEFINE(CURL_DISABLE_COOKIES, 1, [to disable cookies support]) - ;; - *) AC_MSG_RESULT(yes) - ;; - esac ], - AC_MSG_RESULT(yes) -) - -dnl ************************************************************ -dnl disable socketpair -dnl -AC_MSG_CHECKING([whether to support socketpair]) -AC_ARG_ENABLE(socketpair, -AS_HELP_STRING([--enable-socketpair],[Enable socketpair support]) -AS_HELP_STRING([--disable-socketpair],[Disable socketpair support]), -[ case "$enableval" in - no) - AC_MSG_RESULT(no) - AC_DEFINE(CURL_DISABLE_SOCKETPAIR, 1, [to disable socketpair support]) - ;; - *) AC_MSG_RESULT(yes) - ;; - esac ], - AC_MSG_RESULT(yes) -) - -dnl ************************************************************ -dnl disable HTTP authentication support -dnl -AC_MSG_CHECKING([whether to support HTTP authentication]) -AC_ARG_ENABLE(http-auth, -AS_HELP_STRING([--enable-http-auth],[Enable HTTP authentication support]) -AS_HELP_STRING([--disable-http-auth],[Disable HTTP authentication support]), -[ case "$enableval" in - no) - AC_MSG_RESULT(no) - AC_DEFINE(CURL_DISABLE_HTTP_AUTH, 1, [disable HTTP authentication]) - ;; - *) AC_MSG_RESULT(yes) - ;; - esac ], - AC_MSG_RESULT(yes) -) - -dnl ************************************************************ -dnl disable DoH support -dnl -AC_MSG_CHECKING([whether to support DoH]) -AC_ARG_ENABLE(doh, -AS_HELP_STRING([--enable-doh],[Enable DoH support]) -AS_HELP_STRING([--disable-doh],[Disable DoH support]), -[ case "$enableval" in - no) - AC_MSG_RESULT(no) - AC_DEFINE(CURL_DISABLE_DOH, 1, [disable DoH]) - ;; - *) AC_MSG_RESULT(yes) - ;; - esac ], - AC_MSG_RESULT(yes) -) - -dnl ************************************************************ -dnl disable mime API support -dnl -AC_MSG_CHECKING([whether to support the MIME API]) -AC_ARG_ENABLE(mime, -AS_HELP_STRING([--enable-mime],[Enable mime API support]) -AS_HELP_STRING([--disable-mime],[Disable mime API support]), -[ case "$enableval" in - no) - AC_MSG_RESULT(no) - AC_DEFINE(CURL_DISABLE_MIME, 1, [disable mime API]) - ;; - *) AC_MSG_RESULT(yes) - ;; - esac ], - AC_MSG_RESULT(yes) -) - -dnl ************************************************************ -dnl disable date parsing -dnl -AC_MSG_CHECKING([whether to support date parsing]) -AC_ARG_ENABLE(dateparse, -AS_HELP_STRING([--enable-dateparse],[Enable date parsing]) -AS_HELP_STRING([--disable-dateparse],[Disable date parsing]), -[ case "$enableval" in - no) - AC_MSG_RESULT(no) - AC_DEFINE(CURL_DISABLE_PARSEDATE, 1, [disable date parsing]) - ;; - *) AC_MSG_RESULT(yes) - ;; - esac ], - AC_MSG_RESULT(yes) -) - -dnl ************************************************************ -dnl disable netrc -dnl -AC_MSG_CHECKING([whether to support netrc parsing]) -AC_ARG_ENABLE(netrc, -AS_HELP_STRING([--enable-netrc],[Enable netrc parsing]) -AS_HELP_STRING([--disable-netrc],[Disable netrc parsing]), -[ case "$enableval" in - no) - AC_MSG_RESULT(no) - AC_DEFINE(CURL_DISABLE_NETRC, 1, [disable netrc parsing]) - ;; - *) AC_MSG_RESULT(yes) - ;; - esac ], - AC_MSG_RESULT(yes) -) - -dnl ************************************************************ -dnl disable progress-meter -dnl -AC_MSG_CHECKING([whether to support progress-meter]) -AC_ARG_ENABLE(progress-meter, -AS_HELP_STRING([--enable-progress-meter],[Enable progress-meter]) -AS_HELP_STRING([--disable-progress-meter],[Disable progress-meter]), -[ case "$enableval" in - no) - AC_MSG_RESULT(no) - AC_DEFINE(CURL_DISABLE_PROGRESS_METER, 1, [disable progress-meter]) - ;; - *) AC_MSG_RESULT(yes) - ;; - esac ], - AC_MSG_RESULT(yes) -) - -dnl ************************************************************ -dnl disable shuffle DNS support -dnl -AC_MSG_CHECKING([whether to support DNS shuffling]) -AC_ARG_ENABLE(dnsshuffle, -AS_HELP_STRING([--enable-dnsshuffle],[Enable DNS shuffling]) -AS_HELP_STRING([--disable-dnsshuffle],[Disable DNS shuffling]), -[ case "$enableval" in - no) - AC_MSG_RESULT(no) - AC_DEFINE(CURL_DISABLE_SHUFFLE_DNS, 1, [disable DNS shuffling]) - ;; - *) AC_MSG_RESULT(yes) - ;; - esac ], - AC_MSG_RESULT(yes) -) - -dnl ************************************************************ -dnl disable the curl_easy_options API -dnl -AC_MSG_CHECKING([whether to support curl_easy_option*]) -AC_ARG_ENABLE(get-easy-options, -AS_HELP_STRING([--enable-get-easy-options],[Enable curl_easy_options]) -AS_HELP_STRING([--disable-get-easy-options],[Disable curl_easy_options]), -[ case "$enableval" in - no) - AC_MSG_RESULT(no) - AC_DEFINE(CURL_DISABLE_GETOPTIONS, 1, [to disable curl_easy_options]) - ;; - *) AC_MSG_RESULT(yes) - ;; - esac ], - AC_MSG_RESULT(yes) -) - -dnl ************************************************************ -dnl switch on/off alt-svc -dnl -AC_MSG_CHECKING([whether to support alt-svc]) -AC_ARG_ENABLE(alt-svc, -AS_HELP_STRING([--enable-alt-svc],[Enable alt-svc support]) -AS_HELP_STRING([--disable-alt-svc],[Disable alt-svc support]), -[ case "$enableval" in - no) - AC_MSG_RESULT(no) - AC_DEFINE(CURL_DISABLE_ALTSVC, 1, [disable alt-svc]) - curl_altsvc_msg="no"; - enable_altsvc="no" - ;; - *) AC_MSG_RESULT(yes) - ;; - esac ], - AC_MSG_RESULT(yes) -) - -dnl ************************************************************ -dnl switch on/off headers-api -dnl -AC_MSG_CHECKING([whether to support headers-api]) -AC_ARG_ENABLE(headers-api, -AS_HELP_STRING([--enable-headers-api],[Enable headers-api support]) -AS_HELP_STRING([--disable-headers-api],[Disable headers-api support]), -[ case "$enableval" in - no) AC_MSG_RESULT(no) - curl_headers_msg="no (--enable-headers-api)" - AC_DEFINE(CURL_DISABLE_HEADERS_API, 1, [disable headers-api]) - ;; - *) - AC_MSG_RESULT(yes) - ;; - esac ], - AC_MSG_RESULT(yes) -) - -dnl only check for HSTS if there's SSL present -if test -n "$SSL_ENABLED"; then - - dnl ************************************************************ - dnl switch on/off hsts - dnl - AC_MSG_CHECKING([whether to support HSTS]) - AC_ARG_ENABLE(hsts, - AS_HELP_STRING([--enable-hsts],[Enable HSTS support]) - AS_HELP_STRING([--disable-hsts],[Disable HSTS support]), - [ case "$enableval" in - no) - AC_MSG_RESULT(no) - hsts="no" - ;; - *) AC_MSG_RESULT(yes) - ;; - esac ], - AC_MSG_RESULT($hsts) - ) -else - AC_MSG_NOTICE([disables HSTS due to lack of SSL]) - hsts="no" -fi - -if test "x$hsts" != "xyes"; then - curl_hsts_msg="no (--enable-hsts)"; - AC_DEFINE(CURL_DISABLE_HSTS, 1, [disable alt-svc]) -fi - -dnl ************************************************************* -dnl check whether ECH support, if desired, is actually available -dnl -if test "x$want_ech" != "xno"; then - AC_MSG_CHECKING([whether ECH support is available]) - - dnl assume NOT and look for sufficient condition - ECH_ENABLED=0 - ECH_SUPPORT='' - - dnl OpenSSL with a chosen ECH function should be enough - dnl so more exhaustive checking seems unnecessary for now - if test "x$OPENSSL_ENABLED" = "x1"; then - AC_CHECK_FUNCS(SSL_get_ech_status, - ECH_SUPPORT="ECH support available (OpenSSL with SSL_get_ech_status)" - ECH_ENABLED=1) - - dnl add 'elif' chain here for additional implementations - fi - - dnl now deal with whatever we found - if test "x$ECH_ENABLED" = "x1"; then - AC_DEFINE(USE_ECH, 1, [if ECH support is available]) - AC_MSG_RESULT($ECH_SUPPORT) - experimental="$experimental ECH" - else - AC_MSG_ERROR([--enable-ech ignored: No ECH support found]) - fi -fi - -dnl ************************************************************ -dnl hiding of library internal symbols -dnl -CURL_CONFIGURE_SYMBOL_HIDING - -dnl -dnl All the library dependencies put into $LIB apply to libcurl only. -dnl -LIBCURL_LIBS="$LIBS$PTHREAD" - -AC_SUBST(LIBCURL_LIBS) -AC_SUBST(CURL_NETWORK_LIBS) -AC_SUBST(CURL_NETWORK_AND_TIME_LIBS) - -dnl BLANK_AT_MAKETIME may be used in our Makefile.am files to blank -dnl LIBS variable used in generated makefile at makefile processing -dnl time. Doing this functionally prevents LIBS from being used for -dnl all link targets in given makefile. -BLANK_AT_MAKETIME= -AC_SUBST(BLANK_AT_MAKETIME) - -AM_CONDITIONAL(CROSSCOMPILING, test x$cross_compiling = xyes) - -dnl yes or no -ENABLE_SHARED="$enable_shared" -AC_SUBST(ENABLE_SHARED) - -dnl to let curl-config output the static libraries correctly -ENABLE_STATIC="$enable_static" -AC_SUBST(ENABLE_STATIC) - -dnl merge the pkg-config Libs.private field into Libs when static-only -if test "x$enable_shared" = "xno"; then - LIBCURL_NO_SHARED=$LIBCURL_LIBS -else - LIBCURL_NO_SHARED= -fi -AC_SUBST(LIBCURL_NO_SHARED) - -dnl -dnl For keeping supported features and protocols also in pkg-config file -dnl since it is more cross-compile friendly than curl-config -dnl - -if test "x$OPENSSL_ENABLED" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES SSL" -elif test -n "$SSL_ENABLED"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES SSL" -fi -if test "x$IPV6_ENABLED" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES IPv6" -fi -if test "x$USE_UNIX_SOCKETS" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES UnixSockets" -fi -if test "x$HAVE_LIBZ" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES libz" -fi -if test "x$HAVE_BROTLI" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES brotli" -fi -if test "x$HAVE_ZSTD" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES zstd" -fi -if test "x$USE_ARES" = "x1" -o "x$USE_THREADS_POSIX" = "x1" \ - -o "x$USE_THREADS_WIN32" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES AsynchDNS" -fi -if test "x$IDN_ENABLED" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES IDN" -fi -if test "x$USE_WINDOWS_SSPI" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES SSPI" -fi - -if test "x$HAVE_GSSAPI" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES GSS-API" -fi - -if test "x$curl_psl_msg" = "xenabled"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES PSL" -fi - -if test "x$curl_gsasl_msg" = "xenabled"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES GSASL" -fi - -if test "x$enable_altsvc" = "xyes"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES alt-svc" -fi -if test "x$hsts" = "xyes"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES HSTS" -fi - -if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" -a \ - \( "x$HAVE_GSSAPI" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \); then - SUPPORT_FEATURES="$SUPPORT_FEATURES SPNEGO" -fi - -if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" -a \ - \( "x$HAVE_GSSAPI" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \); then - SUPPORT_FEATURES="$SUPPORT_FEATURES Kerberos" -fi - -use_curl_ntlm_core=no - -if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" -a \ - "x$CURL_DISABLE_NTLM" != "x1"; then - if test "x$OPENSSL_ENABLED" = "x1" -o "x$MBEDTLS_ENABLED" = "x1" \ - -o "x$GNUTLS_ENABLED" = "x1" -o "x$NSS_ENABLED" = "x1" \ - -o "x$SECURETRANSPORT_ENABLED" = "x1" \ - -o "x$USE_WIN32_CRYPTO" = "x1" \ - -o "x$WOLFSSL_NTLM" = "x1"; then - use_curl_ntlm_core=yes - fi - - if test "x$use_curl_ntlm_core" = "xyes" \ - -o "x$USE_WINDOWS_SSPI" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM" - - if test "x$CURL_DISABLE_HTTP" != "x1" -a \ - "x$NTLM_WB_ENABLED" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM_WB" - fi - fi -fi - -if test "x$USE_TLS_SRP" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES TLS-SRP" -fi - -if test "x$USE_NGHTTP2" = "x1" -o "x$USE_HYPER" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES HTTP2" -fi - -if test "x$USE_NGTCP2" = "x1" -o "x$USE_QUICHE" = "x1" \ - -o "x$USE_MSH3" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES HTTP3" -fi - -if test "x$CURL_WITH_MULTI_SSL" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES MultiSSL" -fi - -dnl if not explicitly turned off, HTTPS-proxy comes with some TLS backends -if test "x$https_proxy" != "xno"; then - if test "x$OPENSSL_ENABLED" = "x1" -o "x$GNUTLS_ENABLED" = "x1" \ - -o "x$NSS_ENABLED" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES HTTPS-proxy" - fi -fi - -if test "x$ECH_ENABLED" = "x1"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES ECH" -fi - -if test ${ac_cv_sizeof_curl_off_t} -gt 4; then - if test ${ac_cv_sizeof_off_t} -gt 4 -o \ - "$curl_win32_file_api" = "win32_large_files"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES Largefile" - fi -fi - -if test "$tst_atomic" = "yes"; then - SUPPORT_FEATURES="$SUPPORT_FEATURES threadsafe" -else - AC_COMPILE_IFELSE([ - AC_LANG_PROGRAM([[ - #include - ]],[[ - #if (WINVER < 0x600) && (_WIN32_WINNT < 0x600) - #error - #endif - ]]) - ],[ - SUPPORT_FEATURES="$SUPPORT_FEATURES threadsafe" - ],[ - ]) -fi - -dnl replace spaces with newlines -dnl sort the lines -dnl replace the newlines back to spaces -SUPPORT_FEATURES=`echo $SUPPORT_FEATURES | tr ' ' '\012' | sort | tr '\012' ' '` -AC_SUBST(SUPPORT_FEATURES) - -dnl For supported protocols in pkg-config file -if test "x$CURL_DISABLE_HTTP" != "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTP" - if test "x$SSL_ENABLED" = "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTPS" - fi -fi -if test "x$CURL_DISABLE_FTP" != "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTP" - if test "x$SSL_ENABLED" = "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTPS" - fi -fi -if test "x$CURL_DISABLE_FILE" != "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FILE" -fi -if test "x$CURL_DISABLE_TELNET" != "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TELNET" -fi -if test "x$CURL_DISABLE_LDAP" != "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAP" - if test "x$CURL_DISABLE_LDAPS" != "x1"; then - if (test "x$USE_OPENLDAP" = "x1" && test "x$SSL_ENABLED" = "x1") || - (test "x$USE_OPENLDAP" != "x1" && test "x$HAVE_LDAP_SSL" = "x1"); then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAPS" - fi - fi -fi -if test "x$CURL_DISABLE_DICT" != "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS DICT" -fi -if test "x$CURL_DISABLE_TFTP" != "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TFTP" -fi -if test "x$CURL_DISABLE_GOPHER" != "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS GOPHER" - if test "x$SSL_ENABLED" = "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS GOPHERS" - fi -fi -if test "x$CURL_DISABLE_MQTT" != "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS MQTT" -fi -if test "x$CURL_DISABLE_POP3" != "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3" - if test "x$SSL_ENABLED" = "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3S" - fi -fi -if test "x$CURL_DISABLE_IMAP" != "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAP" - if test "x$SSL_ENABLED" = "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAPS" - fi -fi -if test "x$CURL_DISABLE_SMB" != "x1" \ - -a "x$use_curl_ntlm_core" = "xyes"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMB" - if test "x$SSL_ENABLED" = "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMBS" - fi -fi -if test "x$CURL_DISABLE_SMTP" != "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTP" - if test "x$SSL_ENABLED" = "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTPS" - fi -fi -if test "x$USE_LIBSSH2" = "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SCP" - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP" -fi -if test "x$USE_LIBSSH" = "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SCP" - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP" -fi -if test "x$USE_WOLFSSH" = "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP" -fi -if test "x$CURL_DISABLE_RTSP" != "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTSP" -fi -if test "x$USE_LIBRTMP" = "x1"; then - SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTMP" -fi - -dnl replace spaces with newlines -dnl sort the lines -dnl replace the newlines back to spaces -SUPPORT_PROTOCOLS=`echo $SUPPORT_PROTOCOLS | tr ' ' '\012' | sort | tr '\012' ' '` - -AC_SUBST(SUPPORT_PROTOCOLS) - -dnl squeeze whitespace out of some variables - -squeeze CFLAGS -squeeze CPPFLAGS -squeeze DEFS -squeeze LDFLAGS -squeeze LIBS - -squeeze LIBCURL_LIBS -squeeze CURL_NETWORK_LIBS -squeeze CURL_NETWORK_AND_TIME_LIBS - -squeeze SUPPORT_FEATURES -squeeze SUPPORT_PROTOCOLS - -XC_CHECK_BUILD_FLAGS - -SSL_BACKENDS=${ssl_backends} -AC_SUBST(SSL_BACKENDS) - -if test "x$want_curldebug_assumed" = "xyes" && - test "x$want_curldebug" = "xyes" && test "x$USE_ARES" = "x1"; then - ac_configure_args="$ac_configure_args --enable-curldebug" -fi - -AC_CONFIG_FILES([Makefile \ - docs/Makefile \ - docs/examples/Makefile \ - docs/libcurl/Makefile \ - docs/libcurl/opts/Makefile \ - docs/cmdline-opts/Makefile \ - include/Makefile \ - include/curl/Makefile \ - src/Makefile \ - lib/Makefile \ - scripts/Makefile \ - lib/libcurl.vers \ - lib/libcurl.plist \ - tests/Makefile \ - tests/certs/Makefile \ - tests/certs/scripts/Makefile \ - tests/data/Makefile \ - tests/server/Makefile \ - tests/libtest/Makefile \ - tests/unit/Makefile \ - packages/Makefile \ - packages/vms/Makefile \ - curl-config \ - libcurl.pc -]) -AC_OUTPUT - -CURL_GENERATE_CONFIGUREHELP_PM - -XC_AMEND_DISTCLEAN([lib src tests/unit tests/server tests/libtest docs/examples]) - -AC_MSG_NOTICE([Configured to build curl/libcurl: - - Host setup: ${host} - Install prefix: ${prefix} - Compiler: ${CC} - CFLAGS: ${CFLAGS} - CPPFLAGS: ${CPPFLAGS} - LDFLAGS: ${LDFLAGS} - LIBS: ${LIBS} - - curl version: ${CURLVERSION} - SSL: ${curl_ssl_msg} - SSH: ${curl_ssh_msg} - zlib: ${curl_zlib_msg} - brotli: ${curl_brotli_msg} - zstd: ${curl_zstd_msg} - GSS-API: ${curl_gss_msg} - GSASL: ${curl_gsasl_msg} - TLS-SRP: ${curl_tls_srp_msg} - resolver: ${curl_res_msg} - IPv6: ${curl_ipv6_msg} - Unix sockets: ${curl_unix_sockets_msg} - IDN: ${curl_idn_msg} - Build libcurl: Shared=${enable_shared}, Static=${enable_static} - Built-in manual: ${curl_manual_msg} - --libcurl option: ${curl_libcurl_msg} - Verbose errors: ${curl_verbose_msg} - Code coverage: ${curl_coverage_msg} - SSPI: ${curl_sspi_msg} - ca cert bundle: ${ca}${ca_warning} - ca cert path: ${capath}${capath_warning} - ca fallback: ${with_ca_fallback} - LDAP: ${curl_ldap_msg} - LDAPS: ${curl_ldaps_msg} - RTSP: ${curl_rtsp_msg} - RTMP: ${curl_rtmp_msg} - PSL: ${curl_psl_msg} - Alt-svc: ${curl_altsvc_msg} - Headers API: ${curl_headers_msg} - HSTS: ${curl_hsts_msg} - HTTP1: ${curl_h1_msg} - HTTP2: ${curl_h2_msg} - HTTP3: ${curl_h3_msg} - ECH: ${curl_ech_msg} - Protocols: ${SUPPORT_PROTOCOLS} - Features: ${SUPPORT_FEATURES} -]) -if test -n "$experimental"; then - cat >&2 << _EOF - WARNING: $experimental enabled but marked EXPERIMENTAL. Use with caution! -_EOF -fi diff --git a/Engine/lib/curl/curl-config.in b/Engine/lib/curl/curl-config.in deleted file mode 100644 index f3e51617f..000000000 --- a/Engine/lib/curl/curl-config.in +++ /dev/null @@ -1,196 +0,0 @@ -#! /bin/sh -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 2001 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### - -prefix="@prefix@" -exec_prefix=@exec_prefix@ -includedir=@includedir@ -cppflag_curl_staticlib=@CPPFLAG_CURL_STATICLIB@ - -usage() -{ - cat <&2 - exit 1 - fi - ;; - - --configure) - echo @CONFIGURE_OPTIONS@ - ;; - - *) - echo "unknown option: $1" - usage 1 - ;; - esac - shift -done - -exit 0 diff --git a/Engine/lib/curl/depcomp b/Engine/lib/curl/depcomp deleted file mode 100755 index 715e34311..000000000 --- a/Engine/lib/curl/depcomp +++ /dev/null @@ -1,791 +0,0 @@ -#! /bin/sh -# depcomp - compile a program generating dependencies as side-effects - -scriptversion=2018-03-07.03; # UTC - -# Copyright (C) 1999-2021 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, see . - -# 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 . - -case $1 in - '') - echo "$0: No command. Try '$0 --help' for more information." 1>&2 - exit 1; - ;; - -h | --h*) - cat <<\EOF -Usage: depcomp [--help] [--version] PROGRAM [ARGS] - -Run PROGRAMS ARGS to compile a file, generating dependencies -as side-effects. - -Environment variables: - depmode Dependency tracking mode. - source Source file read by 'PROGRAMS ARGS'. - object Object file output by 'PROGRAMS ARGS'. - DEPDIR directory where to store dependencies. - depfile Dependency file to output. - tmpdepfile Temporary file to use when outputting dependencies. - libtool Whether libtool is used (yes/no). - -Report bugs to . -EOF - exit $? - ;; - -v | --v*) - echo "depcomp $scriptversion" - exit $? - ;; -esac - -# Get the directory component of the given path, and save it in the -# global variables '$dir'. Note that this directory component will -# be either empty or ending with a '/' character. This is deliberate. -set_dir_from () -{ - case $1 in - */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; - *) dir=;; - esac -} - -# Get the suffix-stripped basename of the given path, and save it the -# global variable '$base'. -set_base_from () -{ - base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` -} - -# If no dependency file was actually created by the compiler invocation, -# we still have to create a dummy depfile, to avoid errors with the -# Makefile "include basename.Plo" scheme. -make_dummy_depfile () -{ - echo "#dummy" > "$depfile" -} - -# Factor out some common post-processing of the generated depfile. -# Requires the auxiliary global variable '$tmpdepfile' to be set. -aix_post_process_depfile () -{ - # If the compiler actually managed to produce a dependency file, - # post-process it. - if test -f "$tmpdepfile"; then - # Each line is of the form 'foo.o: dependency.h'. - # Do two passes, one to just change these to - # $object: dependency.h - # and one to simply output - # dependency.h: - # which is needed to avoid the deleted-header problem. - { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" - sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" - } > "$depfile" - rm -f "$tmpdepfile" - else - make_dummy_depfile - fi -} - -# A tabulation character. -tab=' ' -# A newline character. -nl=' -' -# Character ranges might be problematic outside the C locale. -# These definitions help. -upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ -lower=abcdefghijklmnopqrstuvwxyz -digits=0123456789 -alpha=${upper}${lower} - -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 - -# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. -depfile=${depfile-`echo "$object" | - sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} -tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} - -rm -f "$tmpdepfile" - -# Avoid interferences from the environment. -gccflag= dashmflag= - -# 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 - -cygpath_u="cygpath -u -f -" -if test "$depmode" = msvcmsys; then - # This is just like msvisualcpp but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u='sed s,\\\\,/,g' - depmode=msvisualcpp -fi - -if test "$depmode" = msvc7msys; then - # This is just like msvc7 but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u='sed s,\\\\,/,g' - depmode=msvc7 -fi - -if test "$depmode" = xlc; then - # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. - gccflag=-qmakedep=gcc,-MF - depmode=gcc -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. -## Unfortunately, FreeBSD c89 acceptance of flags depends upon -## the command line argument order; so add the flags where they -## appear in depend2.am. Note that the slowdown incurred here -## affects only configure: in makefiles, %FASTDEP% shortcuts this. - for arg - do - case $arg in - -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; - *) set fnord "$@" "$arg" ;; - esac - shift # fnord - shift # $arg - done - "$@" - stat=$? - if test $stat -ne 0; then - rm -f "$tmpdepfile" - exit $stat - fi - mv "$tmpdepfile" "$depfile" - ;; - -gcc) -## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. -## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. -## (see the conditional assignment to $gccflag above). -## 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). Also, it might not be -## supported by the other compilers which use the 'gcc' depmode. -## - 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 -ne 0; then - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" - # 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. -## 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. hp depmode also adds that space, but also prefixes the VPATH -## to the object. Take care to not repeat it in the output. -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - tr ' ' "$nl" < "$tmpdepfile" \ - | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -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 -ne 0; then - 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 ' ' "$nl" < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ - | tr "$nl" ' ' >> "$depfile" - echo >> "$depfile" - # The second pass generates a dummy entry for each header file. - tr ' ' "$nl" < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ - >> "$depfile" - else - make_dummy_depfile - fi - rm -f "$tmpdepfile" - ;; - -xlc) - # 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 - ;; - -aix) - # The C for AIX Compiler uses -M and outputs the dependencies - # in a .u file. In older versions, 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. - # Version 6 uses the directory in both cases. - set_dir_from "$object" - set_base_from "$object" - if test "$libtool" = yes; then - tmpdepfile1=$dir$base.u - tmpdepfile2=$base.u - tmpdepfile3=$dir.libs/$base.u - "$@" -Wc,-M - else - tmpdepfile1=$dir$base.u - tmpdepfile2=$dir$base.u - tmpdepfile3=$dir$base.u - "$@" -M - fi - stat=$? - if test $stat -ne 0; then - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - do - test -f "$tmpdepfile" && break - done - aix_post_process_depfile - ;; - -tcc) - # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 - # FIXME: That version still under development at the moment of writing. - # Make that this statement remains true also for stable, released - # versions. - # It will wrap lines (doesn't matter whether long or short) with a - # trailing '\', as in: - # - # foo.o : \ - # foo.c \ - # foo.h \ - # - # It will put a trailing '\' even on the last line, and will use leading - # spaces rather than leading tabs (at least since its commit 0394caf7 - # "Emit spaces for -MD"). - "$@" -MD -MF "$tmpdepfile" - stat=$? - if test $stat -ne 0; then - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. - # We have to change lines of the first kind to '$object: \'. - sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" - # And for each line of the second kind, we have to emit a 'dep.h:' - # dummy dependency, to avoid the deleted-header problem. - sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" - rm -f "$tmpdepfile" - ;; - -## The order of this option in the case statement is important, since the -## shell code in configure will try each of these formats in the order -## listed in this file. A plain '-MD' option would be understood by many -## compilers, so we must ensure this comes after the gcc and icc options. -pgcc) - # Portland's C compiler understands '-MD'. - # Will always output deps to 'file.d' where file is the root name of the - # source file under compilation, even if file resides in a subdirectory. - # The object file name does not affect the name of the '.d' file. - # pgcc 10.2 will output - # foo.o: sub/foo.c sub/foo.h - # and will wrap long lines using '\' : - # foo.o: sub/foo.c ... \ - # sub/foo.h ... \ - # ... - set_dir_from "$object" - # Use the source, not the object, to determine the base name, since - # that's sadly what pgcc will do too. - set_base_from "$source" - tmpdepfile=$base.d - - # For projects that build the same source file twice into different object - # files, the pgcc approach of using the *source* file root name can cause - # problems in parallel builds. Use a locking strategy to avoid stomping on - # the same $tmpdepfile. - lockdir=$base.d-lock - trap " - echo '$0: caught signal, cleaning up...' >&2 - rmdir '$lockdir' - exit 1 - " 1 2 13 15 - numtries=100 - i=$numtries - while test $i -gt 0; do - # mkdir is a portable test-and-set. - if mkdir "$lockdir" 2>/dev/null; then - # This process acquired the lock. - "$@" -MD - stat=$? - # Release the lock. - rmdir "$lockdir" - break - else - # If the lock is being held by a different process, wait - # until the winning process is done or we timeout. - while test -d "$lockdir" && test $i -gt 0; do - sleep 1 - i=`expr $i - 1` - done - fi - i=`expr $i - 1` - done - trap - 1 2 13 15 - if test $i -le 0; then - echo "$0: failed to acquire lock after $numtries attempts" >&2 - echo "$0: check lockdir '$lockdir'" >&2 - exit 1 - fi - - if test $stat -ne 0; then - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - # Each line is of the form `foo.o: dependent.h', - # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" - # Some versions of the HPUX 10.20 sed can't process this invocation - # correctly. Breaking it into two sed invocations is a workaround. - sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ - | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp2) - # The "hp" stanza above does not work with aCC (C++) and HP's ia64 - # compilers, which have integrated preprocessors. The correct option - # to use with these is +Maked; it writes dependencies to a file named - # 'foo.d', which lands next to the object file, wherever that - # happens to be. - # Much of this is similar to the tru64 case; see comments there. - set_dir_from "$object" - set_base_from "$object" - if test "$libtool" = yes; then - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir.libs/$base.d - "$@" -Wc,+Maked - else - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir$base.d - "$@" +Maked - fi - stat=$? - if test $stat -ne 0; then - rm -f "$tmpdepfile1" "$tmpdepfile2" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" - # Add 'dependent.h:' lines. - sed -ne '2,${ - s/^ *// - s/ \\*$// - s/$/:/ - p - }' "$tmpdepfile" >> "$depfile" - else - make_dummy_depfile - fi - rm -f "$tmpdepfile" "$tmpdepfile2" - ;; - -tru64) - # The Tru64 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. - set_dir_from "$object" - set_base_from "$object" - - if test "$libtool" = yes; then - # Libtool generates 2 separate objects for the 2 libraries. These - # two compilations output dependencies in $dir.libs/$base.o.d and - # in $dir$base.o.d. We have to check for both files, because - # one of the two compilations can be disabled. We should prefer - # $dir$base.o.d over $dir.libs/$base.o.d because the latter is - # automatically cleaned when .libs/ is deleted, while ignoring - # the former would cause a distcleancheck panic. - tmpdepfile1=$dir$base.o.d # libtool 1.5 - tmpdepfile2=$dir.libs/$base.o.d # Likewise. - tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 - "$@" -Wc,-MD - else - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir$base.d - tmpdepfile3=$dir$base.d - "$@" -MD - fi - - stat=$? - if test $stat -ne 0; then - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - do - test -f "$tmpdepfile" && break - done - # Same post-processing that is required for AIX mode. - aix_post_process_depfile - ;; - -msvc7) - if test "$libtool" = yes; then - showIncludes=-Wc,-showIncludes - else - showIncludes=-showIncludes - fi - "$@" $showIncludes > "$tmpdepfile" - stat=$? - grep -v '^Note: including file: ' "$tmpdepfile" - if test $stat -ne 0; then - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" - # The first sed program below extracts the file names and escapes - # backslashes for cygpath. The second sed program outputs the file - # name when reading, but also accumulates all include files in the - # hold buffer in order to output them again at the end. This only - # works with sed implementations that can handle large buffers. - sed < "$tmpdepfile" -n ' -/^Note: including file: *\(.*\)/ { - s//\1/ - s/\\/\\\\/g - p -}' | $cygpath_u | sort -u | sed -n ' -s/ /\\ /g -s/\(.*\)/'"$tab"'\1 \\/p -s/.\(.*\) \\/\1:/ -H -$ { - s/.*/'"$tab"'/ - G - p -}' >> "$depfile" - echo >> "$depfile" # make sure the fragment doesn't end with a backslash - rm -f "$tmpdepfile" - ;; - -msvc7msys) - # 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 - ;; - -#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 preprocessed file to stdout, regardless of -o. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - # Remove '-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - test -z "$dashmflag" && dashmflag=-M - # Require at least two characters before searching for ':' - # in the target name. This is to cope with DOS-style filenames: - # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. - "$@" $dashmflag | - sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - # Some versions of the HPUX 10.20 sed can't process this sed invocation - # correctly. Breaking it into two sed invocations is a workaround. - tr ' ' "$nl" < "$tmpdepfile" \ - | 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) - "$@" || exit $? - # Remove any Libtool call - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - # X makedepend - shift - cleared=no eat=no - for arg - do - case $cleared in - no) - set ""; shift - cleared=yes ;; - esac - if test $eat = yes; then - eat=no - continue - fi - case "$arg" in - -D*|-I*) - set fnord "$@" "$arg"; shift ;; - # Strip any option that makedepend may not understand. Remove - # the object too, otherwise makedepend will parse it as a source file. - -arch) - eat=yes ;; - -*|$object) - ;; - *) - set fnord "$@" "$arg"; shift ;; - esac - done - obj_suffix=`echo "$object" | sed 's/^.*\././'` - touch "$tmpdepfile" - ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" - rm -f "$depfile" - # makedepend may prepend the VPATH from the source file name to the object. - # No need to regex-escape $object, excess matching of '.' is harmless. - sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" - # Some versions of the HPUX 10.20 sed can't process the last invocation - # correctly. Breaking it into two sed invocations is a workaround. - sed '1,2d' "$tmpdepfile" \ - | tr ' ' "$nl" \ - | 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 preprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - # Remove '-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - "$@" -E \ - | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ - -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ - | sed '$ s: \\$::' > "$tmpdepfile" - 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 preprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - IFS=" " - for arg - do - case "$arg" in - -o) - shift - ;; - $object) - shift - ;; - "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") - set fnord "$@" - shift - shift - ;; - *) - set fnord "$@" "$arg" - shift - shift - ;; - esac - done - "$@" -E 2>/dev/null | - sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" - echo "$tab" >> "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvcmsys) - # 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 - ;; - -none) - exec "$@" - ;; - -*) - echo "Unknown depmode $depmode" 1>&2 - exit 1 - ;; -esac - -exit 0 - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'before-save-hook 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC0" -# time-stamp-end: "; # UTC" -# End: diff --git a/Engine/lib/curl/docs/ALTSVC.md b/Engine/lib/curl/docs/ALTSVC.md deleted file mode 100644 index d347f6e19..000000000 --- a/Engine/lib/curl/docs/ALTSVC.md +++ /dev/null @@ -1,41 +0,0 @@ -# Alt-Svc - -curl features support for the Alt-Svc: HTTP header. - -## Enable Alt-Svc in build - -`./configure --enable-alt-svc` - -(enabled by default since 7.73.0) - -## Standard - -[RFC 7838](https://datatracker.ietf.org/doc/html/rfc7838) - -# Alt-Svc cache file format - -This a text based file with one line per entry and each line consists of nine -space separated fields. - -## Example - - h2 quic.tech 8443 h3-22 quic.tech 8443 "20190808 06:18:37" 0 0 - -## Fields - -1. The ALPN id for the source origin -2. The host name for the source origin -3. The port number for the source origin -4. The ALPN id for the destination host -5. The host name for the destination host -6. The host number for the destination host -7. The expiration date and time of this entry within double quotes. The date format is "YYYYMMDD HH:MM:SS" and the time zone is GMT. -8. Boolean (1 or 0) if "persist" was set for this entry -9. Integer priority value (not currently used) - -# TODO - -- handle multiple response headers, when one of them says `clear` (should - override them all) -- using `Age:` value for caching age as per spec -- `CURLALTSVC_IMMEDIATELY` support diff --git a/Engine/lib/curl/docs/BINDINGS.md b/Engine/lib/curl/docs/BINDINGS.md deleted file mode 100644 index b9f68ea25..000000000 --- a/Engine/lib/curl/docs/BINDINGS.md +++ /dev/null @@ -1,134 +0,0 @@ -libcurl bindings -================ - - Creative people have written bindings or interfaces for various environments - and programming languages. Using one of these allows you to take advantage of - curl powers from within your favourite language or system. - - This is a list of all known interfaces as of this writing. - - The bindings listed below are not part of the curl/libcurl distribution - archives, but must be downloaded and installed separately. - - - -[Ada95](https://web.archive.org/web/20070403105909/www.almroth.com/adacurl/index.html) Written by Andreas Almroth - -[Basic](https://scriptbasic.com/) ScriptBasic bindings written by Peter Verhas - -C++: [curlpp](https://github.com/jpbarrette/curlpp/) Written by Jean-Philippe Barrette-LaPierre, -[curlcpp](https://github.com/JosephP91/curlcpp) by Giuseppe Persico and [C++ -Requests](https://github.com/libcpr/cpr) by Huu Nguyen - -[Ch](https://chcurl.sourceforge.io/) Written by Stephen Nestinger and Jonathan Rogado - -Cocoa: [BBHTTP](https://github.com/biasedbit/BBHTTP) written by Bruno de Carvalho -[curlhandle](https://github.com/karelia/curlhandle) Written by Dan Wood - -Clojure: [clj-curl](https://github.com/lsevero/clj-curl) by Lucas Severo - -[D](https://dlang.org/library/std/net/curl.html) Written by Kenneth Bogert - -[Delphi](https://github.com/Mercury13/curl4delphi) Written by Mikhail Merkuryev - -[Dylan](https://dylanlibs.sourceforge.io/) Written by Chris Double - -[Eiffel](https://iron.eiffel.com/repository/20.11/package/ABEF6975-37AC-45FD-9C67-52D10BA0669B) Written by Eiffel Software - -[Euphoria](https://web.archive.org/web/20050204080544/rays-web.com/eulibcurl.htm) Written by Ray Smith - -[Falcon](http://www.falconpl.org/project_docs/curl/) - -[Ferite](https://web.archive.org/web/20150102192018/ferite.org/) Written by Paul Querna - -[Gambas](https://gambas.sourceforge.io/) - -[glib/GTK+](https://web.archive.org/web/20100526203452/atterer.net/glibcurl) Written by Richard Atterer - -Go: [go-curl](https://github.com/andelf/go-curl) by ShuYu Wang - -[Guile](https://github.com/spk121/guile-curl) Written by Michael L. Gran - -[Harbour](https://github.com/vszakats/hb/tree/main/contrib/hbcurl) Written by Viktor Szakats - -[Haskell](https://hackage.haskell.org/package/curl) Written by Galois, Inc - -[Hollywood](https://www.hollywood-mal.com/download.html) hURL by Andreas Falkenhahn - -[Java](https://github.com/pjlegato/curl-java) - -[Julia](https://github.com/JuliaWeb/LibCURL.jl) Written by Amit Murthy - -[Kapito](https://github.com/puzza007/katipo) is an Erlang HTTP library around libcurl. - -[Lisp](https://common-lisp.net/project/cl-curl/) Written by Liam Healy - -Lua: [luacurl](https://web.archive.org/web/20201205052437/luacurl.luaforge.net/) by Alexander Marinov, [Lua-cURL](https://github.com/Lua-cURL) by Jürgen Hötzel - -[Mono](https://web.archive.org/web/20070606064500/https://forge.novell.com/modules/xfmod/project/?libcurl-mono) Written by Jeffrey Phillips - -[.NET](https://sourceforge.net/projects/libcurl-net/) libcurl-net by Jeffrey Phillips - -[Nim](https://nimble.directory/pkg/libcurl) wrapper for libcurl - -[node.js](https://github.com/JCMais/node-libcurl) node-libcurl by Jonathan Cardoso Machado - -[Object-Pascal](https://web.archive.org/web/20020610214926/www.tekool.com/opcurl) Free Pascal, Delphi and Kylix binding written by Christophe Espern. - -[OCaml](https://opam.ocaml.org/packages/ocurl/) Written by Lars Nilsson and ygrek - -[Pascal](https://web.archive.org/web/20030804091414/houston.quik.com/jkp/curlpas/) Free Pascal, Delphi and Kylix binding written by Jeffrey Pohlmeyer. - -Perl: [WWW::Curl](https://github.com/szbalint/WWW--Curl) Maintained by Cris -Bailiff and Bálint Szilakszi, -[perl6-net-curl](https://github.com/azawawi/perl6-net-curl) by Ahmad M. Zawawi -[NET::Curl](https://metacpan.org/pod/Net::Curl) by Przemyslaw Iskra - -[PHP](https://php.net/curl) Originally written by Sterling Hughes - -[PostgreSQL](https://github.com/pramsey/pgsql-http) - HTTP client for PostgreSQL - -[PostgreSQL](https://github.com/RekGRpth/pg_curl) - cURL client for PostgreSQL - -[PureBasic](https://www.purebasic.com/documentation/http/index.html) uses libcurl in its "native" HTTP subsystem - -[Python](http://pycurl.io/) PycURL by Kjetil Jacobsen - -[Q](https://q-lang.sourceforge.io/) The libcurl module is part of the default install - -[R](https://cran.r-project.org/package=curl) - -[Rexx](https://rexxcurl.sourceforge.io/) Written Mark Hessling - -[Ring](https://ring-lang.sourceforge.io/doc1.3/libcurl.html) RingLibCurl by Mahmoud Fayed - -RPG, support for ILE/RPG on OS/400 is included in source distribution - -Ruby: [curb](https://github.com/taf2/curb) written by Ross Bamford, -[ruby-curl-multi](https://github.com/kball/curl_multi.rb) by Kristjan Petursson and Keith Rarick - -[Rust](https://github.com/alexcrichton/curl-rust) curl-rust - by Carl Lerche - -[Scheme](http://www.metapaper.net/lisovsky/web/curl/) Bigloo binding by Kirill Lisovsky - -[Scilab](https://help.scilab.org/docs/current/fr_FR/getURL.html) binding by Sylvestre Ledru - -[S-Lang](https://www.jedsoft.org/slang/modules/curl.html) by John E Davis - -[Smalltalk](https://www.squeaksource.com/CurlPlugin/) Written by Danil Osipchuk - -[SP-Forth](https://sourceforge.net/p/spf/spf/ci/master/tree/devel/~ac/lib/lin/curl/) Written by Andrey Cherezov - -[SPL](https://web.archive.org/web/20210203022158/http://www.clifford.at/spl/spldoc/curl.html) Written by Clifford Wolf - -[Tcl](https://web.archive.org/web/20160826011806/mirror.yellow5.com/tclcurl/) Tclcurl by Andrés García - -[Visual Basic](https://sourceforge.net/projects/libcurl-vb/) libcurl-vb by Jeffrey Phillips - -[Visual Foxpro](https://web.archive.org/web/20130730181523/www.ctl32.com.ar/libcurl.asp) by Carlos Alloatti - -[wxWidgets](https://wxcode.sourceforge.io/components/wxcurl/) Written by Casey O'Donnell - -[XBLite](https://web.archive.org/web/20060426150418/perso.wanadoo.fr/xblite/libraries.html) Written by David Szafranski - -[Xojo](https://github.com/charonn0/RB-libcURL) Written by Andrew Lambert diff --git a/Engine/lib/curl/docs/BUFREF.md b/Engine/lib/curl/docs/BUFREF.md deleted file mode 100644 index 35c534263..000000000 --- a/Engine/lib/curl/docs/BUFREF.md +++ /dev/null @@ -1,81 +0,0 @@ -# bufref - -This is an internal module for handling buffer references. A referenced -buffer is associated with its destructor function that is implicitly called -when the reference is invalidated. Once referenced, a buffer cannot be -reallocated. - -A data length is stored within the reference for binary data handling -purposes; it is not used by the bufref API. - -The `struct bufref` is used to hold data referencing a buffer. The members of -that structure **MUST NOT** be accessed or modified without using the dedicated -bufref API. - -## init - -```c -void Curl_bufref_init(struct bufref *br); -``` - -Initialises a `bufref` structure. This function **MUST** be called before any -other operation is performed on the structure. - -Upon completion, the referenced buffer is `NULL` and length is zero. - -This function may also be called to bypass referenced buffer destruction while -invalidating the current reference. - -## free - -```c -void Curl_bufref_free(struct bufref *br); -``` - -Destroys the previously referenced buffer using its destructor and -reinitialises the structure for a possible subsequent reuse. - -## set - -```c -void Curl_bufref_set(struct bufref *br, const void *buffer, size_t length, - void (*destructor)(void *)); -``` - -Releases the previously referenced buffer, then assigns the new `buffer` to -the structure, associated with its `destructor` function. The latter can be -specified as `NULL`: this will be the case when the referenced buffer is -static. - -if `buffer` is NULL, `length`must be zero. - -## memdup - -```c -CURLcode Curl_bufref_memdup(struct bufref *br, const void *data, size_t length); -``` - -Releases the previously referenced buffer, then duplicates the `length`-byte -`data` into a buffer allocated via `malloc()` and references the latter -associated with destructor `curl_free()`. - -An additional trailing byte is allocated and set to zero as a possible -string zero-terminator; it is not counted in the stored length. - -Returns `CURLE_OK` if successful, else `CURLE_OUT_OF_MEMORY`. - -## ptr - -```c -const unsigned char *Curl_bufref_ptr(const struct bufref *br); -``` - -Returns a `const unsigned char *` to the referenced buffer. - -## len - -```c -size_t Curl_bufref_len(const struct bufref *br); -``` - -Returns the stored length of the referenced buffer. diff --git a/Engine/lib/curl/docs/BUG-BOUNTY.md b/Engine/lib/curl/docs/BUG-BOUNTY.md deleted file mode 100644 index aa8ee8957..000000000 --- a/Engine/lib/curl/docs/BUG-BOUNTY.md +++ /dev/null @@ -1,78 +0,0 @@ -# The curl bug bounty - -The curl project runs a bug bounty program in association with -[HackerOne](https://www.hackerone.com) and the [Internet Bug -Bounty](https://internetbugbounty.org). - -## How does it work? - -Start out by posting your suspected security vulnerability directly to [curl's -HackerOne program](https://hackerone.com/curl). - -After you have reported a security issue, it has been deemed credible, and a -patch and advisory has been made public, you may be eligible for a bounty from -this program. See the [SECURITY-PROCESS](SECURITY-PROCESS.md) document for how -we work with security issues. - -## What are the reward amounts? - -The curl project offers monetary compensation for reported and published -security vulnerabilities. The amount of money that is rewarded depends on how -serious the flaw is determined to be. - -Since 2021, the Bug Bounty is managed in association with the Internet Bug -Bounty and they will set the reward amounts. If it would turn out that they -set amounts that are way lower than we can accept, the curl project intends to -"top up" rewards. - -In 2022, typical "Medium" rated vulnerabilities have been rewarded 2,400 USD -each. - -## Who is eligible for a reward? - -Everyone and anyone who reports a security problem in a released curl version -that has not already been reported can ask for a bounty. - -Dedicated - paid for - security audits that are performed in collaboration -with curl developers are not eligible for bounties. - -Vulnerabilities in features that are off by default and documented as -experimental are not eligible for a reward. - -The vulnerability has to be fixed and publicly announced (by the curl project) -before a bug bounty will be considered. - -Once the vulnerability has been published by curl, the researcher can request -their bounty from the [Internet Bug Bounty](https://hackerone.com/ibb). - -Bounties need to be requested within twelve months from the publication of the -vulnerability. - -## Product vulnerabilities only - -This bug bounty only concerns the curl and libcurl products and thus their -respective source codes - when running on existing hardware. It does not -include curl documentation, curl websites, or other curl related -infrastructure. - -The curl security team is the sole arbiter if a reported flaw is subject to a -bounty or not. - -## How are vulnerabilities graded? - -The grading of each reported vulnerability that makes a reward claim will be -performed by the curl security team. The grading will be based on the CVSS -(Common Vulnerability Scoring System) 3.0. - -## How are reward amounts determined? - -The curl security team gives the vulnerability a score or severity level, as -mentioned above. The actual monetary reward amount is decided and paid by the -Internet Bug Bounty.. - -## Regarding taxes, etc. on the bounties - -In the event that the individual receiving a bug bounty needs to pay taxes on -the reward money, the responsibility lies with the receiver. The curl project -or its security team never actually receive any of this money, hold the money, -or pay out the money. diff --git a/Engine/lib/curl/docs/BUGS.md b/Engine/lib/curl/docs/BUGS.md deleted file mode 100644 index 4de58064c..000000000 --- a/Engine/lib/curl/docs/BUGS.md +++ /dev/null @@ -1,265 +0,0 @@ -# BUGS - -## There are still bugs - - Curl and libcurl keep being developed. Adding features and changing code - means that bugs will sneak in, no matter how hard we try to keep them out. - - Of course there are lots of bugs left. And lots of misfeatures. - - To help us make curl the stable and solid product we want it to be, we need - bug reports and bug fixes. - -## Where to report - - If you cannot fix a bug yourself and submit a fix for it, try to report an as - detailed report as possible to a curl mailing list to allow one of us to have - a go at a solution. You can optionally also submit your problem in [curl's - bug tracking system](https://github.com/curl/curl/issues). - - Please read the rest of this document below first before doing that. - - If you feel you need to ask around first, find a suitable [mailing list]( - https://curl.se/mail/) and post your questions there. - -## Security bugs - - If you find a bug or problem in curl or libcurl that you think has a security - impact, for example a bug that can put users in danger or make them - vulnerable if the bug becomes public knowledge, then please report that bug - using our security development process. - - Security related bugs or bugs that are suspected to have a security impact, - should be reported on the [curl security tracker at - HackerOne](https://hackerone.com/curl). - - This ensures that the report reaches the curl security team so that they - first can deal with the report away from the public to minimize the harm - and impact it will have on existing users out there who might be using the - vulnerable versions. - - The curl project's process for handling security related issues is - [documented separately](https://curl.se/dev/secprocess.html). - -## What to report - - When reporting a bug, you should include all information that will help us - understand what is wrong, what you expected to happen and how to repeat the - bad behavior. You therefore need to tell us: - - - your operating system's name and version number - - - what version of curl you are using (`curl -V` is fine) - - - versions of the used libraries that libcurl is built to use - - - what URL you were working with (if possible), at least which protocol - - and anything and everything else you think matters. Tell us what you expected - to happen, tell use what did happen, tell us how you could make it work - another way. Dig around, try out, test. Then include all the tiny bits and - pieces in your report. You will benefit from this yourself, as it will enable - us to help you quicker and more accurately. - - Since curl deals with networks, it often helps us if you include a protocol - debug dump with your bug report. The output you get by using the `-v` or - `--trace` options. - - If curl crashed, causing a core dump (in Unix), there is hardly any use to - send that huge file to anyone of us. Unless we have the same system setup as - you, we cannot do much with it. Instead, we ask you to get a stack trace and - send that (much smaller) output to us instead. - - The address and how to subscribe to the mailing lists are detailed in the - `MANUAL.md` file. - -## libcurl problems - - When you have written your own application with libcurl to perform transfers, - it is even more important to be specific and detailed when reporting bugs. - - Tell us the libcurl version and your operating system. Tell us the name and - version of all relevant sub-components like for example the SSL library - you are using and what name resolving your libcurl uses. If you use SFTP or - SCP, the libssh2 version is relevant etc. - - Showing us a real source code example repeating your problem is the best way - to get our attention and it will greatly increase our chances to understand - your problem and to work on a fix (if we agree it truly is a problem). - - Lots of problems that appear to be libcurl problems are actually just abuses - of the libcurl API or other malfunctions in your applications. It is advised - that you run your problematic program using a memory debug tool like valgrind - or similar before you post memory-related or "crashing" problems to us. - -## Who will fix the problems - - If the problems or bugs you describe are considered to be bugs, we want to - have the problems fixed. - - There are no developers in the curl project that are paid to work on bugs. - All developers that take on reported bugs do this on a voluntary basis. We do - it out of an ambition to keep curl and libcurl excellent products and out of - pride. - - Please do not assume that you can just lump over something to us and it will - then magically be fixed after some given time. Most often we need feedback - and help to understand what you have experienced and how to repeat a - problem. Then we may only be able to assist YOU to debug the problem and to - track down the proper fix. - - We get reports from many people every month and each report can take a - considerable amount of time to really go to the bottom with. - -## How to get a stack trace - - First, you must make sure that you compile all sources with `-g` and that you - do not 'strip' the final executable. Try to avoid optimizing the code as well, - remove `-O`, `-O2` etc from the compiler options. - - Run the program until it cores. - - Run your debugger on the core file, like ` curl - core`. `` should be replaced with the name of your debugger, in - most cases that will be `gdb`, but `dbx` and others also occur. - - When the debugger has finished loading the core file and presents you a - prompt, enter `where` (without quotes) and press return. - - The list that is presented is the stack trace. If everything worked, it is - supposed to contain the chain of functions that were called when curl - crashed. Include the stack trace with your detailed bug report, it will help a - lot. - -## Bugs in libcurl bindings - - There will of course pop up bugs in libcurl bindings. You should then - primarily approach the team that works on that particular binding and see - what you can do to help them fix the problem. - - If you suspect that the problem exists in the underlying libcurl, then please - convert your program over to plain C and follow the steps outlined above. - -## Bugs in old versions - - The curl project typically releases new versions every other month, and we - fix several hundred bugs per year. For a huge table of releases, number of - bug fixes and more, see: https://curl.se/docs/releases.html - - The developers in the curl project do not have bandwidth or energy enough to - maintain several branches or to spend much time on hunting down problems in - old versions when chances are we already fixed them or at least that they have - changed nature and appearance in later versions. - - When you experience a problem and want to report it, you really SHOULD - include the version number of the curl you are using when you experience the - issue. If that version number shows us that you are using an out-of-date curl, - you should also try out a modern curl version to see if the problem persists - or how/if it has changed in appearance. - - Even if you cannot immediately upgrade your application/system to run the - latest curl version, you can most often at least run a test version or - experimental build or similar, to get this confirmed or not. - - At times people insist that they cannot upgrade to a modern curl version, but - instead they "just want the bug fixed". That is fine, just do not count on us - spending many cycles on trying to identify which single commit, if that is - even possible, that at some point in the past fixed the problem you are now - experiencing. - - Security wise, it is almost always a bad idea to lag behind the current curl - versions by a lot. We keep discovering and reporting security problems - over time see you can see in [this - table](https://curl.se/docs/vulnerabilities.html) - -# Bug fixing procedure - -## What happens on first filing - - When a new issue is posted in the issue tracker or on the mailing list, the - team of developers first needs to see the report. Maybe they took the day off, - maybe they are off in the woods hunting. Have patience. Allow at least a few - days before expecting someone to have responded. - - In the issue tracker you can expect that some labels will be set on the issue - to help categorize it. - -## First response - - If your issue/bug report was not perfect at once (and few are), chances are - that someone will ask follow-up questions. Which version did you use? Which - options did you use? How often does the problem occur? How can we reproduce - this problem? Which protocols does it involve? Or perhaps much more specific - and deep diving questions. It all depends on your specific issue. - - You should then respond to these follow-up questions and provide more info - about the problem, so that we can help you figure it out. Or maybe you can - help us figure it out. An active back-and-forth communication is important - and the key for finding a cure and landing a fix. - -## Not reproducible - - We may require further work from you who actually see or experience the - problem if we cannot reproduce it and cannot understand it even after having - gotten all the info we need and having studied the source code over again. - -## Unresponsive - - If the problem have not been understood or reproduced, and there is nobody - responding to follow-up questions or questions asking for clarifications or - for discussing possible ways to move forward with the task, we take that as a - strong suggestion that the bug is unimportant. - - Unimportant issues will be closed as inactive sooner or later as they cannot - be fixed. The inactivity period (waiting for responses) should not be shorter - than two weeks but may extend months. - -## Lack of time/interest - - Bugs that are filed and are understood can unfortunately end up in the - "nobody cares enough about it to work on it" category. Such bugs are - perfectly valid problems that *should* get fixed but apparently are not. We - try to mark such bugs as `KNOWN_BUGS material` after a time of inactivity and - if no activity is noticed after yet some time those bugs are added to the - `KNOWN_BUGS` document and are closed in the issue tracker. - -## `KNOWN_BUGS` - - This is a list of known bugs. Bugs we know exist and that have been pointed - out but that have not yet been fixed. The reasons for why they have not been - fixed can involve anything really, but the primary reason is that nobody has - considered these problems to be important enough to spend the necessary time - and effort to have them fixed. - - The `KNOWN_BUGS` items are always up for grabs and we love the ones who bring - one of them back to life and offer solutions to them. - - The `KNOWN_BUGS` document has a sibling document known as `TODO`. - -## `TODO` - - Issues that are filed or reported that are not really bugs but more missing - features or ideas for future improvements and so on are marked as - 'enhancement' or 'feature-request' and will be added to the `TODO` document - and the issues are closed. We do not keep TODO items open in the issue - tracker. - - The `TODO` document is full of ideas and suggestions of what we can add or - fix one day. you are always encouraged and free to grab one of those items and - take up a discussion with the curl development team on how that could be - implemented or provided in the project so that you can work on ticking it odd - that document. - - If an issue is rather a bug and not a missing feature or functionality, it is - listed in `KNOWN_BUGS` instead. - -## Closing off stalled bugs - - The [issue and pull request trackers](https://github.com/curl/curl) only - hold "active" entries open (using a non-precise definition of what active - actually is, but they are at least not completely dead). Those that are - abandoned or in other ways dormant will be closed and sometimes added to - `TODO` and `KNOWN_BUGS` instead. - - This way, we only have "active" issues open on GitHub. Irrelevant issues and - pull requests will not distract developers or casual visitors. diff --git a/Engine/lib/curl/docs/CHECKSRC.md b/Engine/lib/curl/docs/CHECKSRC.md deleted file mode 100644 index 58a33d7bb..000000000 --- a/Engine/lib/curl/docs/CHECKSRC.md +++ /dev/null @@ -1,183 +0,0 @@ -# checksrc - -This is the tool we use within the curl project to scan C source code and -check that it adheres to our [Source Code Style guide](CODE_STYLE.md). - -## Usage - - checksrc.pl [options] [file1] [file2] ... - -## Command line options - -`-W[file]` skip that file and exclude it from being checked. Helpful -when, for example, one of the files is generated. - -`-D[dir]` directory name to prepend to file names when accessing them. - -`-h` shows the help output, that also lists all recognized warnings - -## What does checksrc warn for? - -checksrc does not check and verify the code against the entire style guide. -The script is an effort to detect the most common mistakes and syntax mistakes -that contributors make before they get accustomed to our code style. Heck, -many of us regulars do the mistakes too and this script helps us keep the code -in shape. - - checksrc.pl -h - -Lists how to use the script and it lists all existing warnings it has and -problems it detects. At the time of this writing, the existing checksrc -warnings are: - -- `ASSIGNWITHINCONDITION`: Assignment within a conditional expression. The - code style mandates the assignment to be done outside of it. - -- `ASTERISKNOSPACE`: A pointer was declared like `char* name` instead of the - more appropriate `char *name` style. The asterisk should sit next to the - name. - -- `ASTERISKSPACE`: A pointer was declared like `char * name` instead of the - more appropriate `char *name` style. The asterisk should sit right next to - the name without a space in between. - -- `BADCOMMAND`: There's a bad `!checksrc!` instruction in the code. See the - **Ignore certain warnings** section below for details. - -- `BANNEDFUNC`: A banned function was used. The functions sprintf, vsprintf, - strcat, strncat, gets are **never** allowed in curl source code. - -- `BRACEELSE`: '} else' on the same line. The else is supposed to be on the - following line. - -- `BRACEPOS`: wrong position for an open brace (`{`). - -- `BRACEWHILE`: more than once space between end brace and while keyword - -- `COMMANOSPACE`: a comma without following space - -- `COPYRIGHT`: the file is missing a copyright statement! - -- `CPPCOMMENTS`: `//` comment detected, that is not C89 compliant - -- `DOBRACE`: only use one space after do before open brace - -- `EMPTYLINEBRACE`: found empty line before open brace - -- `EQUALSNOSPACE`: no space after `=` sign - -- `EQUALSNULL`: comparison with `== NULL` used in if/while. We use `!var`. - -- `EXCLAMATIONSPACE`: space found after exclamations mark - -- `FOPENMODE`: `fopen()` needs a macro for the mode string, use it - -- `INDENTATION`: detected a wrong start column for code. Note that this - warning only checks some specific places and will certainly miss many bad - indentations. - -- `LONGLINE`: A line is longer than 79 columns. - -- `MULTISPACE`: Multiple spaces were found where only one should be used. - -- `NOSPACEEQUALS`: An equals sign was found without preceding space. We prefer - `a = 2` and *not* `a=2`. - -- `NOTEQUALSZERO`: check found using `!= 0`. We use plain `if(var)`. - -- `ONELINECONDITION`: do not put the conditional block on the same line as `if()` - -- `OPENCOMMENT`: File ended with a comment (`/*`) still "open". - -- `PARENBRACE`: `){` was used without sufficient space in between. - -- `RETURNNOSPACE`: `return` was used without space between the keyword and the - following value. - -- `SEMINOSPACE`: There was no space (or newline) following a semicolon. - -- `SIZEOFNOPAREN`: Found use of sizeof without parentheses. We prefer - `sizeof(int)` style. - -- `SNPRINTF` - Found use of `snprintf()`. Since we use an internal replacement - with a different return code etc, we prefer `msnprintf()`. - -- `SPACEAFTERPAREN`: there was a space after open parenthesis, `( text`. - -- `SPACEBEFORECLOSE`: there was a space before a close parenthesis, `text )`. - -- `SPACEBEFORECOMMA`: there was a space before a comma, `one , two`. - -- `SPACEBEFOREPAREN`: there was a space before an open parenthesis, `if (`, - where one was not expected - -- `SPACESEMICOLON`: there was a space before semicolon, ` ;`. - -- `TABS`: TAB characters are not allowed! - -- `TRAILINGSPACE`: Trailing whitespace on the line - -- `TYPEDEFSTRUCT`: we frown upon (most) typedefed structs - -- `UNUSEDIGNORE`: a checksrc inlined warning ignore was asked for but not used, - that is an ignore that should be removed or changed to get used. - -### Extended warnings - -Some warnings are quite computationally expensive to perform, so they are -turned off by default. To enable these warnings, place a `.checksrc` file in -the directory where they should be activated with commands to enable the -warnings you are interested in. The format of the file is to enable one -warning per line like so: `enable ` - -Currently these are the extended warnings which can be enabled: - -- `COPYRIGHTYEAR`: the current changeset has not updated the copyright year in - the source file - -- `STRERROR`: use of banned function strerror() - -## Ignore certain warnings - -Due to the nature of the source code and the flaws of the checksrc tool, there -is sometimes a need to ignore specific warnings. checksrc allows a few -different ways to do this. - -### Inline ignore - -You can control what to ignore within a specific source file by providing -instructions to checksrc in the source code itself. You need a magic marker -that is `!checksrc!` followed by the instruction. The instruction can ask to -ignore a specific warning N number of times or you ignore all of them until -you mark the end of the ignored section. - -Inline ignores are only done for that single specific source code file. - -Example - - /* !checksrc! disable LONGLINE all */ - -This will ignore the warning for overly long lines until it is re-enabled with: - - /* !checksrc! enable LONGLINE */ - -If the enabling is not performed before the end of the file, it will be enabled -automatically for the next file. - -You can also opt to ignore just N violations so that if you have a single long -line you just cannot shorten and is agreed to be fine anyway: - - /* !checksrc! disable LONGLINE 1 */ - -... and the warning for long lines will be enabled again automatically after -it has ignored that single warning. The number `1` can of course be changed to -any other integer number. It can be used to make sure only the exact intended -instances are ignored and nothing extra. - -### Directory wide ignore patterns - -This is a method we have transitioned away from. Use inline ignores as far as -possible. - -Make a `checksrc.skip` file in the directory of the source code with the -false positive, and include the full offending line into this file. diff --git a/Engine/lib/curl/docs/CIPHERS.md b/Engine/lib/curl/docs/CIPHERS.md deleted file mode 100644 index ff35ff283..000000000 --- a/Engine/lib/curl/docs/CIPHERS.md +++ /dev/null @@ -1,591 +0,0 @@ -# Ciphers - -With curl's options -[`CURLOPT_SSL_CIPHER_LIST`](https://curl.se/libcurl/c/CURLOPT_SSL_CIPHER_LIST.html) -and -[`--ciphers`](https://curl.se/docs/manpage.html#--ciphers) -users can control which ciphers to consider when negotiating TLS connections. - -TLS 1.3 ciphers are supported since curl 7.61 for OpenSSL 1.1.1+, and since -curl 7.85 for SChannel with options -[`CURLOPT_TLS13_CIPHERS`](https://curl.se/libcurl/c/CURLOPT_TLS13_CIPHERS.html) -and -[`--tls13-ciphers`](https://curl.se/docs/manpage.html#--tls13-ciphers) -. If you are using a different SSL backend you can try setting TLS 1.3 cipher -suites by using the respective regular cipher option. - -The names of the known ciphers differ depending on which TLS backend that -libcurl was built to use. This is an attempt to list known cipher names. - -## OpenSSL - -(based on [OpenSSL docs](https://www.openssl.org/docs/manmaster/man1/openssl-ciphers.html)) - -When specifying multiple cipher names, separate them with colon (`:`). - -### SSL3 cipher suites - -`NULL-MD5` -`NULL-SHA` -`RC4-MD5` -`RC4-SHA` -`IDEA-CBC-SHA` -`DES-CBC3-SHA` -`DH-DSS-DES-CBC3-SHA` -`DH-RSA-DES-CBC3-SHA` -`DHE-DSS-DES-CBC3-SHA` -`DHE-RSA-DES-CBC3-SHA` -`ADH-RC4-MD5` -`ADH-DES-CBC3-SHA` - -### TLS v1.0 cipher suites - -`NULL-MD5` -`NULL-SHA` -`RC4-MD5` -`RC4-SHA` -`IDEA-CBC-SHA` -`DES-CBC3-SHA` -`DHE-DSS-DES-CBC3-SHA` -`DHE-RSA-DES-CBC3-SHA` -`ADH-RC4-MD5` -`ADH-DES-CBC3-SHA` - -### AES ciphersuites from RFC3268, extending TLS v1.0 - -`AES128-SHA` -`AES256-SHA` -`DH-DSS-AES128-SHA` -`DH-DSS-AES256-SHA` -`DH-RSA-AES128-SHA` -`DH-RSA-AES256-SHA` -`DHE-DSS-AES128-SHA` -`DHE-DSS-AES256-SHA` -`DHE-RSA-AES128-SHA` -`DHE-RSA-AES256-SHA` -`ADH-AES128-SHA` -`ADH-AES256-SHA` - -### SEED ciphersuites from RFC4162, extending TLS v1.0 - -`SEED-SHA` -`DH-DSS-SEED-SHA` -`DH-RSA-SEED-SHA` -`DHE-DSS-SEED-SHA` -`DHE-RSA-SEED-SHA` -`ADH-SEED-SHA` - -### GOST ciphersuites, extending TLS v1.0 - -`GOST94-GOST89-GOST89` -`GOST2001-GOST89-GOST89` -`GOST94-NULL-GOST94` -`GOST2001-NULL-GOST94` - -### Elliptic curve cipher suites - -`ECDHE-RSA-NULL-SHA` -`ECDHE-RSA-RC4-SHA` -`ECDHE-RSA-DES-CBC3-SHA` -`ECDHE-RSA-AES128-SHA` -`ECDHE-RSA-AES256-SHA` -`ECDHE-ECDSA-NULL-SHA` -`ECDHE-ECDSA-RC4-SHA` -`ECDHE-ECDSA-DES-CBC3-SHA` -`ECDHE-ECDSA-AES128-SHA` -`ECDHE-ECDSA-AES256-SHA` -`AECDH-NULL-SHA` -`AECDH-RC4-SHA` -`AECDH-DES-CBC3-SHA` -`AECDH-AES128-SHA` -`AECDH-AES256-SHA` - -### TLS v1.2 cipher suites - -`NULL-SHA256` -`AES128-SHA256` -`AES256-SHA256` -`AES128-GCM-SHA256` -`AES256-GCM-SHA384` -`DH-RSA-AES128-SHA256` -`DH-RSA-AES256-SHA256` -`DH-RSA-AES128-GCM-SHA256` -`DH-RSA-AES256-GCM-SHA384` -`DH-DSS-AES128-SHA256` -`DH-DSS-AES256-SHA256` -`DH-DSS-AES128-GCM-SHA256` -`DH-DSS-AES256-GCM-SHA384` -`DHE-RSA-AES128-SHA256` -`DHE-RSA-AES256-SHA256` -`DHE-RSA-AES128-GCM-SHA256` -`DHE-RSA-AES256-GCM-SHA384` -`DHE-DSS-AES128-SHA256` -`DHE-DSS-AES256-SHA256` -`DHE-DSS-AES128-GCM-SHA256` -`DHE-DSS-AES256-GCM-SHA384` -`ECDHE-RSA-AES128-SHA256` -`ECDHE-RSA-AES256-SHA384` -`ECDHE-RSA-AES128-GCM-SHA256` -`ECDHE-RSA-AES256-GCM-SHA384` -`ECDHE-ECDSA-AES128-SHA256` -`ECDHE-ECDSA-AES256-SHA384` -`ECDHE-ECDSA-AES128-GCM-SHA256` -`ECDHE-ECDSA-AES256-GCM-SHA384` -`ADH-AES128-SHA256` -`ADH-AES256-SHA256` -`ADH-AES128-GCM-SHA256` -`ADH-AES256-GCM-SHA384` -`AES128-CCM` -`AES256-CCM` -`DHE-RSA-AES128-CCM` -`DHE-RSA-AES256-CCM` -`AES128-CCM8` -`AES256-CCM8` -`DHE-RSA-AES128-CCM8` -`DHE-RSA-AES256-CCM8` -`ECDHE-ECDSA-AES128-CCM` -`ECDHE-ECDSA-AES256-CCM` -`ECDHE-ECDSA-AES128-CCM8` -`ECDHE-ECDSA-AES256-CCM8` - -### Camellia HMAC-Based ciphersuites from RFC6367, extending TLS v1.2 - -`ECDHE-ECDSA-CAMELLIA128-SHA256` -`ECDHE-ECDSA-CAMELLIA256-SHA384` -`ECDHE-RSA-CAMELLIA128-SHA256` -`ECDHE-RSA-CAMELLIA256-SHA384` - -### TLS 1.3 cipher suites - -(Note these ciphers are set with `CURLOPT_TLS13_CIPHERS` and `--tls13-ciphers`) - -`TLS_AES_256_GCM_SHA384` -`TLS_CHACHA20_POLY1305_SHA256` -`TLS_AES_128_GCM_SHA256` -`TLS_AES_128_CCM_8_SHA256` -`TLS_AES_128_CCM_SHA256` - -## NSS - -### Totally insecure - -`rc4` -`rc4-md5` -`rc4export` -`rc2` -`rc2export` -`des` -`desede3` - -### SSL3/TLS cipher suites - -`rsa_rc4_128_md5` -`rsa_rc4_128_sha` -`rsa_3des_sha` -`rsa_des_sha` -`rsa_rc4_40_md5` -`rsa_rc2_40_md5` -`rsa_null_md5` -`rsa_null_sha` -`fips_3des_sha` -`fips_des_sha` -`fortezza` -`fortezza_rc4_128_sha` -`fortezza_null` - -### TLS 1.0 Exportable 56-bit Cipher Suites - -`rsa_des_56_sha` -`rsa_rc4_56_sha` - -### AES ciphers - -`dhe_dss_aes_128_cbc_sha` -`dhe_dss_aes_256_cbc_sha` -`dhe_rsa_aes_128_cbc_sha` -`dhe_rsa_aes_256_cbc_sha` -`rsa_aes_128_sha` -`rsa_aes_256_sha` - -### ECC ciphers - -`ecdh_ecdsa_null_sha` -`ecdh_ecdsa_rc4_128_sha` -`ecdh_ecdsa_3des_sha` -`ecdh_ecdsa_aes_128_sha` -`ecdh_ecdsa_aes_256_sha` -`ecdhe_ecdsa_null_sha` -`ecdhe_ecdsa_rc4_128_sha` -`ecdhe_ecdsa_3des_sha` -`ecdhe_ecdsa_aes_128_sha` -`ecdhe_ecdsa_aes_256_sha` -`ecdh_rsa_null_sha` -`ecdh_rsa_128_sha` -`ecdh_rsa_3des_sha` -`ecdh_rsa_aes_128_sha` -`ecdh_rsa_aes_256_sha` -`ecdhe_rsa_null` -`ecdhe_rsa_rc4_128_sha` -`ecdhe_rsa_3des_sha` -`ecdhe_rsa_aes_128_sha` -`ecdhe_rsa_aes_256_sha` -`ecdh_anon_null_sha` -`ecdh_anon_rc4_128sha` -`ecdh_anon_3des_sha` -`ecdh_anon_aes_128_sha` -`ecdh_anon_aes_256_sha` - -### HMAC-SHA256 cipher suites - -`rsa_null_sha_256` -`rsa_aes_128_cbc_sha_256` -`rsa_aes_256_cbc_sha_256` -`dhe_rsa_aes_128_cbc_sha_256` -`dhe_rsa_aes_256_cbc_sha_256` -`ecdhe_ecdsa_aes_128_cbc_sha_256` -`ecdhe_rsa_aes_128_cbc_sha_256` - -### AES GCM cipher suites in RFC 5288 and RFC 5289 - -`rsa_aes_128_gcm_sha_256` -`dhe_rsa_aes_128_gcm_sha_256` -`dhe_dss_aes_128_gcm_sha_256` -`ecdhe_ecdsa_aes_128_gcm_sha_256` -`ecdh_ecdsa_aes_128_gcm_sha_256` -`ecdhe_rsa_aes_128_gcm_sha_256` -`ecdh_rsa_aes_128_gcm_sha_256` - -### cipher suites using SHA384 - -`rsa_aes_256_gcm_sha_384` -`dhe_rsa_aes_256_gcm_sha_384` -`dhe_dss_aes_256_gcm_sha_384` -`ecdhe_ecdsa_aes_256_sha_384` -`ecdhe_rsa_aes_256_sha_384` -`ecdhe_ecdsa_aes_256_gcm_sha_384` -`ecdhe_rsa_aes_256_gcm_sha_384` - -### chacha20-poly1305 cipher suites - -`ecdhe_rsa_chacha20_poly1305_sha_256` -`ecdhe_ecdsa_chacha20_poly1305_sha_256` -`dhe_rsa_chacha20_poly1305_sha_256` - -### TLS 1.3 cipher suites - -`aes_128_gcm_sha_256` -`aes_256_gcm_sha_384` -`chacha20_poly1305_sha_256` - -## GSKit - -Ciphers are internally defined as [numeric -codes](https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/apis/gsk_attribute_set_buffer.htm). libcurl -maps them to the following case-insensitive names. - -### SSL2 cipher suites (insecure: disabled by default) - -`rc2-md5` -`rc4-md5` -`exp-rc2-md5` -`exp-rc4-md5` -`des-cbc-md5` -`des-cbc3-md5` - -### SSL3 cipher suites - -`null-md5` -`null-sha` -`rc4-md5` -`rc4-sha` -`exp-rc2-cbc-md5` -`exp-rc4-md5` -`exp-des-cbc-sha` -`des-cbc3-sha` - -### TLS v1.0 cipher suites - -`null-md5` -`null-sha` -`rc4-md5` -`rc4-sha` -`exp-rc2-cbc-md5` -`exp-rc4-md5` -`exp-des-cbc-sha` -`des-cbc3-sha` -`aes128-sha` -`aes256-sha` - -### TLS v1.1 cipher suites - -`null-md5` -`null-sha` -`rc4-md5` -`rc4-sha` -`exp-des-cbc-sha` -`des-cbc3-sha` -`aes128-sha` -`aes256-sha` - -### TLS v1.2 cipher suites - -`null-md5` -`null-sha` -`null-sha256` -`rc4-md5` -`rc4-sha` -`des-cbc3-sha` -`aes128-sha` -`aes256-sha` -`aes128-sha256` -`aes256-sha256` -`aes128-gcm-sha256` -`aes256-gcm-sha384` - -## WolfSSL - -`RC4-SHA`, -`RC4-MD5`, -`DES-CBC3-SHA`, -`AES128-SHA`, -`AES256-SHA`, -`NULL-SHA`, -`NULL-SHA256`, -`DHE-RSA-AES128-SHA`, -`DHE-RSA-AES256-SHA`, -`DHE-PSK-AES256-GCM-SHA384`, -`DHE-PSK-AES128-GCM-SHA256`, -`PSK-AES256-GCM-SHA384`, -`PSK-AES128-GCM-SHA256`, -`DHE-PSK-AES256-CBC-SHA384`, -`DHE-PSK-AES128-CBC-SHA256`, -`PSK-AES256-CBC-SHA384`, -`PSK-AES128-CBC-SHA256`, -`PSK-AES128-CBC-SHA`, -`PSK-AES256-CBC-SHA`, -`DHE-PSK-AES128-CCM`, -`DHE-PSK-AES256-CCM`, -`PSK-AES128-CCM`, -`PSK-AES256-CCM`, -`PSK-AES128-CCM-8`, -`PSK-AES256-CCM-8`, -`DHE-PSK-NULL-SHA384`, -`DHE-PSK-NULL-SHA256`, -`PSK-NULL-SHA384`, -`PSK-NULL-SHA256`, -`PSK-NULL-SHA`, -`HC128-MD5`, -`HC128-SHA`, -`HC128-B2B256`, -`AES128-B2B256`, -`AES256-B2B256`, -`RABBIT-SHA`, -`NTRU-RC4-SHA`, -`NTRU-DES-CBC3-SHA`, -`NTRU-AES128-SHA`, -`NTRU-AES256-SHA`, -`AES128-CCM-8`, -`AES256-CCM-8`, -`ECDHE-ECDSA-AES128-CCM`, -`ECDHE-ECDSA-AES128-CCM-8`, -`ECDHE-ECDSA-AES256-CCM-8`, -`ECDHE-RSA-AES128-SHA`, -`ECDHE-RSA-AES256-SHA`, -`ECDHE-ECDSA-AES128-SHA`, -`ECDHE-ECDSA-AES256-SHA`, -`ECDHE-RSA-RC4-SHA`, -`ECDHE-RSA-DES-CBC3-SHA`, -`ECDHE-ECDSA-RC4-SHA`, -`ECDHE-ECDSA-DES-CBC3-SHA`, -`AES128-SHA256`, -`AES256-SHA256`, -`DHE-RSA-AES128-SHA256`, -`DHE-RSA-AES256-SHA256`, -`ECDH-RSA-AES128-SHA`, -`ECDH-RSA-AES256-SHA`, -`ECDH-ECDSA-AES128-SHA`, -`ECDH-ECDSA-AES256-SHA`, -`ECDH-RSA-RC4-SHA`, -`ECDH-RSA-DES-CBC3-SHA`, -`ECDH-ECDSA-RC4-SHA`, -`ECDH-ECDSA-DES-CBC3-SHA`, -`AES128-GCM-SHA256`, -`AES256-GCM-SHA384`, -`DHE-RSA-AES128-GCM-SHA256`, -`DHE-RSA-AES256-GCM-SHA384`, -`ECDHE-RSA-AES128-GCM-SHA256`, -`ECDHE-RSA-AES256-GCM-SHA384`, -`ECDHE-ECDSA-AES128-GCM-SHA256`, -`ECDHE-ECDSA-AES256-GCM-SHA384`, -`ECDH-RSA-AES128-GCM-SHA256`, -`ECDH-RSA-AES256-GCM-SHA384`, -`ECDH-ECDSA-AES128-GCM-SHA256`, -`ECDH-ECDSA-AES256-GCM-SHA384`, -`CAMELLIA128-SHA`, -`DHE-RSA-CAMELLIA128-SHA`, -`CAMELLIA256-SHA`, -`DHE-RSA-CAMELLIA256-SHA`, -`CAMELLIA128-SHA256`, -`DHE-RSA-CAMELLIA128-SHA256`, -`CAMELLIA256-SHA256`, -`DHE-RSA-CAMELLIA256-SHA256`, -`ECDHE-RSA-AES128-SHA256`, -`ECDHE-ECDSA-AES128-SHA256`, -`ECDH-RSA-AES128-SHA256`, -`ECDH-ECDSA-AES128-SHA256`, -`ECDHE-RSA-AES256-SHA384`, -`ECDHE-ECDSA-AES256-SHA384`, -`ECDH-RSA-AES256-SHA384`, -`ECDH-ECDSA-AES256-SHA384`, -`ECDHE-RSA-CHACHA20-POLY1305`, -`ECDHE-ECDSA-CHACHA20-POLY1305`, -`DHE-RSA-CHACHA20-POLY1305`, -`ECDHE-RSA-CHACHA20-POLY1305-OLD`, -`ECDHE-ECDSA-CHACHA20-POLY1305-OLD`, -`DHE-RSA-CHACHA20-POLY1305-OLD`, -`ADH-AES128-SHA`, -`QSH`, -`RENEGOTIATION-INFO`, -`IDEA-CBC-SHA`, -`ECDHE-ECDSA-NULL-SHA`, -`ECDHE-PSK-NULL-SHA256`, -`ECDHE-PSK-AES128-CBC-SHA256`, -`PSK-CHACHA20-POLY1305`, -`ECDHE-PSK-CHACHA20-POLY1305`, -`DHE-PSK-CHACHA20-POLY1305`, -`EDH-RSA-DES-CBC3-SHA`, - -## Schannel - -Schannel allows the enabling and disabling of encryption algorithms, but not -specific ciphersuites. They are -[defined](https://docs.microsoft.com/windows/desktop/SecCrypto/alg-id) by -Microsoft. - -There is also the case that the selected algorithm is not supported by the -protocol or does not match the ciphers offered by the server during the SSL -negotiation. In this case curl will return error -`CURLE_SSL_CONNECT_ERROR (35) SEC_E_ALGORITHM_MISMATCH` -and the request will fail. - -`CALG_MD2`, -`CALG_MD4`, -`CALG_MD5`, -`CALG_SHA`, -`CALG_SHA1`, -`CALG_MAC`, -`CALG_RSA_SIGN`, -`CALG_DSS_SIGN`, -`CALG_NO_SIGN`, -`CALG_RSA_KEYX`, -`CALG_DES`, -`CALG_3DES_112`, -`CALG_3DES`, -`CALG_DESX`, -`CALG_RC2`, -`CALG_RC4`, -`CALG_SEAL`, -`CALG_DH_SF`, -`CALG_DH_EPHEM`, -`CALG_AGREEDKEY_ANY`, -`CALG_HUGHES_MD5`, -`CALG_SKIPJACK`, -`CALG_TEK`, -`CALG_CYLINK_MEK`, -`CALG_SSL3_SHAMD5`, -`CALG_SSL3_MASTER`, -`CALG_SCHANNEL_MASTER_HASH`, -`CALG_SCHANNEL_MAC_KEY`, -`CALG_SCHANNEL_ENC_KEY`, -`CALG_PCT1_MASTER`, -`CALG_SSL2_MASTER`, -`CALG_TLS1_MASTER`, -`CALG_RC5`, -`CALG_HMAC`, -`CALG_TLS1PRF`, -`CALG_HASH_REPLACE_OWF`, -`CALG_AES_128`, -`CALG_AES_192`, -`CALG_AES_256`, -`CALG_AES`, -`CALG_SHA_256`, -`CALG_SHA_384`, -`CALG_SHA_512`, -`CALG_ECDH`, -`CALG_ECMQV`, -`CALG_ECDSA`, -`CALG_ECDH_EPHEM`, - -As of curl 7.77.0, you can also pass `SCH_USE_STRONG_CRYPTO` as a cipher name -to [constrain the set of available ciphers as specified in the schannel -documentation](https://docs.microsoft.com/en-us/windows/win32/secauthn/tls-cipher-suites-in-windows-server-2022). -Note that the supported ciphers in this case follow the OS version, so if you -are running an outdated OS you might still be supporting weak ciphers. - -### TLS 1.3 cipher suites - -(Note these ciphers are set with `CURLOPT_TLS13_CIPHERS` and `--tls13-ciphers`) - -`TLS_AES_256_GCM_SHA384` -`TLS_AES_128_GCM_SHA256` -`TLS_CHACHA20_POLY1305_SHA256` -`TLS_AES_128_CCM_8_SHA256` -`TLS_AES_128_CCM_SHA256` - -## BearSSL - -BearSSL ciphers can be specified by either the OpenSSL name (`ECDHE-RSA-AES128-GCM-SHA256`) or the IANA name (`TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256`). - -Since BearSSL 0.1: - -`DES-CBC3-SHA` -`AES128-SHA` -`AES256-SHA` -`AES128-SHA256` -`AES256-SHA256` -`AES128-GCM-SHA256` -`AES256-GCM-SHA384` -`ECDH-ECDSA-DES-CBC3-SHA` -`ECDH-ECDSA-AES128-SHA` -`ECDH-ECDSA-AES256-SHA` -`ECDHE-ECDSA-DES-CBC3-SHA` -`ECDHE-ECDSA-AES128-SHA` -`ECDHE-ECDSA-AES256-SHA` -`ECDH-RSA-DES-CBC3-SHA` -`ECDH-RSA-AES128-SHA` -`ECDH-RSA-AES256-SHA` -`ECDHE-RSA-DES-CBC3-SHA` -`ECDHE-RSA-AES128-SHA` -`ECDHE-RSA-AES256-SHA` -`ECDHE-ECDSA-AES128-SHA256` -`ECDHE-ECDSA-AES256-SHA384` -`ECDH-ECDSA-AES128-SHA256` -`ECDH-ECDSA-AES256-SHA384` -`ECDHE-RSA-AES128-SHA256` -`ECDHE-RSA-AES256-SHA384` -`ECDH-RSA-AES128-SHA256` -`ECDH-RSA-AES256-SHA384` -`ECDHE-ECDSA-AES128-GCM-SHA256` -`ECDHE-ECDSA-AES256-GCM-SHA384` -`ECDH-ECDSA-AES128-GCM-SHA256` -`ECDH-ECDSA-AES256-GCM-SHA384` -`ECDHE-RSA-AES128-GCM-SHA256` -`ECDHE-RSA-AES256-GCM-SHA384` -`ECDH-RSA-AES128-GCM-SHA256` -`ECDH-RSA-AES256-GCM-SHA384` - -Since BearSSL 0.2: - -`ECDHE-RSA-CHACHA20-POLY1305` -`ECDHE-ECDSA-CHACHA20-POLY1305` - -Since BearSSL 0.6: - -`AES128-CCM` -`AES256-CCM` -`AES128-CCM8` -`AES256-CCM8` -`ECDHE-ECDSA-AES128-CCM` -`ECDHE-ECDSA-AES256-CCM` -`ECDHE-ECDSA-AES128-CCM8` -`ECDHE-ECDSA-AES256-CCM8` diff --git a/Engine/lib/curl/docs/CMakeLists.txt b/Engine/lib/curl/docs/CMakeLists.txt deleted file mode 100644 index 97101a482..000000000 --- a/Engine/lib/curl/docs/CMakeLists.txt +++ /dev/null @@ -1,26 +0,0 @@ -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### -#add_subdirectory(examples) -add_subdirectory(libcurl) -add_subdirectory(cmdline-opts) diff --git a/Engine/lib/curl/docs/CODE_OF_CONDUCT.md b/Engine/lib/curl/docs/CODE_OF_CONDUCT.md deleted file mode 100644 index 1f71c387b..000000000 --- a/Engine/lib/curl/docs/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,32 +0,0 @@ -Contributor Code of Conduct -=========================== - -As contributors and maintainers of this project, we pledge to respect all -people who contribute through reporting issues, posting feature requests, -updating documentation, submitting pull requests or patches, and other -activities. - -We are committed to making participation in this project a harassment-free -experience for everyone, regardless of level of experience, gender, gender -identity and expression, sexual orientation, disability, personal appearance, -body size, race, ethnicity, age, or religion. - -Examples of unacceptable behavior by participants include the use of sexual -language or imagery, derogatory comments or personal attacks, trolling, public -or private harassment, insults, or other unprofessional conduct. - -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct. Project maintainers who do not -follow the Code of Conduct may be removed from the project team. - -This code of conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by opening an issue or contacting one or more of the project -maintainers. - -This Code of Conduct is adapted from the [Contributor -Covenant](https://contributor-covenant.org/), version 1.1.0, available at -[https://contributor-covenant.org/version/1/1/0/](https://contributor-covenant.org/version/1/1/0/) diff --git a/Engine/lib/curl/docs/CODE_REVIEW.md b/Engine/lib/curl/docs/CODE_REVIEW.md deleted file mode 100644 index 20d1be849..000000000 --- a/Engine/lib/curl/docs/CODE_REVIEW.md +++ /dev/null @@ -1,168 +0,0 @@ -# How to do code reviews for curl - -Anyone and everyone is encouraged and welcome to review code submissions in -curl. This is a guide on what to check for and how to perform a successful -code review. - -## All submissions should get reviewed - -All pull requests and patches submitted to the project should be reviewed by -at least one experienced curl maintainer before that code is accepted and -merged. - -## Let the tools and tests take the first rounds - -On initial pull requests, let the tools and tests do their job first and then -start out by helping the submitter understand the test failures and tool -alerts. - -## How to provide feedback to author - -Be nice. Ask questions. Provide examples or suggestions of improvements. -Assume the best intentions. Remember language barriers. - -All first-time contributors can become regulars. Let's help them go there. - -## Is this a change we want? - -If this is not a change that seems to be aligned with the project's path -forward and as such cannot be accepted, inform the author about this sooner -rather than later. Do it gently and explain why and possibly what could be -done to make it more acceptable. - -## API/ABI stability or changed behavior - -Changing the API and the ABI may be fine in a change but it needs to be done -deliberately and carefully. If not, a reviewer must help the author to realize -the mistake. - -curl and libcurl are similarly strict on not modifying existing behavior. API -and ABI stability is not enough, the behavior should also remain intact as far -as possible. - -## Code style - -Most code style nits are detected by checksrc but not all. Only leave remarks -on style deviation once checksrc does not find anymore. - -Minor nits from fresh submitters can also be handled by the maintainer when -merging, in case it seems like the submitter is not clear on what to do. We -want to make the process fun and exciting for new contributors. - -## Encourage consistency - -Make sure new code is written in a similar style as existing code. Naming, -logic, conditions, etc. - -## Are pointers always non-NULL? - -If a function or code rely on pointers being non-NULL, take an extra look if -that seems to be a fair assessment. - -## Asserts - -Conditions that should never be false can be verified with `DEBUGASSERT()` -calls to get caught in tests and debugging easier, while not having an impact -on final or release builds. - -## Memory allocation - -Can the mallocs be avoided? Do not introduce mallocs in any hot paths. If -there are (new) mallocs, can they be combined into fewer calls? - -Are all allocations handled in errorpaths to avoid leaks and crashes? - -## Thread-safety - -We do not like static variables as they break thread-safety and prevent -functions from being reentrant. - -## Should features be `#ifdef`ed? - -Features and functionality may not be present everywhere and should therefore -be `#ifdef`ed. Additionally, some features should be possible to switch on/off -in the build. - -Write `#ifdef`s to be as little of a "maze" as possible. - -## Does it look portable enough? - -curl runs "everywhere". Does the code take a reasonable stance and enough -precautions to be possible to build and run on most platforms? - -Remember that we live by C89 restrictions. - -## Tests and testability - -New features should be added in conjunction with one or more test cases. -Ideally, functions should also be written so that unit tests can be done to -test individual functions. - -## Documentation - -New features or changes to existing functionality **must** be accompanied by -updated documentation. Submitting that in a separate follow-up pull request is -not OK. A code review must also verify that the submitted documentation update -matches the code submission. - -English is not everyone's first language, be mindful of this and help the -submitter improve the text if it needs a rewrite to read better. - -## Code should not be hard to understand - -Source code should be written to maximize readability and be easy to -understand. - -## Functions should not be large - -A single function should never be large as that makes it hard to follow and -understand all the exit points and state changes. Some existing functions in -curl certainly violate this ground rule but when reviewing new code we should -propose splitting into smaller functions. - -## Duplication is evil - -Anything that looks like duplicated code is a red flag. Anything that seems to -introduce code that we *should* already have or provide needs a closer check. - -## Sensitive data - -When credentials are involved, take an extra look at what happens with this -data. Where it comes from and where it goes. - -## Variable types differ - -`size_t` is not a fixed size. `time_t` can be signed or unsigned and have -different sizes. Relying on variable sizes is a red flag. - -Also remember that endianness and >= 32 bit accesses to unaligned addresses -are problematic areas. - -## Integer overflows - -Be careful about integer overflows. Some variable types can be either 32 bit -or 64 bit. Integer overflows must be detected and acted on *before* they -happen. - -## Dangerous use of functions - -Maybe use of `realloc()` should rather use the dynbuf functions? - -Do not allow new code that grows buffers without using dynbuf. - -Use of C functions that rely on a terminating zero must only be used on data -that really do have a zero terminating zero. - -## Dangerous "data styles" - -Make extra precautions and verify that memory buffers that need a terminating -zero always have exactly that. Buffers *without* a zero terminator must not be -used as input to string functions. - -# Commit messages - -Tightly coupled with a code review is making sure that the commit message is -good. It is the responsibility of the person who merges the code to make sure -that the commit message follows our standard (detailed in the -[CONTRIBUTE.md](CONTRIBUTE.md) document). This includes making sure the PR -identifies related issues and giving credit to reporters and helpers. diff --git a/Engine/lib/curl/docs/CODE_STYLE.md b/Engine/lib/curl/docs/CODE_STYLE.md deleted file mode 100644 index 5481aa506..000000000 --- a/Engine/lib/curl/docs/CODE_STYLE.md +++ /dev/null @@ -1,310 +0,0 @@ -# curl C code style - -Source code that has a common style is easier to read than code that uses -different styles in different places. It helps making the code feel like one -single code base. Easy-to-read is an important property of code and helps -making it easier to review when new things are added and it helps debugging -code when developers are trying to figure out why things go wrong. A unified -style is more important than individual contributors having their own personal -tastes satisfied. - -Our C code has a few style rules. Most of them are verified and upheld by the -`scripts/checksrc.pl` script. Invoked with `make checksrc` or even by default -by the build system when built after `./configure --enable-debug` has been -used. - -It is normally not a problem for anyone to follow the guidelines, as you just -need to copy the style already used in the source code and there are no -particularly unusual rules in our set of rules. - -We also work hard on writing code that are warning-free on all the major -platforms and in general on as many platforms as possible. Code that obviously -will cause warnings will not be accepted as-is. - -## Naming - -Try using a non-confusing naming scheme for your new functions and variable -names. It does not necessarily have to mean that you should use the same as in -other places of the code, just that the names should be logical, -understandable and be named according to what they are used for. File-local -functions should be made static. We like lower case names. - -See the [INTERNALS](https://curl.se/dev/internals.html#symbols) document on -how we name non-exported library-global symbols. - -## Indenting - -We use only spaces for indentation, never TABs. We use two spaces for each new -open brace. - -```c -if(something_is_true) { - while(second_statement == fine) { - moo(); - } -} -``` - -## Comments - -Since we write C89 code, **//** comments are not allowed. They were not -introduced in the C standard until C99. We use only __/* comments */__. - -```c -/* this is a comment */ -``` - -## Long lines - -Source code in curl may never be wider than 79 columns and there are two -reasons for maintaining this even in the modern era of large and high -resolution screens: - -1. Narrower columns are easier to read than wide ones. There's a reason - newspapers have used columns for decades or centuries. - -2. Narrower columns allow developers to easier show multiple pieces of code - next to each other in different windows. I often have two or three source - code windows next to each other on the same screen - as well as multiple - terminal and debugging windows. - -## Braces - -In if/while/do/for expressions, we write the open brace on the same line as -the keyword and we then set the closing brace on the same indentation level as -the initial keyword. Like this: - -```c -if(age < 40) { - /* clearly a youngster */ -} -``` - -You may omit the braces if they would contain only a one-line statement: - -```c -if(!x) - continue; -``` - -For functions the opening brace should be on a separate line: - -```c -int main(int argc, char **argv) -{ - return 1; -} -``` - -## 'else' on the following line - -When adding an **else** clause to a conditional expression using braces, we -add it on a new line after the closing brace. Like this: - -```c -if(age < 40) { - /* clearly a youngster */ -} -else { - /* probably grumpy */ -} -``` - -## No space before parentheses - -When writing expressions using if/while/do/for, there shall be no space -between the keyword and the open parenthesis. Like this: - -```c -while(1) { - /* loop forever */ -} -``` - -## Use boolean conditions - -Rather than test a conditional value such as a bool against TRUE or FALSE, a -pointer against NULL or != NULL and an int against zero or not zero in -if/while conditions we prefer: - -```c -result = do_something(); -if(!result) { - /* something went wrong */ - return result; -} -``` - -## No assignments in conditions - -To increase readability and reduce complexity of conditionals, we avoid -assigning variables within if/while conditions. We frown upon this style: - -```c -if((ptr = malloc(100)) == NULL) - return NULL; -``` - -and instead we encourage the above version to be spelled out more clearly: - -```c -ptr = malloc(100); -if(!ptr) - return NULL; -``` - -## New block on a new line - -We never write multiple statements on the same source line, even for short -if() conditions. - -```c -if(a) - return TRUE; -else if(b) - return FALSE; -``` - -and NEVER: - -```c -if(a) return TRUE; -else if(b) return FALSE; -``` - -## Space around operators - -Please use spaces on both sides of operators in C expressions. Postfix **(), -[], ->, ., ++, --** and Unary **+, -, !, ~, &** operators excluded they should -have no space. - -Examples: - -```c -bla = func(); -who = name[0]; -age += 1; -true = !false; -size += -2 + 3 * (a + b); -ptr->member = a++; -struct.field = b--; -ptr = &address; -contents = *pointer; -complement = ~bits; -empty = (!*string) ? TRUE : FALSE; -``` - -## No parentheses for return values - -We use the 'return' statement without extra parentheses around the value: - -```c -int works(void) -{ - return TRUE; -} -``` - -## Parentheses for sizeof arguments - -When using the sizeof operator in code, we prefer it to be written with -parentheses around its argument: - -```c -int size = sizeof(int); -``` - -## Column alignment - -Some statements cannot be completed on a single line because the line would be -too long, the statement too hard to read, or due to other style guidelines -above. In such a case the statement will span multiple lines. - -If a continuation line is part of an expression or sub-expression then you -should align on the appropriate column so that it's easy to tell what part of -the statement it is. Operators should not start continuation lines. In other -cases follow the 2-space indent guideline. Here are some examples from -libcurl: - -```c -if(Curl_pipeline_wanted(handle->multi, CURLPIPE_HTTP1) && - (handle->set.httpversion != CURL_HTTP_VERSION_1_0) && - (handle->set.httpreq == HTTPREQ_GET || - handle->set.httpreq == HTTPREQ_HEAD)) - /* did not ask for HTTP/1.0 and a GET or HEAD */ - return TRUE; -``` - -If no parenthesis, use the default indent: - -```c -data->set.http_disable_hostname_check_before_authentication = - (0 != va_arg(param, long)) ? TRUE : FALSE; -``` - -Function invoke with an open parenthesis: - -```c -if(option) { - result = parse_login_details(option, strlen(option), - (userp ? &user : NULL), - (passwdp ? &passwd : NULL), - NULL); -} -``` - -Align with the "current open" parenthesis: - -```c -DEBUGF(infof(data, "Curl_pp_readresp_ %d bytes of trailing " - "server response left\n", - (int)clipamount)); -``` - -## Platform dependent code - -Use **#ifdef HAVE_FEATURE** to do conditional code. We avoid checking for -particular operating systems or hardware in the #ifdef lines. The HAVE_FEATURE -shall be generated by the configure script for unix-like systems and they are -hard-coded in the `config-[system].h` files for the others. - -We also encourage use of macros/functions that possibly are empty or defined -to constants when libcurl is built without that feature, to make the code -seamless. Like this example where the **magic()** function works differently -depending on a build-time conditional: - -```c -#ifdef HAVE_MAGIC -void magic(int a) -{ - return a + 2; -} -#else -#define magic(x) 1 -#endif - -int content = magic(3); -``` - -## No typedefed structs - -Use structs by all means, but do not typedef them. Use the `struct name` way -of identifying them: - -```c -struct something { - void *valid; - size_t way_to_write; -}; -struct something instance; -``` - -**Not okay**: - -```c -typedef struct { - void *wrong; - size_t way_to_write; -} something; -something instance; -``` diff --git a/Engine/lib/curl/docs/CONTRIBUTE.md b/Engine/lib/curl/docs/CONTRIBUTE.md deleted file mode 100644 index 506af9b45..000000000 --- a/Engine/lib/curl/docs/CONTRIBUTE.md +++ /dev/null @@ -1,301 +0,0 @@ -# Contributing to the curl project - -This document is intended to offer guidelines on how to best contribute to the -curl project. This concerns new features as well as corrections to existing -flaws or bugs. - -## Join the Community - -Skip over to [https://curl.se/mail/](https://curl.se/mail/) and join -the appropriate mailing list(s). Read up on details before you post -questions. Read this file before you start sending patches. We prefer -questions sent to and discussions being held on the mailing list(s), not sent -to individuals. - -Before posting to one of the curl mailing lists, please read up on the -[mailing list etiquette](https://curl.se/mail/etiquette.html). - -We also hang out on IRC in #curl on libera.chat - -If you are at all interested in the code side of things, consider clicking -'watch' on the [curl repo on GitHub](https://github.com/curl/curl) to be -notified of pull requests and new issues posted there. - -## License and copyright - -When contributing with code, you agree to put your changes and new code under -the same license curl and libcurl is already using unless stated and agreed -otherwise. - -If you add a larger piece of code, you can opt to make that file or set of -files to use a different license as long as they do not enforce any changes to -the rest of the package and they make sense. Such "separate parts" can not be -GPL licensed (as we do not want copyleft to affect users of libcurl) but they -must use "GPL compatible" licenses (as we want to allow users to use libcurl -properly in GPL licensed environments). - -When changing existing source code, you do not alter the copyright of the -original file(s). The copyright will still be owned by the original creator(s) -or those who have been assigned copyright by the original author(s). - -By submitting a patch to the curl project, you are assumed to have the right -to the code and to be allowed by your employer or whatever to hand over that -patch/code to us. We will credit you for your changes as far as possible, to -give credit but also to keep a trace back to who made what changes. Please -always provide us with your full real name when contributing, - -## What To Read - -Source code, the man pages, the [INTERNALS -document](https://curl.se/dev/internals.html), -[TODO](https://curl.se/docs/todo.html), -[KNOWN_BUGS](https://curl.se/docs/knownbugs.html) and the [most recent -changes](https://curl.se/dev/sourceactivity.html) in git. Just lurking on -the [curl-library mailing -list](https://curl.se/mail/list.cgi?list=curl-library) will give you a -lot of insights on what's going on right now. Asking there is a good idea too. - -## Write a good patch - -### Follow code style - -When writing C code, follow the -[CODE_STYLE](https://curl.se/dev/code-style.html) already established in -the project. Consistent style makes code easier to read and mistakes less -likely to happen. Run `make checksrc` before you submit anything, to make sure -you follow the basic style. That script does not verify everything, but if it -complains you know you have work to do. - -### Non-clobbering All Over - -When you write new functionality or fix bugs, it is important that you do not -fiddle all over the source files and functions. Remember that it is likely -that other people have done changes in the same source files as you have and -possibly even in the same functions. If you bring completely new -functionality, try writing it in a new source file. If you fix bugs, try to -fix one bug at a time and send them as separate patches. - -### Write Separate Changes - -It is annoying when you get a huge patch from someone that is said to fix 511 -odd problems, but discussions and opinions do not agree with 510 of them - or -509 of them were already fixed in a different way. Then the person merging -this change needs to extract the single interesting patch from somewhere -within the huge pile of source, and that creates a lot of extra work. - -Preferably, each fix that corrects a problem should be in its own patch/commit -with its own description/commit message stating exactly what they correct so -that all changes can be selectively applied by the maintainer or other -interested parties. - -Also, separate changes enable bisecting much better for tracking problems -and regression in the future. - -### Patch Against Recent Sources - -Please try to get the latest available sources to make your patches against. -It makes the lives of the developers so much easier. The best is if you get -the most up-to-date sources from the git repository, but the latest release -archive is quite OK as well. - -### Documentation - -Writing docs is dead boring and one of the big problems with many open source -projects. But someone's gotta do it. It makes things a lot easier if you -submit a small description of your fix or your new features with every -contribution so that it can be swiftly added to the package documentation. - -The documentation is always made in man pages (nroff formatted) or plain -ASCII files. All HTML files on the website and in the release archives are -generated from the nroff/ASCII versions. - -### Test Cases - -Since the introduction of the test suite, we can quickly verify that the main -features are working as they are supposed to. To maintain this situation and -improve it, all new features and functions that are added need to be tested -in the test suite. Every feature that is added should get at least one valid -test case that verifies that it works as documented. If every submitter also -posts a few test cases, it will not end up as a heavy burden on a single person! - -If you do not have test cases or perhaps you have done something that is hard -to write tests for, do explain exactly how you have otherwise tested and -verified your changes. - -## Submit Your Changes - -### How to get your changes into the main sources - -Ideally you file a [pull request on -GitHub](https://github.com/curl/curl/pulls), but you can also send your plain -patch to [the curl-library mailing -list](https://curl.se/mail/list.cgi?list=curl-library). - -If you opt to post a patch on the mailing list, chances are someone will -convert it into a pull request for you, to have the CI jobs verify it proper -before it can be merged. Be prepared that some feedback on the proposed change -might then come on GitHub. - -Your change will be reviewed and discussed and you will be expected to correct -flaws pointed out and update accordingly, or the change risks stalling and -eventually just getting deleted without action. As a submitter of a change, -you are the owner of that change until it has been merged. - -Respond on the list or on GitHub about the change and answer questions and/or -fix nits/flaws. This is important. We will take lack of replies as a sign that -you are not anxious to get your patch accepted and we tend to simply drop such -changes. - -### About pull requests - -With github it is easy to send a [pull -request](https://github.com/curl/curl/pulls) to the curl project to have -changes merged. - -We strongly prefer pull requests to mailed patches, as it makes it a proper -git commit that is easy to merge and they are easy to track and not that easy -to lose in the flood of many emails, like they sometimes do on the mailing -lists. - -Every pull request submitted will automatically be -tested in several different ways. [See CI.md for more -information](https://github.com/curl/curl/blob/master/tests/CI.md). - -Sometimes the tests fail due to a dependency service temporarily being offline -or otherwise unavailable, eg. package downloads. In this case you can just -try to update your pull requests to rerun the tests later as described below. - -You can update your pull requests by pushing new commits or force-pushing -changes to existing commits. Force-pushing an amended commit without any -actual content changed also allows you to retrigger the tests for that commit. - -When you adjust your pull requests after review, consider squashing the -commits so that we can review the full updated version more easily. - -A pull request sent to the project might get labeled `needs-votes` by a -project maintainer. This label means that in addition to meeting all other -checks and qualifications this pull request must also receive more "votes" of -user support. More signs that people want this to happen. It could be in the -form of messages saying so, or thumbs-up reactions on GitHub. - -### Making quality changes - -Make the patch against as recent source versions as possible. - -If you have followed the tips in this document and your patch still has not -been incorporated or responded to after some weeks, consider resubmitting it -to the list or better yet: change it to a pull request. - -### Commit messages - -A short guide to how to write commit messages in the curl project. - - ---- start ---- - [area]: [short line describing the main effect] - -- empty line -- - [full description, no wider than 72 columns that describe as much as - possible as to why this change is made, and possibly what things - it fixes and everything else that is related] - -- empty line -- - [Closes/Fixes #1234 - if this closes or fixes a github issue] - [Bug: URL to source of the report or more related discussion] - [Reported-by: John Doe - credit the reporter] - [whatever-else-by: credit all helpers, finders, doers] - ---- stop ---- - -The first line is a succinct description of the change: - - - use the imperative, present tense: "change" not "changed" nor "changes" - - do not capitalize first letter - - no dot (.) at the end - -The `[area]` in the first line can be `http2`, `cookies`, `openssl` or -similar. There's no fixed list to select from but using the same "area" as -other related changes could make sense. - -Do not forget to use commit --author="" if you commit someone else's work, and -make sure that you have your own user and email setup correctly in git before -you commit - -### Write Access to git Repository - -If you are a frequent contributor, you may be given push access to the git -repository and then you will be able to push your changes straight into the git -repo instead of sending changes as pull requests or by mail as patches. - -Just ask if this is what you would want. You will be required to have posted -several high quality patches first, before you can be granted push access. - -### How To Make a Patch with git - -You need to first checkout the repository: - - git clone https://github.com/curl/curl.git - -You then proceed and edit all the files you like and you commit them to your -local repository: - - git commit [file] - -As usual, group your commits so that you commit all changes at once that -constitute a logical change. - -Once you have done all your commits and you are happy with what you see, you -can make patches out of your changes that are suitable for mailing: - - git format-patch remotes/origin/master - -This creates files in your local directory named NNNN-[name].patch for each -commit. - -Now send those patches off to the curl-library list. You can of course opt to -do that with the 'git send-email' command. - -### How To Make a Patch without git - -Keep a copy of the unmodified curl sources. Make your changes in a separate -source tree. When you think you have something that you want to offer the -curl community, use GNU diff to generate patches. - -If you have modified a single file, try something like: - - diff -u unmodified-file.c my-changed-one.c > my-fixes.diff - -If you have modified several files, possibly in different directories, you -can use diff recursively: - - diff -ur curl-original-dir curl-modified-sources-dir > my-fixes.diff - -The GNU diff and GNU patch tools exist for virtually all platforms, including -all kinds of Unixes and Windows: - -For unix-like operating systems: - - - [https://savannah.gnu.org/projects/patch/](https://savannah.gnu.org/projects/patch/) - - [https://www.gnu.org/software/diffutils/](https://www.gnu.org/software/diffutils/) - -For Windows: - - - [https://gnuwin32.sourceforge.io/packages/patch.htm](https://gnuwin32.sourceforge.io/packages/patch.htm) - - [https://gnuwin32.sourceforge.io/packages/diffutils.htm](https://gnuwin32.sourceforge.io/packages/diffutils.htm) - -### Useful resources - - [Webinar on getting code into cURL](https://www.youtube.com/watch?v=QmZ3W1d6LQI) - -## Update copyright and license information - -There is a CI job called **REUSE compliance / check** that will run on every -pull request and commit to verify that the *REUSE state* of all files are -still fine. - -This means that all files need to have their license and copyright information -clearly stated. Ideally by having the standard curl source code header, with -an accurate copyright year range and the SPDX-License-Identifier included. If -the header does not work, you can use a smaller header or as a last resort add -the information for a specific file to the `.reuse/dep5` file. - -We update copyright year ranges to end on the year of the most recent change -of the individual file. - -You can manually verify the copyright and compliance status by running the -`./scripts/copyright.pl` script in the root of the git repository. diff --git a/Engine/lib/curl/docs/CURL-DISABLE.md b/Engine/lib/curl/docs/CURL-DISABLE.md deleted file mode 100644 index 7ece3dc51..000000000 --- a/Engine/lib/curl/docs/CURL-DISABLE.md +++ /dev/null @@ -1,140 +0,0 @@ -# Code defines to disable features and protocols - -## CURL_DISABLE_ALTSVC - -Disable support for Alt-Svc: HTTP headers. - -## CURL_DISABLE_COOKIES - -Disable support for HTTP cookies. - -## CURL_DISABLE_CRYPTO_AUTH - -Disable support for authentication methods using crypto. - -## CURL_DISABLE_DICT - -Disable the DICT protocol - -## CURL_DISABLE_DOH - -Disable DNS-over-HTTPS - -## CURL_DISABLE_FILE - -Disable the FILE protocol - -## CURL_DISABLE_FTP - -Disable the FTP (and FTPS) protocol - -## CURL_DISABLE_GETOPTIONS - -Disable the `curl_easy_options` API calls that lets users get information -about existing options to `curl_easy_setopt`. - -## CURL_DISABLE_GOPHER - -Disable the GOPHER protocol. - -## CURL_DISABLE_HEADERS_API - -Disable the HTTP header API. - -## CURL_DISABLE_HSTS - -Disable the HTTP Strict Transport Security support. - -## CURL_DISABLE_HTTP - -Disable the HTTP(S) protocols. Note that this then also disable HTTP proxy -support. - -## CURL_DISABLE_HTTP_AUTH - -Disable support for all HTTP authentication methods. - -## CURL_DISABLE_IMAP - -Disable the IMAP(S) protocols. - -## CURL_DISABLE_LDAP - -Disable the LDAP(S) protocols. - -## CURL_DISABLE_LDAPS - -Disable the LDAPS protocol. - -## CURL_DISABLE_LIBCURL_OPTION - -Disable the --libcurl option from the curl tool. - -## CURL_DISABLE_MIME - -Disable MIME support. - -## CURL_DISABLE_MQTT - -Disable MQTT support. - -## CURL_DISABLE_NETRC - -Disable the netrc parser. - -## CURL_DISABLE_NTLM - -Disable support for NTLM. - -## CURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG - -Disable the auto load config support in the OpenSSL backend. - -## CURL_DISABLE_PARSEDATE - -Disable date parsing - -## CURL_DISABLE_POP3 - -Disable the POP3 protocol - -## CURL_DISABLE_PROGRESS_METER - -Disable the built-in progress meter - -## CURL_DISABLE_PROXY - -Disable support for proxies - -## CURL_DISABLE_RTSP - -Disable the RTSP protocol. - -## CURL_DISABLE_SHUFFLE_DNS - -Disable the shuffle DNS feature - -## CURL_DISABLE_SMB - -Disable the SMB(S) protocols - -## CURL_DISABLE_SMTP - -Disable the SMTP(S) protocols - -## CURL_DISABLE_SOCKETPAIR - -Disable the use of socketpair internally to allow waking up and canceling -curl_multi_poll(). - -## CURL_DISABLE_TELNET - -Disable the TELNET protocol - -## CURL_DISABLE_TFTP - -Disable the TFTP protocol - -## CURL_DISABLE_VERBOSE_STRINGS - -Disable verbose strings and error messages. diff --git a/Engine/lib/curl/docs/DEPRECATE.md b/Engine/lib/curl/docs/DEPRECATE.md deleted file mode 100644 index b40142485..000000000 --- a/Engine/lib/curl/docs/DEPRECATE.md +++ /dev/null @@ -1,46 +0,0 @@ -# Items to be removed from future curl releases - -If any of these deprecated features is a cause for concern for you, please -email the -[curl-library mailing list](https://lists.haxx.se/listinfo/curl-library) -as soon as possible and explain to us why this is a problem for you and -how your use case cannot be satisfied properly using a workaround. - -## NSS - -We remove support for building curl with the NSS TLS library in August 2023. - -- There are very few users left who use curl+NSS -- NSS has very few users outside of curl as well (primarily Firefox) -- NSS is harder than ever to find documentation for -- NSS was always "best" used with Red Hat Linux when they provided additional - features on top of the regular NSS that is not shipped by the vanilla library - -Starting in 7.82.0, building curl to use NSS configure requires the additional -flag --with-nss-deprecated in an attempt to highlight these plans. - -## NPN - -We make selecting NPN a no-op starting in August 2022. - -**Next Protocol Negotiation** is a TLS extension that was created and used for -agreeing to use the SPDY protocol (the precursor to HTTP/2) for HTTPS. In the -early days of HTTP/2, before the spec was finalized and shipped, the protocol -could be enabled using this extension with some servers. - -curl supports the NPN extension with some TLS backends since then, with a -command line option `--npn` and in libcurl with `CURLOPT_SSL_ENABLE_NPN`. - -HTTP/2 proper is made to use the ALPN (Application-Layer Protocol Negotiation) -extension and the NPN extension has no purposes anymore. The HTTP/2 spec was -published in May 2015. - -Today, use of NPN in the wild should be extremely rare and most likely totally -extinct. Chrome removed NPN support in Chrome 51, shipped in -June 2016. Removed in Firefox 53, April 2017. - -## past removals - - - Pipelining - - axTLS - - PolarSSL diff --git a/Engine/lib/curl/docs/DYNBUF.md b/Engine/lib/curl/docs/DYNBUF.md deleted file mode 100644 index a984a41e4..000000000 --- a/Engine/lib/curl/docs/DYNBUF.md +++ /dev/null @@ -1,108 +0,0 @@ -# dynbuf - -This is the internal module for creating and handling "dynamic buffers". This -means buffers that can be appended to, dynamically and grow to adapt. - -There will always be a terminating zero put at the end of the dynamic buffer. - -The `struct dynbuf` is used to hold data for each instance of a dynamic -buffer. The members of that struct **MUST NOT** be accessed or modified -without using the dedicated dynbuf API. - -## init - -```c -void Curl_dyn_init(struct dynbuf *s, size_t toobig); -``` - -This inits a struct to use for dynbuf and it cannot fail. The `toobig` value -**must** be set to the maximum size we allow this buffer instance to grow to. -The functions below will return `CURLE_OUT_OF_MEMORY` when hitting this limit. - -## free - -```c -void Curl_dyn_free(struct dynbuf *s); -``` - -Free the associated memory and clean up. After a free, the `dynbuf` struct can -be re-used to start appending new data to. - -## addn - -```c -CURLcode Curl_dyn_addn(struct dynbuf *s, const void *mem, size_t len); -``` - -Append arbitrary data of a given length to the end of the buffer. - -## add - -```c -CURLcode Curl_dyn_add(struct dynbuf *s, const char *str); -``` - -Append a C string to the end of the buffer. - -## addf - -```c -CURLcode Curl_dyn_addf(struct dynbuf *s, const char *fmt, ...); -``` - -Append a `printf()`-style string to the end of the buffer. - -## vaddf - -```c -CURLcode Curl_dyn_vaddf(struct dynbuf *s, const char *fmt, va_list ap); -``` - -Append a `vprintf()`-style string to the end of the buffer. - -## reset - -```c -void Curl_dyn_reset(struct dynbuf *s); -``` - -Reset the buffer length, but leave the allocation. - -## tail - -```c -CURLcode Curl_dyn_tail(struct dynbuf *s, size_t length); -``` - -Keep `length` bytes of the buffer tail (the last `length` bytes of the -buffer). The rest of the buffer is dropped. The specified `length` must not be -larger than the buffer length. - -## ptr - -```c -char *Curl_dyn_ptr(const struct dynbuf *s); -``` - -Returns a `char *` to the buffer if it has a length, otherwise may return -NULL. Since the buffer may be reallocated, this pointer should not be trusted -or used anymore after the next buffer manipulation call. - -## uptr - -```c -unsigned char *Curl_dyn_uptr(const struct dynbuf *s); -``` - -Returns an `unsigned char *` to the buffer if it has a length, otherwise may -return NULL. Since the buffer may be reallocated, this pointer should not be -trusted or used anymore after the next buffer manipulation call. - -## len - -```c -size_t Curl_dyn_len(const struct dynbuf *s); -``` - -Returns the length of the buffer in bytes. Does not include the terminating -zero byte. diff --git a/Engine/lib/curl/docs/EXPERIMENTAL.md b/Engine/lib/curl/docs/EXPERIMENTAL.md deleted file mode 100644 index 42b6e2142..000000000 --- a/Engine/lib/curl/docs/EXPERIMENTAL.md +++ /dev/null @@ -1,24 +0,0 @@ -# Experimental - -Some features and functionality in curl and libcurl are considered -**EXPERIMENTAL**. - -Experimental support in curl means: - -1. Experimental features are provided to allow users to try them out and - provide feedback on functionality and API etc before they ship and get - "carved in stone". -2. You must enable the feature when invoking configure as otherwise curl will - not be built with the feature present. -3. We strongly advice against using this feature in production. -4. **We reserve the right to change behavior** of the feature without sticking - to our API/ABI rules as we do for regular features, as long as it is marked - experimental. -5. Experimental features are clearly marked so in documentation. Beware. - -## Experimental features right now - - - The Hyper HTTP backend - - HTTP/3 support and options - - `CURLSSLOPT_NATIVE_CA` (No configure option, feature built in when supported) - - The rustls backend diff --git a/Engine/lib/curl/docs/FAQ b/Engine/lib/curl/docs/FAQ deleted file mode 100644 index 375715dc9..000000000 --- a/Engine/lib/curl/docs/FAQ +++ /dev/null @@ -1,1544 +0,0 @@ - _ _ ____ _ - ___| | | | _ \| | - / __| | | | |_) | | - | (__| |_| | _ <| |___ - \___|\___/|_| \_\_____| - -FAQ - - 1. Philosophy - 1.1 What is cURL? - 1.2 What is libcurl? - 1.3 What is curl not? - 1.4 When will you make curl do XXXX ? - 1.5 Who makes curl? - 1.6 What do you get for making curl? - 1.7 What about CURL from curl.com? - 1.8 I have a problem, who do I mail? - 1.9 Where do I buy commercial support for curl? - 1.10 How many are using curl? - 1.11 Why do you not update ca-bundle.crt - 1.12 I have a problem, who can I chat with? - 1.13 curl's ECCN number? - 1.14 How do I submit my patch? - 1.15 How do I port libcurl to my OS? - - 2. Install Related Problems - 2.1 configure fails when using static libraries - 2.2 Does curl work/build with other SSL libraries? - 2.4 Does curl support SOCKS (RFC 1928) ? - - 3. Usage Problems - 3.1 curl: (1) SSL is disabled, https: not supported - 3.2 How do I tell curl to resume a transfer? - 3.3 Why does my posting using -F not work? - 3.4 How do I tell curl to run custom FTP commands? - 3.5 How can I disable the Accept: */* header? - 3.6 Does curl support ASP, XML, XHTML or HTML version Y? - 3.7 Can I use curl to delete/rename a file through FTP? - 3.8 How do I tell curl to follow HTTP redirects? - 3.9 How do I use curl in my favorite programming language? - 3.10 What about SOAP, WebDAV, XML-RPC or similar protocols over HTTP? - 3.11 How do I POST with a different Content-Type? - 3.12 Why do FTP-specific features over HTTP proxy fail? - 3.13 Why do my single/double quotes fail? - 3.14 Does curl support JavaScript or PAC (automated proxy config)? - 3.15 Can I do recursive fetches with curl? - 3.16 What certificates do I need when I use SSL? - 3.17 How do I list the root directory of an FTP server? - 3.18 Can I use curl to send a POST/PUT and not wait for a response? - 3.19 How do I get HTTP from a host using a specific IP address? - 3.20 How to SFTP from my user's home directory? - 3.21 Protocol xxx not supported or disabled in libcurl - 3.22 curl -X gives me HTTP problems - - 4. Running Problems - 4.2 Why do I get problems when I use & or % in the URL? - 4.3 How can I use {, }, [ or ] to specify multiple URLs? - 4.4 Why do I get downloaded data even though the web page does not exist? - 4.5 Why do I get return code XXX from an HTTP server? - 4.5.1 "400 Bad Request" - 4.5.2 "401 Unauthorized" - 4.5.3 "403 Forbidden" - 4.5.4 "404 Not Found" - 4.5.5 "405 Method Not Allowed" - 4.5.6 "301 Moved Permanently" - 4.6 Can you tell me what error code 142 means? - 4.7 How do I keep user names and passwords secret in curl command lines? - 4.8 I found a bug - 4.9 curl cannot authenticate to a server that requires NTLM? - 4.10 My HTTP request using HEAD, PUT or DELETE does not work - 4.11 Why do my HTTP range requests return the full document? - 4.12 Why do I get "certificate verify failed" ? - 4.13 Why is curl -R on Windows one hour off? - 4.14 Redirects work in browser but not with curl - 4.15 FTPS does not work - 4.16 My HTTP POST or PUT requests are slow - 4.17 Non-functional connect timeouts on Windows - 4.18 file:// URLs containing drive letters (Windows, NetWare) - 4.19 Why does not curl return an error when the network cable is unplugged? - 4.20 curl does not return error for HTTP non-200 responses - - 5. libcurl Issues - 5.1 Is libcurl thread-safe? - 5.2 How can I receive all data into a large memory chunk? - 5.3 How do I fetch multiple files with libcurl? - 5.4 Does libcurl do Winsock initialization on win32 systems? - 5.5 Does CURLOPT_WRITEDATA and CURLOPT_READDATA work on win32 ? - 5.6 What about Keep-Alive or persistent connections? - 5.7 Link errors when building libcurl on Windows - 5.8 libcurl.so.X: open failed: No such file or directory - 5.9 How does libcurl resolve host names? - 5.10 How do I prevent libcurl from writing the response to stdout? - 5.11 How do I make libcurl not receive the whole HTTP response? - 5.12 Can I make libcurl fake or hide my real IP address? - 5.13 How do I stop an ongoing transfer? - 5.14 Using C++ non-static functions for callbacks? - 5.15 How do I get an FTP directory listing? - 5.16 I want a different time-out - 5.17 Can I write a server with libcurl? - 5.18 Does libcurl use threads? - - 6. License Issues - 6.1 I have a GPL program, can I use the libcurl library? - 6.2 I have a closed-source program, can I use the libcurl library? - 6.3 I have a BSD licensed program, can I use the libcurl library? - 6.4 I have a program that uses LGPL libraries, can I use libcurl? - 6.5 Can I modify curl/libcurl for my program and keep the changes secret? - 6.6 Can you please change the curl/libcurl license to XXXX? - 6.7 What are my obligations when using libcurl in my commercial apps? - - 7. PHP/CURL Issues - 7.1 What is PHP/CURL? - 7.2 Who wrote PHP/CURL? - 7.3 Can I perform multiple requests using the same handle? - 7.4 Does PHP/CURL have dependencies? - - 8. Development - 8.1 Why does curl use C89? - 8.2 Will curl be rewritten? - -============================================================================== - -1. Philosophy - - 1.1 What is cURL? - - cURL is the name of the project. The name is a play on 'Client for URLs', - originally with URL spelled in uppercase to make it obvious it deals with - URLs. The fact it can also be read as 'see URL' also helped, it works as - an abbreviation for "Client URL Request Library" or why not the recursive - version: "curl URL Request Library". - - The cURL project produces two products: - - libcurl - - A client-side URL transfer library, supporting DICT, FILE, FTP, FTPS, - GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S, - RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET and TFTP. - - libcurl supports HTTPS certificates, HTTP POST, HTTP PUT, FTP uploading, - Kerberos, SPNEGO, HTTP form based upload, proxies, cookies, user+password - authentication, file transfer resume, http proxy tunneling and more. - - libcurl is highly portable, it builds and works identically on numerous - platforms, including Solaris, NetBSD, FreeBSD, OpenBSD, Darwin, HP-UX, - IRIX, AIX, Tru64, Linux, UnixWare, HURD, Windows, Amiga, OS/2, macOS, - Ultrix, QNX, OpenVMS, RISC OS, Novell NetWare, DOS, Symbian, OSF, Android, - Minix, IBM TPF and more... - - libcurl is free, thread-safe, IPv6 compatible, feature rich, well - supported and fast. - - curl - - A command line tool for getting or sending data using URL syntax. - - Since curl uses libcurl, curl supports the same wide range of common - Internet protocols that libcurl does. - - We pronounce curl with an initial k sound. It rhymes with words like girl - and earl. This is a short WAV file to help you: - - https://media.merriam-webster.com/soundc11/c/curl0001.wav - - There are numerous sub-projects and related projects that also use the word - curl in the project names in various combinations, but you should take - notice that this FAQ is directed at the command-line tool named curl (and - libcurl the library), and may therefore not be valid for other curl-related - projects. (There is however a small section for the PHP/CURL in this FAQ.) - - 1.2 What is libcurl? - - libcurl is a reliable and portable library for doing Internet data transfers - using one or more of its supported Internet protocols. - - You can use libcurl freely in your application, be it open source, - commercial or closed-source. - - libcurl is most probably the most portable, most powerful and most often - used C-based multi-platform file transfer library on this planet - be it - open source or commercial. - - 1.3 What is curl not? - - curl is not a wget clone. That is a common misconception. Never, during - curl's development, have we intended curl to replace wget or compete on its - market. curl is targeted at single-shot file transfers. - - curl is not a website mirroring program. If you want to use curl to mirror - something: fine, go ahead and write a script that wraps around curl or use - libcurl to make it reality. - - curl is not an FTP site mirroring program. Sure, get and send FTP with curl - but if you want systematic and sequential behavior you should write a - script (or write a new program that interfaces libcurl) and do it. - - curl is not a PHP tool, even though it works perfectly well when used from - or with PHP (when using the PHP/CURL module). - - curl is not a program for a single operating system. curl exists, compiles, - builds and runs under a wide range of operating systems, including all - modern Unixes (and a bunch of older ones too), Windows, Amiga, OS/2, macOS, - QNX etc. - - 1.4 When will you make curl do XXXX ? - - We love suggestions of what to change in order to make curl and libcurl - better. We do however believe in a few rules when it comes to the future of - curl: - - curl -- the command line tool -- is to remain a non-graphical command line - tool. If you want GUIs or fancy scripting capabilities, you should look for - another tool that uses libcurl. - - We do not add things to curl that other small and available tools already do - well at the side. curl's output can be piped into another program or - redirected to another file for the next program to interpret. - - We focus on protocol related issues and improvements. If you want to do more - magic with the supported protocols than curl currently does, chances are - good we will agree. If you want to add more protocols, we may agree. - - If you want someone else to do all the work while you wait for us to - implement it for you, that is not a friendly attitude. We spend a - considerable time already on maintaining and developing curl. In order to - get more out of us, you should consider trading in some of your time and - effort in return. Simply go to the GitHub repository which resides at - https://github.com/curl/curl, fork the project, and create pull requests - with your proposed changes. - - If you write the code, chances are better that it will get into curl faster. - - 1.5 Who makes curl? - - curl and libcurl are not made by any single individual. Daniel Stenberg is - project leader and main developer, but other persons' submissions are - important and crucial. Anyone can contribute and post their changes and - improvements and have them inserted in the main sources (of course on the - condition that developers agree that the fixes are good). - - The full list of all contributors is found in the docs/THANKS file. - - curl is developed by a community, with Daniel at the wheel. - - 1.6 What do you get for making curl? - - Project cURL is entirely free and open. We do this voluntarily, mostly in - our spare time. Companies may pay individual developers to work on curl. - This is not controlled by nor supervised in any way by the curl project. - - We get help from companies. Haxx provides website, bandwidth, mailing lists - etc, GitHub hosts the primary git repository and other services like the bug - tracker at https://github.com/curl/curl. Also again, some companies have - sponsored certain parts of the development in the past and I hope some will - continue to do so in the future. - - If you want to support our project, consider a donation or a banner-program - or even better: by helping us with coding, documenting or testing etc. - - See also: https://curl.se/sponsors.html - - 1.7 What about CURL from curl.com? - - During the summer of 2001, curl.com was busy advertising their client-side - programming language for the web, named CURL. - - We are in no way associated with curl.com or their CURL programming - language. - - Our project name curl has been in effective use since 1998. We were not the - first computer related project to use the name "curl" and do not claim any - rights to the name. - - We recognize that we will be living in parallel with curl.com and wish them - every success. - - 1.8 I have a problem, who do I mail? - - Please do not mail any single individual unless you really need to. Keep - curl-related questions on a suitable mailing list. All available mailing - lists are listed in the MANUAL document and online at - https://curl.se/mail/ - - Keeping curl-related questions and discussions on mailing lists allows - others to join in and help, to share their ideas, to contribute their - suggestions and to spread their wisdom. Keeping discussions on public mailing - lists also allows for others to learn from this (both current and future - users thanks to the web based archives of the mailing lists), thus saving us - from having to repeat ourselves even more. Thanks for respecting this. - - If you have found or simply suspect a security problem in curl or libcurl, - submit all the details at https://hackerone.one/curl. On there we keep the - issue private while we investigate, confirm it, work and validate a fix and - agree on a time schedule for publication etc. That way we produce a fix in a - timely manner before the flaw is announced to the world, reducing the impact - the problem risks having on existing users. - - Security issues can also be taking to the curl security team by emailing - security at curl.se (closed list of receivers, mails are not disclosed). - - 1.9 Where do I buy commercial support for curl? - - curl is fully open source. It means you can hire any skilled engineer to fix - your curl-related problems. - - We list available alternatives on the curl website: - https://curl.se/support.html - - 1.10 How many are using curl? - - It is impossible to tell. - - We do not know how many users that knowingly have installed and use curl. - - We do not know how many users that use curl without knowing that they are in - fact using it. - - We do not know how many users that downloaded or installed curl and then - never use it. - - In 2020, we estimate that curl runs in roughly ten billion installations - world wide. - - 1.11 Why do you not update ca-bundle.crt - - In the cURL project we have decided not to attempt to keep this file updated - (or even present) since deciding what to add to a ca cert bundle is an - undertaking we have not been ready to accept, and the one we can get from - Mozilla is perfectly fine so there is no need to duplicate that work. - - Today, with many services performed over HTTPS, every operating system - should come with a default ca cert bundle that can be deemed somewhat - trustworthy and that collection (if reasonably updated) should be deemed to - be a lot better than a private curl version. - - If you want the most recent collection of ca certs that Mozilla Firefox - uses, we recommend that you extract the collection yourself from Mozilla - Firefox (by running 'make ca-bundle), or by using our online service setup - for this purpose: https://curl.se/docs/caextract.html - - 1.12 I have a problem who, can I chat with? - - There is a bunch of friendly people hanging out in the #curl channel on the - IRC network libera.chat. If you are polite and nice, chances are good that - you can get -- or provide -- help instantly. - - 1.13 curl's ECCN number? - - The US government restricts exports of software that contains or uses - cryptography. When doing so, the Export Control Classification Number (ECCN) - is used to identify the level of export control etc. - - Apache Software Foundation gives a good explanation of ECCNs at - https://www.apache.org/dev/crypto.html - - We believe curl's number might be ECCN 5D002, another possibility is - 5D992. It seems necessary to write them (the authority that administers ECCN - numbers), asking to confirm. - - Comprehensible explanations of the meaning of such numbers and how to obtain - them (resp.) are here - - https://www.bis.doc.gov/licensing/exportingbasics.htm - https://www.bis.doc.gov/licensing/do_i_needaneccn.html - - An incomprehensible description of the two numbers above is here - https://www.bis.doc.gov/index.php/documents/new-encryption/1653-ccl5-pt2-3 - - 1.14 How do I submit my patch? - - We strongly encourage you to submit changes and improvements directly as - "pull requests" on GitHub: https://github.com/curl/curl/pulls - - If you for any reason cannot or will not deal with GitHub, send your patch to - the curl-library mailing list. We are many subscribers there and there are - lots of people who can review patches, comment on them and "receive" them - properly. - - Lots of more details are found in the CONTRIBUTE.md and INTERNALS.md - documents. - - 1.15 How do I port libcurl to my OS? - - Here's a rough step-by-step: - - 1. copy a suitable lib/config-*.h file as a start to lib/config-[youros].h - - 2. edit lib/config-[youros].h to match your OS and setup - - 3. edit lib/curl_setup.h to include config-[youros].h when your OS is - detected by the preprocessor, in the style others already exist - - 4. compile lib/*.c and make them into a library - - -2. Install Related Problems - - 2.1 configure fails when using static libraries - - You may find that configure fails to properly detect the entire dependency - chain of libraries when you provide static versions of the libraries that - configure checks for. - - The reason why static libraries is much harder to deal with is that for them - we do not get any help but the script itself must know or check what more - libraries that are needed (with shared libraries, that dependency "chain" is - handled automatically). This is a error-prone process and one that also - tends to vary over time depending on the release versions of the involved - components and may also differ between operating systems. - - For that reason, configure does few attempts to actually figure this out and - you are instead encouraged to set LIBS and LDFLAGS accordingly when you - invoke configure, and point out the needed libraries and set the necessary - flags yourself. - - 2.2 Does curl work with other SSL libraries? - - curl has been written to use a generic SSL function layer internally, and - that SSL functionality can then be provided by one out of many different SSL - backends. - - curl can be built to use one of the following SSL alternatives: OpenSSL, - libressl, BoringSSL, GnuTLS, wolfSSL, NSS, mbedTLS, Secure - Transport (native iOS/OS X), Schannel (native Windows), GSKit (native IBM - i), BearSSL, or Rustls. They all have their pros and cons, and we try to - maintain a comparison of them here: https://curl.se/docs/ssl-compared.html - - 2.4 Does curl support SOCKS (RFC 1928) ? - - Yes, SOCKS 4 and 5 are supported. - -3. Usage problems - - 3.1 curl: (1) SSL is disabled, https: not supported - - If you get this output when trying to get anything from an https:// server, - it means that the instance of curl/libcurl that you are using was built - without support for this protocol. - - This could have happened if the configure script that was run at build time - could not find all libs and include files curl requires for SSL to work. If - the configure script fails to find them, curl is simply built without SSL - support. - - To get the https:// support into a curl that was previously built but that - reports that https:// is not supported, you should dig through the document - and logs and check out why the configure script does not find the SSL libs - and/or include files. - - Also, check out the other paragraph in this FAQ labeled "configure does not - find OpenSSL even when it is installed". - - 3.2 How do I tell curl to resume a transfer? - - curl supports resumed transfers both ways on both FTP and HTTP. - Try the -C option. - - 3.3 Why does my posting using -F not work? - - You cannot arbitrarily use -F or -d, the choice between -F or -d depends on - the HTTP operation you need curl to do and what the web server that will - receive your post expects. - - If the form you are trying to submit uses the type 'multipart/form-data', - then and only then you must use the -F type. In all the most common cases, - you should use -d which then causes a posting with the type - 'application/x-www-form-urlencoded'. - - This is described in some detail in the MANUAL and TheArtOfHttpScripting - documents, and if you do not understand it the first time, read it again - before you post questions about this to the mailing list. Also, try reading - through the mailing list archives for old postings and questions regarding - this. - - 3.4 How do I tell curl to run custom FTP commands? - - You can tell curl to perform optional commands both before and/or after a - file transfer. Study the -Q/--quote option. - - Since curl is used for file transfers, you do not normally use curl to - perform FTP commands without transferring anything. Therefore you must - always specify a URL to transfer to/from even when doing custom FTP - commands, or use -I which implies the "no body" option sent to libcurl. - - 3.5 How can I disable the Accept: */* header? - - You can change all internally generated headers by adding a replacement with - the -H/--header option. By adding a header with empty contents you safely - disable that one. Use -H "Accept:" to disable that specific header. - - 3.6 Does curl support ASP, XML, XHTML or HTML version Y? - - To curl, all contents are alike. It does not matter how the page was - generated. It may be ASP, PHP, Perl, shell-script, SSI or plain HTML - files. There is no difference to curl and it does not even know what kind of - language that generated the page. - - See also item 3.14 regarding JavaScript. - - 3.7 Can I use curl to delete/rename a file through FTP? - - Yes. You specify custom FTP commands with -Q/--quote. - - One example would be to delete a file after you have downloaded it: - - curl -O ftp://download.com/coolfile -Q '-DELE coolfile' - - or rename a file after upload: - - curl -T infile ftp://upload.com/dir/ -Q "-RNFR infile" -Q "-RNTO newname" - - 3.8 How do I tell curl to follow HTTP redirects? - - curl does not follow so-called redirects by default. The Location: header - that informs the client about this is only interpreted if you are using the - -L/--location option. As in: - - curl -L http://redirector.com - - Not all redirects are HTTP ones, see 4.14 - - 3.9 How do I use curl in my favorite programming language? - - Many programming languages have interfaces/bindings that allow you to use - curl without having to use the command line tool. If you are fluent in such - a language, you may prefer to use one of these interfaces instead. - - Find out more about which languages that support curl directly, and how to - install and use them, in the libcurl section of the curl website: - https://curl.se/libcurl/ - - All the various bindings to libcurl are made by other projects and people, - outside of the cURL project. The cURL project itself only produces libcurl - with its plain C API. If you do not find anywhere else to ask you can ask - about bindings on the curl-library list too, but be prepared that people on - that list may not know anything about bindings. - - In December 2021, there were interfaces available for the following - languages: Ada95, Basic, C, C++, Ch, Cocoa, D, Delphi, Dylan, Eiffel, - Euphoria, Falcon, Ferite, Gambas, glib/GTK+, Go, Guile, Harbour, Haskell, - Java, Julia, Lisp, Lua, Mono, .NET, node.js, Object-Pascal, OCaml, Pascal, - Perl, PHP, PostgreSQL, Python, R, Rexx, Ring, RPG, Ruby, Rust, Scheme, - Scilab, S-Lang, Smalltalk, SP-Forth, SPL, Tcl, Visual Basic, Visual FoxPro, - Q, wxwidgets, XBLite and Xoho. By the time you read this, additional ones - may have appeared. - - 3.10 What about SOAP, WebDAV, XML-RPC or similar protocols over HTTP? - - curl adheres to the HTTP spec, which basically means you can play with *any* - protocol that is built on top of HTTP. Protocols such as SOAP, WEBDAV and - XML-RPC are all such ones. You can use -X to set custom requests and -H to - set custom headers (or replace internally generated ones). - - Using libcurl is of course just as good and you would just use the proper - library options to do the same. - - 3.11 How do I POST with a different Content-Type? - - You can always replace the internally generated headers with -H/--header. - To make a simple HTTP POST with text/xml as content-type, do something like: - - curl -d "datatopost" -H "Content-Type: text/xml" [URL] - - 3.12 Why do FTP-specific features over HTTP proxy fail? - - Because when you use an HTTP proxy, the protocol spoken on the network will - be HTTP, even if you specify an FTP URL. This effectively means that you - normally cannot use FTP-specific features such as FTP upload and FTP quote - etc. - - There is one exception to this rule, and that is if you can "tunnel through" - the given HTTP proxy. Proxy tunneling is enabled with a special option (-p) - and is generally not available as proxy admins usually disable tunneling to - ports other than 443 (which is used for HTTPS access through proxies). - - 3.13 Why do my single/double quotes fail? - - To specify a command line option that includes spaces, you might need to - put the entire option within quotes. Like in: - - curl -d " with spaces " url.com - - or perhaps - - curl -d ' with spaces ' url.com - - Exactly what kind of quotes and how to do this is entirely up to the shell - or command line interpreter that you are using. For most unix shells, you - can more or less pick either single (') or double (") quotes. For - Windows/DOS command prompts you must use double (") quotes, and if the - option string contains inner double quotes you can escape them with a - backslash. - - For Windows powershell the arguments are not always passed on as expected - because curl is not a powershell script. You may or may not be able to use - single quotes. To escape inner double quotes seems to require a - backslash-backtick escape sequence and the outer quotes as double quotes. - - Please study the documentation for your particular environment. Examples in - the curl docs will use a mix of both of these as shown above. You must - adjust them to work in your environment. - - Remember that curl works and runs on more operating systems than most single - individuals have ever tried. - - 3.14 Does curl support JavaScript or PAC (automated proxy config)? - - Many web pages do magic stuff using embedded JavaScript. curl and libcurl - have no built-in support for that, so it will be treated just like any other - contents. - - .pac files are a Netscape invention and are sometimes used by organizations - to allow them to differentiate which proxies to use. The .pac contents is - just a JavaScript program that gets invoked by the browser and that returns - the name of the proxy to connect to. Since curl does not support JavaScript, - it cannot support .pac proxy configuration either. - - Some workarounds usually suggested to overcome this JavaScript dependency: - - Depending on the JavaScript complexity, write up a script that translates it - to another language and execute that. - - Read the JavaScript code and rewrite the same logic in another language. - - Implement a JavaScript interpreter, people have successfully used the - Mozilla JavaScript engine in the past. - - Ask your admins to stop this, for a static proxy setup or similar. - - 3.15 Can I do recursive fetches with curl? - - No. curl itself has no code that performs recursive operations, such as - those performed by wget and similar tools. - - There exists wrapper scripts with that functionality (for example the - curlmirror perl script), and you can write programs based on libcurl to do - it, but the command line tool curl itself cannot. - - 3.16 What certificates do I need when I use SSL? - - There are three different kinds of "certificates" to keep track of when we - talk about using SSL-based protocols (HTTPS or FTPS) using curl or libcurl. - - CLIENT CERTIFICATE - - The server you communicate with may require that you can provide this in - order to prove that you actually are who you claim to be. If the server - does not require this, you do not need a client certificate. - - A client certificate is always used together with a private key, and the - private key has a pass phrase that protects it. - - SERVER CERTIFICATE - - The server you communicate with has a server certificate. You can and should - verify this certificate to make sure that you are truly talking to the real - server and not a server impersonating it. - - CERTIFICATE AUTHORITY CERTIFICATE ("CA cert") - - You often have several CA certs in a CA cert bundle that can be used to - verify a server certificate that was signed by one of the authorities in the - bundle. curl does not come with a CA cert bundle but most curl installs - provide one. You can also override the default. - - The server certificate verification process is made by using a Certificate - Authority certificate ("CA cert") that was used to sign the server - certificate. Server certificate verification is enabled by default in curl - and libcurl and is often the reason for problems as explained in FAQ entry - 4.12 and the SSLCERTS document - (https://curl.se/docs/sslcerts.html). Server certificates that are - "self-signed" or otherwise signed by a CA that you do not have a CA cert - for, cannot be verified. If the verification during a connect fails, you are - refused access. You then need to explicitly disable the verification to - connect to the server. - - 3.17 How do I list the root directory of an FTP server? - - There are two ways. The way defined in the RFC is to use an encoded slash - in the first path part. List the "/tmp" directory like this: - - curl ftp://ftp.sunet.se/%2ftmp/ - - or the not-quite-kosher-but-more-readable way, by simply starting the path - section of the URL with a slash: - - curl ftp://ftp.sunet.se//tmp/ - - 3.18 Can I use curl to send a POST/PUT and not wait for a response? - - No. - - You can easily write your own program using libcurl to do such stunts. - - 3.19 How do I get HTTP from a host using a specific IP address? - - For example, you may be trying out a website installation that is not yet in - the DNS. Or you have a site using multiple IP addresses for a given host - name and you want to address a specific one out of the set. - - Set a custom Host: header that identifies the server name you want to reach - but use the target IP address in the URL: - - curl --header "Host: www.example.com" http://127.0.0.1/ - - You can also opt to add faked host name entries to curl with the --resolve - option. That has the added benefit that things like redirects will also work - properly. The above operation would instead be done as: - - curl --resolve www.example.com:80:127.0.0.1 http://www.example.com/ - - 3.20 How to SFTP from my user's home directory? - - Contrary to how FTP works, SFTP and SCP URLs specify the exact directory to - work with. It means that if you do not specify that you want the user's home - directory, you get the actual root directory. - - To specify a file in your user's home directory, you need to use the correct - URL syntax which for SFTP might look similar to: - - curl -O -u user:password sftp://example.com/~/file.txt - - and for SCP it is just a different protocol prefix: - - curl -O -u user:password scp://example.com/~/file.txt - - 3.21 Protocol xxx not supported or disabled in libcurl - - When passing on a URL to curl to use, it may respond that the particular - protocol is not supported or disabled. The particular way this error message - is phrased is because curl does not make a distinction internally of whether - a particular protocol is not supported (i.e. never got any code added that - knows how to speak that protocol) or if it was explicitly disabled. curl can - be built to only support a given set of protocols, and the rest would then - be disabled or not supported. - - Note that this error will also occur if you pass a wrongly spelled protocol - part as in "htpt://example.com" or as in the less evident case if you prefix - the protocol part with a space as in " http://example.com/". - - 3.22 curl -X gives me HTTP problems - - In normal circumstances, -X should hardly ever be used. - - By default you use curl without explicitly saying which request method to - use when the URL identifies an HTTP transfer. If you just pass in a URL like - "curl http://example.com" it will use GET. If you use -d or -F curl will use - POST, -I will cause a HEAD and -T will make it a PUT. - - If for whatever reason you are not happy with these default choices that curl - does for you, you can override those request methods by specifying -X - [WHATEVER]. This way you can for example send a DELETE by doing "curl -X - DELETE [URL]". - - It is thus pointless to do "curl -XGET [URL]" as GET would be used - anyway. In the same vein it is pointless to do "curl -X POST -d data - [URL]"... But you can make a fun and somewhat rare request that sends a - request-body in a GET request with something like "curl -X GET -d data - [URL]" - - Note that -X does not actually change curl's behavior as it only modifies the - actual string sent in the request, but that may of course trigger a - different set of events. - - Accordingly, by using -XPOST on a command line that for example would follow - a 303 redirect, you will effectively prevent curl from behaving - correctly. Be aware. - - -4. Running Problems - - 4.2 Why do I get problems when I use & or % in the URL? - - In general Unix shells, the & symbol is treated specially and when used, it - runs the specified command in the background. To safely send the & as a part - of a URL, you should quote the entire URL by using single (') or double (") - quotes around it. Similar problems can also occur on some shells with other - characters, including ?*!$~(){}<>\|;`. When in doubt, quote the URL. - - An example that would invoke a remote CGI that uses &-symbols could be: - - curl 'http://www.altavista.com/cgi-bin/query?text=yes&q=curl' - - In Windows, the standard DOS shell treats the percent sign specially and you - need to use TWO percent signs for each single one you want to use in the - URL. - - If you want a literal percent sign to be part of the data you pass in a POST - using -d/--data you must encode it as '%25' (which then also needs the - percent sign doubled on Windows machines). - - 4.3 How can I use {, }, [ or ] to specify multiple URLs? - - Because those letters have a special meaning to the shell, to be used in - a URL specified to curl you must quote them. - - An example that downloads two URLs (sequentially) would be: - - curl '{curl,www}.haxx.se' - - To be able to use those characters as actual parts of the URL (without using - them for the curl URL "globbing" system), use the -g/--globoff option: - - curl -g 'www.site.com/weirdname[].html' - - 4.4 Why do I get downloaded data even though the web page does not exist? - - curl asks remote servers for the page you specify. If the page does not exist - at the server, the HTTP protocol defines how the server should respond and - that means that headers and a "page" will be returned. That is simply how - HTTP works. - - By using the --fail option you can tell curl explicitly to not get any data - if the HTTP return code does not say success. - - 4.5 Why do I get return code XXX from an HTTP server? - - RFC2616 clearly explains the return codes. This is a short transcript. Go - read the RFC for exact details: - - 4.5.1 "400 Bad Request" - - The request could not be understood by the server due to malformed - syntax. The client SHOULD NOT repeat the request without modifications. - - 4.5.2 "401 Unauthorized" - - The request requires user authentication. - - 4.5.3 "403 Forbidden" - - The server understood the request, but is refusing to fulfill it. - Authorization will not help and the request SHOULD NOT be repeated. - - 4.5.4 "404 Not Found" - - The server has not found anything matching the Request-URI. No indication - is given as to whether the condition is temporary or permanent. - - 4.5.5 "405 Method Not Allowed" - - The method specified in the Request-Line is not allowed for the resource - identified by the Request-URI. The response MUST include an Allow header - containing a list of valid methods for the requested resource. - - 4.5.6 "301 Moved Permanently" - - If you get this return code and an HTML output similar to this: - -

Moved Permanently

The document has moved
here. - - it might be because you requested a directory URL but without the trailing - slash. Try the same operation again _with_ the trailing URL, or use the - -L/--location option to follow the redirection. - - 4.6 Can you tell me what error code 142 means? - - All curl error codes are described at the end of the man page, in the - section called "EXIT CODES". - - Error codes that are larger than the highest documented error code means - that curl has exited due to a crash. This is a serious error, and we - appreciate a detailed bug report from you that describes how we could go - ahead and repeat this. - - 4.7 How do I keep user names and passwords secret in curl command lines? - - This problem has two sides: - - The first part is to avoid having clear-text passwords in the command line - so that they do not appear in 'ps' outputs and similar. That is easily - avoided by using the "-K" option to tell curl to read parameters from a file - or stdin to which you can pass the secret info. curl itself will also - attempt to "hide" the given password by blanking out the option - this - does not work on all platforms. - - To keep the passwords in your account secret from the rest of the world is - not a task that curl addresses. You could of course encrypt them somehow to - at least hide them from being read by human eyes, but that is not what - anyone would call security. - - Also note that regular HTTP (using Basic authentication) and FTP passwords - are sent as cleartext across the network. All it takes for anyone to fetch - them is to listen on the network. Eavesdropping is easy. Use more secure - authentication methods (like Digest, Negotiate or even NTLM) or consider the - SSL-based alternatives HTTPS and FTPS. - - 4.8 I found a bug - - It is not a bug if the behavior is documented. Read the docs first. - Especially check out the KNOWN_BUGS file, it may be a documented bug. - - If it is a problem with a binary you have downloaded or a package for your - particular platform, try contacting the person who built the package/archive - you have. - - If there is a bug, read the BUGS document first. Then report it as described - in there. - - 4.9 curl cannot authenticate to a server that requires NTLM? - - NTLM support requires OpenSSL, GnuTLS, mbedTLS, NSS, Secure Transport, or - Microsoft Windows libraries at build-time to provide this functionality. - - 4.10 My HTTP request using HEAD, PUT or DELETE does not work - - Many web servers allow or demand that the administrator configures the - server properly for these requests to work on the web server. - - Some servers seem to support HEAD only on certain kinds of URLs. - - To fully grasp this, try the documentation for the particular server - software you are trying to interact with. This is not anything curl can do - anything about. - - 4.11 Why do my HTTP range requests return the full document? - - Because the range may not be supported by the server, or the server may - choose to ignore it and return the full document anyway. - - 4.12 Why do I get "certificate verify failed" ? - - When you invoke curl and get an error 60 error back it means that curl - could not verify that the server's certificate was good. curl verifies the - certificate using the CA cert bundle and verifying for which names the - certificate has been granted. - - To completely disable the certificate verification, use -k. This does - however enable man-in-the-middle attacks and makes the transfer INSECURE. - We strongly advise against doing this for more than experiments. - - If you get this failure with a CA cert bundle installed and used, the - server's certificate might not be signed by one of the CA's in your CA - store. It might for example be self-signed. You then correct this problem by - obtaining a valid CA cert for the server. Or again, decrease the security by - disabling this check. - - At times, you find that the verification works in your favorite browser but - fails in curl. When this happens, the reason is usually that the server - sends an incomplete cert chain. The server is mandated to send all - "intermediate certificates" but does not. This typically works with browsers - anyway since they A) cache such certs and B) supports AIA which downloads - such missing certificates on demand. This is a server misconfiguration. A - good way to figure out if this is the case it to use the SSL Labs server - test and check the certificate chain: https://www.ssllabs.com/ssltest/ - - Details are also in the SSLCERTS.md document, found online here: - https://curl.se/docs/sslcerts.html - - 4.13 Why is curl -R on Windows one hour off? - - Since curl 7.53.0 this issue should be fixed as long as curl was built with - any modern compiler that allows for a 64-bit curl_off_t type. For older - compilers or prior curl versions it may set a time that appears one hour off. - This happens due to a flaw in how Windows stores and uses file modification - times and it is not easily worked around. For more details read this: - https://www.codeproject.com/Articles/1144/Beating-the-Daylight-Savings-Time-bug-and-getting - - 4.14 Redirects work in browser but not with curl - - curl supports HTTP redirects well (see item 3.8). Browsers generally support - at least two other ways to perform redirects that curl does not: - - Meta tags. You can write an HTML tag that will cause the browser to redirect - to another given URL after a certain time. - - JavaScript. You can write a JavaScript program embedded in an HTML page that - redirects the browser to another given URL. - - There is no way to make curl follow these redirects. You must either - manually figure out what the page is set to do, or write a script that parses - the results and fetches the new URL. - - 4.15 FTPS does not work - - curl supports FTPS (sometimes known as FTP-SSL) both implicit and explicit - mode. - - When a URL is used that starts with FTPS://, curl assumes implicit SSL on - the control connection and will therefore immediately connect and try to - speak SSL. FTPS:// connections default to port 990. - - To use explicit FTPS, you use an FTP:// URL and the --ftp-ssl option (or one - of its related flavors). This is the most common method, and the one - mandated by RFC4217. This kind of connection will then of course use the - standard FTP port 21 by default. - - 4.16 My HTTP POST or PUT requests are slow - - libcurl makes all POST and PUT requests (except for POST requests with a - tiny request body) use the "Expect: 100-continue" header. This header - allows the server to deny the operation early so that libcurl can bail out - before having to send any data. This is useful in authentication - cases and others. - - However, many servers do not implement the Expect: stuff properly and if the - server does not respond (positively) within 1 second libcurl will continue - and send off the data anyway. - - You can disable libcurl's use of the Expect: header the same way you disable - any header, using -H / CURLOPT_HTTPHEADER, or by forcing it to use HTTP 1.0. - - 4.17 Non-functional connect timeouts - - In most Windows setups having a timeout longer than 21 seconds make no - difference, as it will only send 3 TCP SYN packets and no more. The second - packet sent three seconds after the first and the third six seconds after - the second. No more than three packets are sent, no matter how long the - timeout is set. - - See option TcpMaxConnectRetransmissions on this page: - https://support.microsoft.com/en-us/kb/175523/en-us - - Also, even on non-Windows systems there may run a firewall or anti-virus - software or similar that accepts the connection but does not actually do - anything else. This will make (lib)curl to consider the connection connected - and thus the connect timeout will not trigger. - - 4.18 file:// URLs containing drive letters (Windows, NetWare) - - When using curl to try to download a local file, one might use a URL - in this format: - - file://D:/blah.txt - - you will find that even if D:\blah.txt does exist, curl returns a 'file - not found' error. - - According to RFC 1738 (https://www.ietf.org/rfc/rfc1738.txt), - file:// URLs must contain a host component, but it is ignored by - most implementations. In the above example, 'D:' is treated as the - host component, and is taken away. Thus, curl tries to open '/blah.txt'. - If your system is installed to drive C:, that will resolve to 'C:\blah.txt', - and if that does not exist you will get the not found error. - - To fix this problem, use file:// URLs with *three* leading slashes: - - file:///D:/blah.txt - - Alternatively, if it makes more sense, specify 'localhost' as the host - component: - - file://localhost/D:/blah.txt - - In either case, curl should now be looking for the correct file. - - 4.19 Why does not curl return an error when the network cable is unplugged? - - Unplugging a cable is not an error situation. The TCP/IP protocol stack - was designed to be fault tolerant, so even though there may be a physical - break somewhere the connection should not be affected, just possibly - delayed. Eventually, the physical break will be fixed or the data will be - re-routed around the physical problem through another path. - - In such cases, the TCP/IP stack is responsible for detecting when the - network connection is irrevocably lost. Since with some protocols it is - perfectly legal for the client to wait indefinitely for data, the stack may - never report a problem, and even when it does, it can take up to 20 minutes - for it to detect an issue. The curl option --keepalive-time enables - keep-alive support in the TCP/IP stack which makes it periodically probe the - connection to make sure it is still available to send data. That should - reliably detect any TCP/IP network failure. - - TCP keep alive will not detect the network going down before the TCP/IP - connection is established (e.g. during a DNS lookup) or using protocols that - do not use TCP. To handle those situations, curl offers a number of timeouts - on its own. --speed-limit/--speed-time will abort if the data transfer rate - falls too low, and --connect-timeout and --max-time can be used to put an - overall timeout on the connection phase or the entire transfer. - - A libcurl-using application running in a known physical environment (e.g. - an embedded device with only a single network connection) may want to act - immediately if its lone network connection goes down. That can be achieved - by having the application monitor the network connection on its own using an - OS-specific mechanism, then signaling libcurl to abort (see also item 5.13). - - 4.20 curl does not return error for HTTP non-200 responses - - Correct. Unless you use -f (--fail). - - When doing HTTP transfers, curl will perform exactly what you are asking it - to do and if successful it will not return an error. You can use curl to - test your web server's "file not found" page (that gets 404 back), you can - use it to check your authentication protected web pages (that gets a 401 - back) and so on. - - The specific HTTP response code does not constitute a problem or error for - curl. It simply sends and delivers HTTP as you asked and if that worked, - everything is fine and dandy. The response code is generally providing more - higher level error information that curl does not care about. The error was - not in the HTTP transfer. - - If you want your command line to treat error codes in the 400 and up range - as errors and thus return a non-zero value and possibly show an error - message, curl has a dedicated option for that: -f (CURLOPT_FAILONERROR in - libcurl speak). - - You can also use the -w option and the variable %{response_code} to extract - the exact response code that was returned in the response. - -5. libcurl Issues - - 5.1 Is libcurl thread-safe? - - Yes. - - We have written the libcurl code specifically adjusted for multi-threaded - programs. libcurl will use thread-safe functions instead of non-safe ones if - your system has such. Note that you must never share the same handle in - multiple threads. - - There may be some exceptions to thread safety depending on how libcurl was - built. Please review the guidelines for thread safety to learn more: - https://curl.se/libcurl/c/threadsafe.html - - 5.2 How can I receive all data into a large memory chunk? - - [ See also the examples/getinmemory.c source ] - - You are in full control of the callback function that gets called every time - there is data received from the remote server. You can make that callback do - whatever you want. You do not have to write the received data to a file. - - One solution to this problem could be to have a pointer to a struct that you - pass to the callback function. You set the pointer using the - CURLOPT_WRITEDATA option. Then that pointer will be passed to the callback - instead of a FILE * to a file: - - /* imaginary struct */ - struct MemoryStruct { - char *memory; - size_t size; - }; - - /* imaginary callback function */ - size_t - WriteMemoryCallback(void *ptr, size_t size, size_t nmemb, void *data) - { - size_t realsize = size * nmemb; - struct MemoryStruct *mem = (struct MemoryStruct *)data; - - mem->memory = (char *)realloc(mem->memory, mem->size + realsize + 1); - if (mem->memory) { - memcpy(&(mem->memory[mem->size]), ptr, realsize); - mem->size += realsize; - mem->memory[mem->size] = 0; - } - return realsize; - } - - 5.3 How do I fetch multiple files with libcurl? - - libcurl has excellent support for transferring multiple files. You should - just repeatedly set new URLs with curl_easy_setopt() and then transfer it - with curl_easy_perform(). The handle you get from curl_easy_init() is not - only reusable, but you are even encouraged to reuse it if you can, as that - will enable libcurl to use persistent connections. - - 5.4 Does libcurl do Winsock initialization on win32 systems? - - Yes, if told to in the curl_global_init() call. - - 5.5 Does CURLOPT_WRITEDATA and CURLOPT_READDATA work on win32 ? - - Yes, but you cannot open a FILE * and pass the pointer to a DLL and have - that DLL use the FILE * (as the DLL and the client application cannot access - each others' variable memory areas). If you set CURLOPT_WRITEDATA you must - also use CURLOPT_WRITEFUNCTION as well to set a function that writes the - file, even if that simply writes the data to the specified FILE *. - Similarly, if you use CURLOPT_READDATA you must also specify - CURLOPT_READFUNCTION. - - 5.6 What about Keep-Alive or persistent connections? - - curl and libcurl have excellent support for persistent connections when - transferring several files from the same server. curl will attempt to reuse - connections for all URLs specified on the same command line/config file, and - libcurl will reuse connections for all transfers that are made using the - same libcurl handle. - - When you use the easy interface the connection cache is kept within the easy - handle. If you instead use the multi interface, the connection cache will be - kept within the multi handle and will be shared among all the easy handles - that are used within the same multi handle. - - 5.7 Link errors when building libcurl on Windows - - You need to make sure that your project, and all the libraries (both static - and dynamic) that it links against, are compiled/linked against the same run - time library. - - This is determined by the /MD, /ML, /MT (and their corresponding /M?d) - options to the command line compiler. /MD (linking against MSVCRT dll) seems - to be the most commonly used option. - - When building an application that uses the static libcurl library, you must - add -DCURL_STATICLIB to your CFLAGS. Otherwise the linker will look for - dynamic import symbols. If you are using Visual Studio, you need to instead - add CURL_STATICLIB in the "Preprocessor Definitions" section. - - If you get a linker error like "unknown symbol __imp__curl_easy_init ..." you - have linked against the wrong (static) library. If you want to use the - libcurl.dll and import lib, you do not need any extra CFLAGS, but use one of - the import libraries below. These are the libraries produced by the various - lib/Makefile.* files: - - Target: static lib. import lib for libcurl*.dll. - ----------------------------------------------------------- - MingW: libcurl.a libcurldll.a - MSVC (release): libcurl.lib libcurl_imp.lib - MSVC (debug): libcurld.lib libcurld_imp.lib - Borland: libcurl.lib libcurl_imp.lib - - 5.8 libcurl.so.X: open failed: No such file or directory - - This is an error message you might get when you try to run a program linked - with a shared version of libcurl and your runtime linker (ld.so) could not - find the shared library named libcurl.so.X. (Where X is the number of the - current libcurl ABI, typically 3 or 4). - - You need to make sure that ld.so finds libcurl.so.X. You can do that - multiple ways, and it differs somewhat between different operating systems. - They are usually: - - * Add an option to the linker command line that specify the hard-coded path - the runtime linker should check for the lib (usually -R) - - * Set an environment variable (LD_LIBRARY_PATH for example) where ld.so - should check for libs - - * Adjust the system's config to check for libs in the directory where you have - put the library (like Linux's /etc/ld.so.conf) - - 'man ld.so' and 'man ld' will tell you more details - - 5.9 How does libcurl resolve host names? - - libcurl supports a large number of name resolve functions. One of them is - picked at build-time and will be used unconditionally. Thus, if you want to - change name resolver function you must rebuild libcurl and tell it to use a - different function. - - - The non-IPv6 resolver that can use one of four different host name resolve - calls (depending on what your system supports): - - A - gethostbyname() - B - gethostbyname_r() with 3 arguments - C - gethostbyname_r() with 5 arguments - D - gethostbyname_r() with 6 arguments - - - The IPv6-resolver that uses getaddrinfo() - - - The c-ares based name resolver that uses the c-ares library for resolves. - Using this offers asynchronous name resolves. - - - The threaded resolver (default option on Windows). It uses: - - A - gethostbyname() on plain IPv4 hosts - B - getaddrinfo() on IPv6 enabled hosts - - Also note that libcurl never resolves or reverse-lookups addresses given as - pure numbers, such as 127.0.0.1 or ::1. - - 5.10 How do I prevent libcurl from writing the response to stdout? - - libcurl provides a default built-in write function that writes received data - to stdout. Set the CURLOPT_WRITEFUNCTION to receive the data, or possibly - set CURLOPT_WRITEDATA to a different FILE * handle. - - 5.11 How do I make libcurl not receive the whole HTTP response? - - You make the write callback (or progress callback) return an error and - libcurl will then abort the transfer. - - 5.12 Can I make libcurl fake or hide my real IP address? - - No. libcurl operates on a higher level. Besides, faking IP address would - imply sending IP packets with a made-up source address, and then you normally - get a problem with receiving the packet sent back as they would then not be - routed to you. - - If you use a proxy to access remote sites, the sites will not see your local - IP address but instead the address of the proxy. - - Also note that on many networks NATs or other IP-munging techniques are used - that makes you see and use a different IP address locally than what the - remote server will see you coming from. You may also consider using - https://www.torproject.org/ . - - 5.13 How do I stop an ongoing transfer? - - With the easy interface you make sure to return the correct error code from - one of the callbacks, but none of them are instant. There is no function you - can call from another thread or similar that will stop it immediately. - Instead, you need to make sure that one of the callbacks you use returns an - appropriate value that will stop the transfer. Suitable callbacks that you - can do this with include the progress callback, the read callback and the - write callback. - - If you are using the multi interface, you can also stop a transfer by - removing the particular easy handle from the multi stack at any moment you - think the transfer is done or when you wish to abort the transfer. - - 5.14 Using C++ non-static functions for callbacks? - - libcurl is a C library, it does not know anything about C++ member functions. - - You can overcome this "limitation" with relative ease using a static - member function that is passed a pointer to the class: - - // f is the pointer to your object. - static size_t YourClass::func(void *buffer, size_t sz, size_t n, void *f) - { - // Call non-static member function. - static_cast(f)->nonStaticFunction(); - } - - // This is how you pass pointer to the static function: - curl_easy_setopt(hcurl, CURLOPT_WRITEFUNCTION, YourClass::func); - curl_easy_setopt(hcurl, CURLOPT_WRITEDATA, this); - - 5.15 How do I get an FTP directory listing? - - If you end the FTP URL you request with a slash, libcurl will provide you - with a directory listing of that given directory. You can also set - CURLOPT_CUSTOMREQUEST to alter what exact listing command libcurl would use - to list the files. - - The follow-up question tends to be how is a program supposed to parse the - directory listing. How does it know what's a file and what's a directory and - what's a symlink etc. If the FTP server supports the MLSD command then it - will return data in a machine-readable format that can be parsed for type. - The types are specified by RFC3659 section 7.5.1. If MLSD is not supported - then you have to work with what you are given. The LIST output format is - entirely at the server's own liking and the NLST output does not reveal any - types and in many cases does not even include all the directory entries. - Also, both LIST and NLST tend to hide unix-style hidden files (those that - start with a dot) by default so you need to do "LIST -a" or similar to see - them. - - Example - List only directories. - ftp.funet.fi supports MLSD and ftp.kernel.org does not: - - curl -s ftp.funet.fi/pub/ -X MLSD | \ - perl -lne 'print if s/(?:^|;)type=dir;[^ ]+ (.+)$/$1/' - - curl -s ftp.kernel.org/pub/linux/kernel/ | \ - perl -lne 'print if s/^d[-rwx]{9}(?: +[^ ]+){7} (.+)$/$1/' - - If you need to parse LIST output in libcurl one such existing - list parser is available at https://cr.yp.to/ftpparse.html Versions of - libcurl since 7.21.0 also provide the ability to specify a wildcard to - download multiple files from one FTP directory. - - 5.16 I want a different time-out - - Sometimes users realize that CURLOPT_TIMEOUT and CURLOPT_CONNECTIMEOUT are - not sufficiently advanced or flexible to cover all the various use cases and - scenarios applications end up with. - - libcurl offers many more ways to time-out operations. A common alternative - is to use the CURLOPT_LOW_SPEED_LIMIT and CURLOPT_LOW_SPEED_TIME options to - specify the lowest possible speed to accept before to consider the transfer - timed out. - - The most flexible way is by writing your own time-out logic and using - CURLOPT_XFERINFOFUNCTION (perhaps in combination with other callbacks) and - use that to figure out exactly when the right condition is met when the - transfer should get stopped. - - 5.17 Can I write a server with libcurl? - - No. libcurl offers no functions or building blocks to build any kind of - Internet protocol server. libcurl is only a client-side library. For server - libraries, you need to continue your search elsewhere but there exist many - good open source ones out there for most protocols you could want a server - for. There are also really good stand-alone servers that have been tested - and proven for many years. There is no need for you to reinvent them. - - 5.18 Does libcurl use threads? - - Put simply: no, libcurl will execute in the same thread you call it in. All - callbacks will be called in the same thread as the one you call libcurl in. - - If you want to avoid your thread to be blocked by the libcurl call, you make - sure you use the non-blocking multi API which will do transfers - asynchronously - still in the same single thread. - - libcurl will potentially internally use threads for name resolving, if it - was built to work like that, but in those cases it will create the child - threads by itself and they will only be used and then killed internally by - libcurl and never exposed to the outside. - -6. License Issues - - curl and libcurl are released under a MIT/X derivative license. The license - is liberal and should not impose a problem for your project. This section is - just a brief summary for the cases we get the most questions. (Parts of this - section was much enhanced by Bjorn Reese.) - - We are not lawyers and this is not legal advice. You should probably consult - one if you want true and accurate legal insights without our prejudice. Note - especially that this section concerns the libcurl license only; compiling in - features of libcurl that depend on other libraries (e.g. OpenSSL) may affect - the licensing obligations of your application. - - 6.1 I have a GPL program, can I use the libcurl library? - - Yes - - Since libcurl may be distributed under the MIT/X derivative license, it can - be used together with GPL in any software. - - 6.2 I have a closed-source program, can I use the libcurl library? - - Yes - - libcurl does not put any restrictions on the program that uses the library. - - 6.3 I have a BSD licensed program, can I use the libcurl library? - - Yes - - libcurl does not put any restrictions on the program that uses the library. - - 6.4 I have a program that uses LGPL libraries, can I use libcurl? - - Yes - - The LGPL license does not clash with other licenses. - - 6.5 Can I modify curl/libcurl for my program and keep the changes secret? - - Yes - - The MIT/X derivative license practically allows you to do almost anything - with the sources, on the condition that the copyright texts in the sources - are left intact. - - 6.6 Can you please change the curl/libcurl license to XXXX? - - No. - - We have carefully picked this license after years of development and - discussions and a large amount of people have contributed with source code - knowing that this is the license we use. This license puts the restrictions - we want on curl/libcurl and it does not spread to other programs or - libraries that use it. It should be possible for everyone to use libcurl or - curl in their projects, no matter what license they already have in use. - - 6.7 What are my obligations when using libcurl in my commercial apps? - - Next to none. All you need to adhere to is the MIT-style license (stated in - the COPYING file) which basically says you have to include the copyright - notice in "all copies" and that you may not use the copyright holder's name - when promoting your software. - - You do not have to release any of your source code. - - You do not have to reveal or make public any changes to the libcurl source - code. - - You do not have to broadcast to the world that you are using libcurl within - your app. - - All we ask is that you disclose "the copyright notice and this permission - notice" somewhere. Most probably like in the documentation or in the section - where other third party dependencies already are mentioned and acknowledged. - - As can be seen here: https://curl.se/docs/companies.html and elsewhere, - more and more companies are discovering the power of libcurl and take - advantage of it even in commercial environments. - - -7. PHP/CURL Issues - - 7.1 What is PHP/CURL? - - The module for PHP that makes it possible for PHP programs to access curl- - functions from within PHP. - - In the cURL project we call this module PHP/CURL to differentiate it from - curl the command line tool and libcurl the library. The PHP team however - does not refer to it like this (for unknown reasons). They call it plain - CURL (often using all caps) or sometimes ext/curl, but both cause much - confusion to users which in turn gives us a higher question load. - - 7.2 Who wrote PHP/CURL? - - PHP/CURL was initially written by Sterling Hughes. - - 7.3 Can I perform multiple requests using the same handle? - - Yes - at least in PHP version 4.3.8 and later (this has been known to not - work in earlier versions, but the exact version when it started to work is - unknown to me). - - After a transfer, you just set new options in the handle and make another - transfer. This will make libcurl re-use the same connection if it can. - - 7.4 Does PHP/CURL have dependencies? - - PHP/CURL is a module that comes with the regular PHP package. It depends on - and uses libcurl, so you need to have libcurl installed properly before - PHP/CURL can be used. - -8. Development - - 8.1 Why does curl use C89? - - As with everything in curl, there is a history and we keep using what we have - used before until someone brings up the subject and argues for and works on - changing it. - - We started out using C89 in the 1990s because that was the only way to write - a truly portable C program and have it run as widely as possible. C89 was for - a long time even necessary to make things work on otherwise considered modern - platforms such as Windows. Today, we do not really know how many users that - still require the use of a C89 compiler. - - We will continue to use C89 for as long as nobody brings up a strong enough - reason for us to change our minds. The core developers of the project do not - feel restricted by this and we are not convinced that going C99 will offer us - enough of a benefit to warrant the risk of cutting off a share of users. - - 8.2 Will curl be rewritten? - - In one go: no. Little by little over time? Maybe. - - Over the years, new languages and clever operating environments come and go. - Every now and then the urge apparently arises to request that we rewrite curl - in another language. - - Some the most important properties in curl are maintaining the API and ABI - for libcurl and keeping the behavior for the command line tool. As long as we - can do that, everything else is up for discussion. To maintain the ABI, we - probably have to maintain a certain amount of code in C, and to remain rock - stable, we will never risk anything by rewriting a lot of things in one go. - That said, we can certainly offer more and more optional backends written in - other languages, as long as those backends can be plugged in at build-time. - Backends can be written in any language, but should probably provide APIs - usable from C to ease integration and transition. diff --git a/Engine/lib/curl/docs/FEATURES.md b/Engine/lib/curl/docs/FEATURES.md deleted file mode 100644 index 7451ee635..000000000 --- a/Engine/lib/curl/docs/FEATURES.md +++ /dev/null @@ -1,219 +0,0 @@ -# Features -- what curl can do - -## curl tool - - - config file support - - multiple URLs in a single command line - - range "globbing" support: [0-13], {one,two,three} - - multiple file upload on a single command line - - custom maximum transfer rate - - redirectable stderr - - parallel transfers - -## libcurl - - - full URL syntax with no length limit - - custom maximum download time - - custom least download speed acceptable - - custom output result after completion - - guesses protocol from host name unless specified - - uses .netrc - - progress bar with time statistics while downloading - - "standard" proxy environment variables support - - compiles on win32 (reported builds on 70+ operating systems) - - selectable network interface for outgoing traffic - - IPv6 support on Unix and Windows - - happy eyeballs dual-stack connects - - persistent connections - - SOCKS 4 + 5 support, with or without local name resolving - - supports user name and password in proxy environment variables - - operations through HTTP proxy "tunnel" (using CONNECT) - - replaceable memory functions (malloc, free, realloc, etc) - - asynchronous name resolving (6) - - both a push and a pull style interface - - international domain names (10) - -## HTTP - - - HTTP/0.9 responses are optionally accepted - - HTTP/1.0 - - HTTP/1.1 - - HTTP/2, including multiplexing and server push (5) - - GET - - PUT - - HEAD - - POST - - multipart formpost (RFC1867-style) - - authentication: Basic, Digest, NTLM (9) and Negotiate (SPNEGO) (3) - to server and proxy - - resume (both GET and PUT) - - follow redirects - - maximum amount of redirects to follow - - custom HTTP request - - cookie get/send fully parsed - - reads/writes the Netscape cookie file format - - custom headers (replace/remove internally generated headers) - - custom user-agent string - - custom referrer string - - range - - proxy authentication - - time conditions - - via HTTP proxy, HTTPS proxy or SOCKS proxy - - retrieve file modification date - - Content-Encoding support for deflate and gzip - - "Transfer-Encoding: chunked" support in uploads - - automatic data compression (11) - -## HTTPS (1) - - - (all the HTTP features) - - HTTP/3 experimental support - - using client certificates - - verify server certificate - - via HTTP proxy, HTTPS proxy or SOCKS proxy - - select desired encryption - - select usage of a specific SSL version - -## FTP - - - download - - authentication - - Kerberos 5 (12) - - active/passive using PORT, EPRT, PASV or EPSV - - single file size information (compare to HTTP HEAD) - - 'type=' URL support - - dir listing - - dir listing names-only - - upload - - upload append - - upload via http-proxy as HTTP PUT - - download resume - - upload resume - - custom ftp commands (before and/or after the transfer) - - simple "range" support - - via HTTP proxy, HTTPS proxy or SOCKS proxy - - all operations can be tunneled through proxy - - customizable to retrieve file modification date - - no dir depth limit - -## FTPS (1) - - - implicit `ftps://` support that use SSL on both connections - - explicit "AUTH TLS" and "AUTH SSL" usage to "upgrade" plain `ftp://` - connection to use SSL for both or one of the connections - -## SCP (8) - - - both password and public key auth - -## SFTP (7) - - - both password and public key auth - - with custom commands sent before/after the transfer - -## TFTP - - - download - - upload - -## TELNET - - - connection negotiation - - custom telnet options - - stdin/stdout I/O - -## LDAP (2) - - - full LDAP URL support - -## DICT - - - extended DICT URL support - -## FILE - - - URL support - - upload - - resume - -## SMB - - - SMBv1 over TCP and SSL - - download - - upload - - authentication with NTLMv1 - -## SMTP - - - authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM (9), Kerberos 5 - (4) and External. - - send emails - - mail from support - - mail size support - - mail auth support for trusted server-to-server relaying - - multiple recipients - - via http-proxy - -## SMTPS (1) - - - implicit `smtps://` support - - explicit "STARTTLS" usage to "upgrade" plain `smtp://` connections to use SSL - - via http-proxy - -## POP3 - - - authentication: Clear Text, APOP and SASL - - SASL based authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM (9), - Kerberos 5 (4) and External. - - list emails - - retrieve emails - - enhanced command support for: CAPA, DELE, TOP, STAT, UIDL and NOOP via - custom requests - - via http-proxy - -## POP3S (1) - - - implicit `pop3s://` support - - explicit "STLS" usage to "upgrade" plain `pop3://` connections to use SSL - - via http-proxy - -## IMAP - - - authentication: Clear Text and SASL - - SASL based authentication: Plain, Login, CRAM-MD5, Digest-MD5, NTLM (9), - Kerberos 5 (4) and External. - - list the folders of a mailbox - - select a mailbox with support for verifying the UIDVALIDITY - - fetch emails with support for specifying the UID and SECTION - - upload emails via the append command - - enhanced command support for: EXAMINE, CREATE, DELETE, RENAME, STATUS, - STORE, COPY and UID via custom requests - - via http-proxy - -## IMAPS (1) - - - implicit `imaps://` support - - explicit "STARTTLS" usage to "upgrade" plain `imap://` connections to use SSL - - via http-proxy - -## MQTT - - - Subscribe to and publish topics using URL scheme `mqtt://broker/topic` - -## Footnotes - - 1. requires a TLS library - 2. requires OpenLDAP or WinLDAP - 3. requires a GSS-API implementation (such as Heimdal or MIT Kerberos) or - SSPI (native Windows) - 4. requires a GSS-API implementation, however, only Windows SSPI is - currently supported - 5. requires nghttp2 - 6. requires c-ares - 7. requires libssh2, libssh or wolfSSH - 8. requires libssh2 or libssh - 9. requires OpenSSL, GnuTLS, mbedTLS, NSS, Secure Transport or SSPI - (native Windows) - 10. requires libidn2 or Windows - 11. requires libz, brotli and/or zstd - 12. requires a GSS-API implementation (such as Heimdal or MIT Kerberos) diff --git a/Engine/lib/curl/docs/GOVERNANCE.md b/Engine/lib/curl/docs/GOVERNANCE.md deleted file mode 100644 index 0d6c5b2d7..000000000 --- a/Engine/lib/curl/docs/GOVERNANCE.md +++ /dev/null @@ -1,182 +0,0 @@ -# Decision making in the curl project - -A rough guide to how we make decisions and who does what. - -## BDFL - -This project was started by and has to some extent been pushed forward over -the years with Daniel Stenberg as the driving force. It matches a standard -BDFL (Benevolent Dictator For Life) style project. - -This setup has been used due to convenience and the fact that it has worked -fine this far. It is not because someone thinks of it as a superior project -leadership model. It will also only continue working as long as Daniel manages -to listen in to what the project and the general user population wants and -expects from us. - -## Legal entity - -There is no legal entity. The curl project is just a bunch of people scattered -around the globe with the common goal to produce source code that creates -great products. We are not part of any umbrella organization and we are not -located in any specific country. We are totally independent. - -The copyrights in the project are owned by the individuals and organizations -that wrote those parts of the code. - -## Decisions - -The curl project is not a democracy, but everyone is entitled to state their -opinion and may argue for their sake within the community. - -All and any changes that have been done or will be done are eligible to bring -up for discussion, to object to or to praise. Ideally, we find consensus for -the appropriate way forward in any given situation or challenge. - -If there is no obvious consensus, a maintainer who's knowledgeable in the -specific area will take an "executive" decision that they think is the right -for the project. - -## Donations - -Donating plain money to curl is best done to curl's [Open Collective -fund](https://opencollective.com/curl). Open Collective is a US based -non-profit organization that holds on to funds for us. This fund is then used -for paying the curl security bug bounties, to reimburse project related -expenses etc. - -Donations to the project can also come in the form of server hosting, providing -services and paying for people to work on curl related code etc. Usually, such -donations are services paid for directly by the sponsors. - -We grade sponsors in a few different levels and if they meet the criteria, -they can be mentioned on the Sponsors page on the curl website. - -## Commercial Support - -The curl project does not do or offer commercial support. It only hosts -mailing lists, runs bug trackers etc to facilitate communication and work. - -However, Daniel works for wolfSSL and we offer commercial curl support there. - -# Key roles - -## User - -Someone who uses or has used curl or libcurl. - -## Contributor - -Someone who has helped the curl project, who has contributed to bring it -forward. Contributing could be to provide advice, debug a problem, file a bug -report, run test infrastructure or writing code etc. - -## Commit author - -Sometimes also called 'committer'. Someone who has authored a commit in the -curl source code repository. Committers are recorded as `Author` in git. - -## Maintainers - -A maintainer in the curl project is an individual who has been given -permissions to push commits to one of the git repositories. - -Maintainers are free to push commits to the repositories at their own will. -Maintainers are however expected to listen to feedback from users and any -change that is non-trivial in size or nature *should* be brought to the -project as a Pull-Request (PR) to allow others to comment/object before merge. - -## Former maintainers - -A maintainer who stops being active in the project will at some point get -their push permissions removed. We do this for security reasons but also to -make sure that we always have the list of maintainers as "the team that push -stuff to curl". - -Getting push permissions removed is not a punishment. Everyone who ever worked -on maintaining curl is considered a hero, for all time hereafter. - -## Security team members - -We have a security team. That is the team of people who are subscribed to the -curl-security mailing list; the receivers of security reports from users and -developers. This list of people will vary over time but should be skilled -developers familiar with the curl project. - -The security team works best when it consists of a small set of active -persons. We invite new members when the team seems to need it, and we also -expect to retire security team members as they "drift off" from the project or -just find themselves unable to perform their duties there. - -## Server admins - -We run a web server, a mailing list and more on the curl project's primary -server. That physical machine is owned and run by Haxx. Daniel is the primary -admin of all things curl related server stuff, but Björn Stenberg and Linus -Feltzing serve as backup admins for when Daniel is gone or unable. - -The primary server is paid for by Haxx. The machine is physically located in a -server bunker in Stockholm Sweden, operated by the company Portlane. - -The website contents are served to the web via Fastly and Daniel is the -primary curl contact with Fastly. - -## BDFL - -That is Daniel. - -# Maintainers - -A curl maintainer is a project volunteer who has the authority and rights to -merge changes into a git repository in the curl project. - -Anyone can aspire to become a curl maintainer. - -### Duties - -There are no mandatory duties. We hope and wish that maintainers consider -reviewing patches and help merging them, especially when the changes are -within the area of personal expertise and experience. - -### Requirements - -- only merge code that meets our quality and style guide requirements. -- *never* merge code without doing a PR first, unless the change is "trivial" -- if in doubt, ask for input/feedback from others - -### Recommendations - -- we require two-factor authentication enabled on your GitHub account to - reduce risk of malicious source code tampering -- consider enabling signed git commits for additional verification of changes - -### Merge advice - -When you are merging patches/PRs... - -- make sure the commit messages follow our template -- squash patch sets into a few logical commits even if the PR did not, if - necessary -- avoid the "merge" button on GitHub, do it "manually" instead to get full - control and full audit trail (github leaves out you as "Committer:") -- remember to credit the reporter and the helpers. - -## Who are maintainers? - -The [list of maintainers](https://github.com/orgs/curl/people). Be aware that -the level of presence and activity in the project vary greatly between -different individuals and over time. - -### Become a maintainer? - -If you think you can help making the project better by shouldering some -maintaining responsibilities, then please get in touch. - -You will be expected to be familiar with the curl project and its ways of -working. You need to have gotten a few quality patches merged as a proof of -this. - -### Stop being a maintainer - -If you (appear to) not be active in the project anymore, you may be removed as -a maintainer. Thank you for your service! diff --git a/Engine/lib/curl/docs/HELP-US.md b/Engine/lib/curl/docs/HELP-US.md deleted file mode 100644 index eabf80810..000000000 --- a/Engine/lib/curl/docs/HELP-US.md +++ /dev/null @@ -1,87 +0,0 @@ -# How to get started helping out in the curl project - -We are always in need of more help. If you are new to the project and are -looking for ways to contribute and help out, this document aims to give a few -good starting points. - -A good idea is to start by subscribing to the [curl-library mailing -list](https://lists.haxx.se/listinfo/curl-library) to keep track of the -current discussion topics. - -## Scratch your own itch - -One of the best ways is to start working on any problems or issues you have -found yourself or perhaps got annoyed at in the past. It can be a spelling -error in an error text or a weirdly phrased section in a man page. Hunt it -down and report the bug. Or make your first pull request with a fix for that. - -## Smaller tasks - -Some projects mark small issues as "beginner friendly", "bite-sized" or -similar. We do not do that in curl since such issues never linger around long -enough. Simple issues get handled fast. - -If you are looking for a smaller or simpler task in the project to help out -with as an entry-point into the project, perhaps because you are a newcomer or -even maybe not a terribly experienced developer, here's our advice: - - - Read through this document to get a grasp on a general approach to use - - Consider adding a test case for something not currently tested (correctly) - - Consider updating or adding documentation - - One way to get started gently in the project, is to participate in an - existing issue/PR and help out by reproducing the issue, review the code in - the PR etc. - -## Help wanted - -In the issue tracker we occasionally mark bugs with [help -wanted](https://github.com/curl/curl/labels/help%20wanted), as a sign that the -bug is acknowledged to exist and that there's nobody known to work on this -issue for the moment. Those are bugs that are fine to "grab" and provide a -pull request for. The complexity level of these will of course vary, so pick -one that piques your interest. - -## Work on known bugs - -Some bugs are known and have not yet received attention and work enough to get -fixed. We collect such known existing flaws in the -[KNOWN_BUGS](https://curl.se/docs/knownbugs.html) page. Many of them link -to the original bug report with some additional details, but some may also -have aged a bit and may require some verification that the bug still exists in -the same way and that what was said about it in the past is still valid. - -## Fix autobuild problems - -On the [autobuilds page](https://curl.se/dev/builds.html) we show a -collection of test results from the automatic curl build and tests that are -performed by volunteers. Fixing compiler warnings and errors shown there is -something we value greatly. Also, if you own or run systems or architectures -that are not already tested in the autobuilds, we also appreciate more -volunteers running builds automatically to help us keep curl portable. - -## TODO items - -Ideas for features and functions that we have considered worthwhile to -implement and provide are kept in the -[TODO](https://curl.se/docs/todo.html) file. Some of the ideas are -rough. Some are well thought out. Some probably are not really suitable -anymore. - -Before you invest a lot of time on a TODO item, do bring it up for discussion -on the mailing list. For discussion on applicability but also for ideas and -brainstorming on specific ways to do the implementation etc. - -## You decide - -You can also come up with a completely new thing you think we should do. Or -not do. Or fix. Or add to the project. You then either bring it to the mailing -list first to see if people will shoot down the idea at once, or you bring a -first draft of the idea as a pull request and take the discussion there around -the specific implementation. Either way is fine. - -## CONTRIBUTE - -We offer [guidelines](https://curl.se/dev/contribute.html) that are -suitable to be familiar with before you decide to contribute to curl. If -you are used to open source development, you will probably not find many -surprises there. diff --git a/Engine/lib/curl/docs/HISTORY.md b/Engine/lib/curl/docs/HISTORY.md deleted file mode 100644 index 6268b87ef..000000000 --- a/Engine/lib/curl/docs/HISTORY.md +++ /dev/null @@ -1,432 +0,0 @@ -How curl Became Like This -========================= - -Towards the end of 1996, Daniel Stenberg was spending time writing an IRC bot -for an Amiga related channel on EFnet. He then came up with the idea to make -currency-exchange calculations available to Internet Relay Chat (IRC) -users. All the necessary data were published on the Web; he just needed to -automate their retrieval. - -1996 ----- - -On November 11, 1996 the Brazilian developer Rafael Sagula wrote and released -HttpGet version 0.1. - -Daniel extended this existing command-line open-source tool. After a few minor -adjustments, it did just what he needed. The first release with Daniel's -additions was 0.2, released on December 17, 1996. Daniel quickly became the -new maintainer of the project. - -1997 ----- - -HttpGet 0.3 was released in January 1997 and now it accepted HTTP URLs on the -command line. - -HttpGet 1.0 was released on April 8th 1997 with brand new HTTP proxy support. - -We soon found and fixed support for getting currencies over GOPHER. Once FTP -download support was added, the name of the project was changed and urlget 2.0 -was released in August 1997. The http-only days were already passed. - -Version 2.2 was released on August 14 1997 and introduced support to build for -and run on Windows and Solaris. - -November 24 1997: Version 3.1 added FTP upload support. - -Version 3.5 added support for HTTP POST. - -1998 ----- - -February 4: urlget 3.10 - -February 9: urlget 3.11 - -March 14: urlget 3.12 added proxy authentication. - -The project slowly grew bigger. With upload capabilities, the name was once -again misleading and a second name change was made. On March 20, 1998 curl 4 -was released. (The version numbering from the previous names was kept.) - -(Unrelated to this project a company called Curl Corporation registered a US -trademark on the name "CURL" on May 18 1998. That company had then already -registered the curl.com domain back in November of the previous year. All this -was revealed to us much later.) - -SSL support was added, powered by the SSLeay library. - -August: first announcement of curl on freshmeat.net. - -October: with the curl 4.9 release and the introduction of cookie support, -curl was no longer released under the GPL license. Now we are at 4000 lines of -code, we switched over to the MPL license to restrict the effects of -"copyleft". - -November: configure script and reported successful compiles on several -major operating systems. The never-quite-understood -F option was added and -curl could now simulate quite a lot of a browser. TELNET support was added. - -Curl 5 was released in December 1998 and introduced the first ever curl man -page. People started making Linux RPM packages out of it. - -1999 ----- - -January: DICT support added. - -OpenSSL took over and SSLeay was abandoned. - -May: first Debian package. - -August: LDAP:// and FILE:// support added. The curl website gets 1300 visits -weekly. Moved site to curl.haxx.nu. - -September: Released curl 6.0. 15000 lines of code. - -December 28: added the project on Sourceforge and started using its services -for managing the project. - -2000 ----- - -Spring: major internal overhaul to provide a suitable library interface. -The first non-beta release was named 7.1 and arrived in August. This offered -the easy interface and turned out to be the beginning of actually getting -other software and programs to be based on and powered by libcurl. Almost -20000 lines of code. - -June: the curl site moves to "curl.haxx.se" - -August, the curl website gets 4000 visits weekly. - -The PHP guys adopted libcurl already the same month, when the first ever third -party libcurl binding showed up. CURL has been a supported module in PHP since -the release of PHP 4.0.2. This would soon get followers. More than 16 -different bindings exist at the time of this writing. - -September: kerberos4 support was added. - -November: started the work on a test suite for curl. It was later re-written -from scratch again. The libcurl major SONAME number was set to 1. - -2001 ----- - -January: Daniel released curl 7.5.2 under a new license again: MIT (or -MPL). The MIT license is extremely liberal and can be combined with GPL -in other projects. This would finally put an end to the "complaints" from -people involved in GPLed projects that previously were prohibited from using -libcurl while it was released under MPL only. (Due to the fact that MPL is -deemed "GPL incompatible".) - -March 22: curl supports HTTP 1.1 starting with the release of 7.7. This -also introduced libcurl's ability to do persistent connections. 24000 lines of -code. The libcurl major SONAME number was bumped to 2 due to this overhaul. -The first experimental ftps:// support was added. - -August: The curl website gets 8000 visits weekly. Curl Corporation contacted -Daniel to discuss "the name issue". After Daniel's reply, they have never -since got back in touch again. - -September: libcurl 7.9 introduces cookie jar and curl_formadd(). During the -forthcoming 7.9.x releases, we introduced the multi interface slowly and -without many whistles. - -September 25: curl (7.7.2) is bundled in Mac OS X (10.1) for the first time. It was -already becoming more and more of a standard utility of Linux distributions -and a regular in the BSD ports collections. - -2002 ----- - -June: the curl website gets 13000 visits weekly. curl and libcurl is -35000 lines of code. Reported successful compiles on more than 40 combinations -of CPUs and operating systems. - -To estimate the number of users of the curl tool or libcurl library is next to -impossible. Around 5000 downloaded packages each week from the main site gives -a hint, but the packages are mirrored extensively, bundled with numerous OS -distributions and otherwise retrieved as part of other software. - -October 1: with the release of curl 7.10 it is released under the MIT license -only. - -Starting with 7.10, curl verifies SSL server certificates by default. - -2003 ----- - -January: Started working on the distributed curl tests. The autobuilds. - -February: the curl site averages at 20000 visits weekly. At any given moment, -there's an average of 3 people browsing the website. - -Multiple new authentication schemes are supported: Digest (May), NTLM (June) -and Negotiate (June). - -November: curl 7.10.8 is released. 45000 lines of code. ~55000 unique visitors -to the website. Five official web mirrors. - -December: full-fledged SSL for FTP is supported. - -2004 ----- - -January: curl 7.11.0 introduced large file support. - -June: curl 7.12.0 introduced IDN support. 10 official web mirrors. - -This release bumped the major SONAME to 3 due to the removal of the -curl_formparse() function - -August: Curl and libcurl 7.12.1 - - Public curl release number: 82 - Releases counted from the very beginning: 109 - Available command line options: 96 - Available curl_easy_setopt() options: 120 - Number of public functions in libcurl: 36 - Amount of public website mirrors: 12 - Number of known libcurl bindings: 26 - -2005 ----- - -April: GnuTLS can now optionally be used for the secure layer when curl is -built. - -April: Added the multi_socket() API - -September: TFTP support was added. - -More than 100,000 unique visitors of the curl website. 25 mirrors. - -December: security vulnerability: libcurl URL Buffer Overflow - -2006 ----- - -January: We dropped support for Gopher. We found bugs in the implementation -that turned out to have been introduced years ago, so with the conclusion that -nobody had found out in all this time we removed it instead of fixing it. - -March: security vulnerability: libcurl TFTP Packet Buffer Overflow - -September: The major SONAME number for libcurl was bumped to 4 due to the -removal of ftp third party transfer support. - -November: Added SCP and SFTP support - -2007 ----- - -February: Added support for the Mozilla NSS library to do the SSL/TLS stuff - -July: security vulnerability: libcurl GnuTLS insufficient cert verification - -2008 ----- - -November: - - Command line options: 128 - curl_easy_setopt() options: 158 - Public functions in libcurl: 58 - Known libcurl bindings: 37 - Contributors: 683 - - 145,000 unique visitors. >100 GB downloaded. - -2009 ----- - -March: security vulnerability: libcurl Arbitrary File Access - -April: added CMake support - -August: security vulnerability: libcurl embedded zero in cert name - -December: Added support for IMAP, POP3 and SMTP - -2010 ----- - -January: Added support for RTSP - -February: security vulnerability: libcurl data callback excessive length - -March: The project switched over to use git (hosted by GitHub) instead of CVS -for source code control - -May: Added support for RTMP - -Added support for PolarSSL to do the SSL/TLS stuff - -August: - - Public curl releases: 117 - Command line options: 138 - curl_easy_setopt() options: 180 - Public functions in libcurl: 58 - Known libcurl bindings: 39 - Contributors: 808 - - Gopher support added (re-added actually, see January 2006) - -2011 ----- - -February: added support for the axTLS backend - -April: added the cyassl backend (later renamed to WolfSSL) - -2012 ----- - - July: Added support for Schannel (native Windows TLS backend) and Darwin SSL - (Native Mac OS X and iOS TLS backend). - - Supports metalink - - October: SSH-agent support. - -2013 ----- - - February: Cleaned up internals to always uses the "multi" non-blocking - approach internally and only expose the blocking API with a wrapper. - - September: First small steps on supporting HTTP/2 with nghttp2. - - October: Removed krb4 support. - - December: Happy eyeballs. - -2014 ----- - - March: first real release supporting HTTP/2 - - September: Website had 245,000 unique visitors and served 236GB data - - SMB and SMBS support - -2015 ----- - - June: support for multiplexing with HTTP/2 - - August: support for HTTP/2 server push - - December: Public Suffix List - -2016 ----- - - January: the curl tool defaults to HTTP/2 for HTTPS URLs - - December: curl 7.52.0 introduced support for HTTPS-proxy! - - First TLS 1.3 support - -2017 ----- - - July: OSS-Fuzz started fuzzing libcurl - - September: Added Multi-SSL support - - The website serves 3100 GB/month - - Public curl releases: 169 - Command line options: 211 - curl_easy_setopt() options: 249 - Public functions in libcurl: 74 - Contributors: 1609 - - October: SSLKEYLOGFILE support, new MIME API - - October: Daniel received the Polhem Prize for his work on curl - - November: brotli - -2018 ----- - - January: new SSH backend powered by libssh - - March: starting with the 1803 release of Windows 10, curl is shipped bundled - with Microsoft's operating system. - - July: curl shows headers using bold type face - - October: added DNS-over-HTTPS (DoH) and the URL API - - MesaLink is a new supported TLS backend - - libcurl now does HTTP/2 (and multiplexing) by default on HTTPS URLs - - curl and libcurl are installed in an estimated 5 *billion* instances - world-wide. - - October 31: Curl and libcurl 7.62.0 - - Public curl releases: 177 - Command line options: 219 - curl_easy_setopt() options: 261 - Public functions in libcurl: 80 - Contributors: 1808 - - December: removed axTLS support - -2019 ----- - - March: added experimental alt-svc support - - August: the first HTTP/3 requests with curl. - - September: 7.66.0 is released and the tool offers parallel downloads - -2020 ----- - - curl and libcurl are installed in an estimated 10 *billion* instances - world-wide. - - January: added BearSSL support - - March: removed support for PolarSSL, added wolfSSH support - - April: experimental MQTT support - - August: zstd support - - November: the website moves to curl.se. The website serves 10TB data monthly. - - December: alt-svc support - -2021 ----- - - February 3: curl 7.75.0 ships with support for Hyper as an HTTP backend - - March 31: curl 7.76.0 ships with support for rustls - - July: HSTS is supported - -2022 ----- - - March: added --json, removed mesalink support - - Public curl releases: 206 - Command line options: 245 - curl_easy_setopt() options: 295 - Public functions in libcurl: 86 - Contributors: 2601 - - The curl.se website serves 16,500 GB/month over 462M requests, the - official docker image has been pulled 4,098,015,431 times. diff --git a/Engine/lib/curl/docs/HSTS.md b/Engine/lib/curl/docs/HSTS.md deleted file mode 100644 index cecdc75c0..000000000 --- a/Engine/lib/curl/docs/HSTS.md +++ /dev/null @@ -1,44 +0,0 @@ -# HSTS support - -HTTP Strict-Transport-Security. Added as experimental in curl -7.74.0. Supported "for real" since 7.77.0. - -## Standard - -[HTTP Strict Transport Security](https://datatracker.ietf.org/doc/html/rfc6797) - -## Behavior - -libcurl features an in-memory cache for HSTS hosts, so that subsequent -HTTP-only requests to a host name present in the cache will get internally -"redirected" to the HTTPS version. - -## `curl_easy_setopt()` options: - - - `CURLOPT_HSTS_CTRL` - enable HSTS for this easy handle - - `CURLOPT_HSTS` - specify file name where to store the HSTS cache on close - (and possibly read from at startup) - -## curl cmdline options - - - `--hsts [filename]` - enable HSTS, use the file as HSTS cache. If filename - is `""` (no length) then no file will be used, only in-memory cache. - -## HSTS cache file format - -Lines starting with `#` are ignored. - -For each hsts entry: - - [host name] "YYYYMMDD HH:MM:SS" - -The `[host name]` is dot-prefixed if it is a includeSubDomain. - -The time stamp is when the entry expires. - -I considered using wget's file format for the HSTS cache. However, they store the time stamp as the epoch (number of seconds since 1970) and I strongly disagree with using that format. Instead I opted to use a format similar to the curl alt-svc cache file format. - -## Possible future additions - - - `CURLOPT_HSTS_PRELOAD` - provide a set of preloaded HSTS host names - - ability to save to something else than a file diff --git a/Engine/lib/curl/docs/HTTP-COOKIES.md b/Engine/lib/curl/docs/HTTP-COOKIES.md deleted file mode 100644 index 73fa242bb..000000000 --- a/Engine/lib/curl/docs/HTTP-COOKIES.md +++ /dev/null @@ -1,139 +0,0 @@ -# HTTP Cookies - -## Cookie overview - - Cookies are `name=contents` pairs that an HTTP server tells the client to - hold and then the client sends back those to the server on subsequent - requests to the same domains and paths for which the cookies were set. - - Cookies are either "session cookies" which typically are forgotten when the - session is over which is often translated to equal when browser quits, or - the cookies are not session cookies they have expiration dates after which - the client will throw them away. - - Cookies are set to the client with the Set-Cookie: header and are sent to - servers with the Cookie: header. - - For a long time, the only spec explaining how to use cookies was the - original [Netscape spec from 1994](https://curl.se/rfc/cookie_spec.html). - - In 2011, [RFC6265](https://www.ietf.org/rfc/rfc6265.txt) was finally - published and details how cookies work within HTTP. In 2016, an update which - added support for prefixes was - [proposed](https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00), - and in 2017, another update was - [drafted](https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-alone-01) - to deprecate modification of 'secure' cookies from non-secure origins. Both - of these drafts have been incorporated into a proposal to - [replace](https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis-02) - RFC6265. Cookie prefixes and secure cookie modification protection has been - implemented by curl. - -## Cookies saved to disk - - Netscape once created a file format for storing cookies on disk so that they - would survive browser restarts. curl adopted that file format to allow - sharing the cookies with browsers, only to see browsers move away from that - format. Modern browsers no longer use it, while curl still does. - - The Netscape cookie file format stores one cookie per physical line in the - file with a bunch of associated meta data, each field separated with - TAB. That file is called the cookiejar in curl terminology. - - When libcurl saves a cookiejar, it creates a file header of its own in which - there is a URL mention that will link to the web version of this document. - -## Cookie file format - - The cookie file format is text based and stores one cookie per line. Lines - that start with `#` are treated as comments. - - Each line that specifies a single cookie consists of seven text fields - separated with TAB characters. A valid line must end with a newline - character. - -### Fields in the file - - Field number, what type and example data and the meaning of it: - - 0. string `example.com` - the domain name - 1. boolean `FALSE` - include subdomains - 2. string `/foobar/` - path - 3. boolean `TRUE` - send/receive over HTTPS only - 4. number `1462299217` - expires at - seconds since Jan 1st 1970, or 0 - 5. string `person` - name of the cookie - 6. string `daniel` - value of the cookie - -## Cookies with curl the command line tool - - curl has a full cookie "engine" built in. If you just activate it, you can - have curl receive and send cookies exactly as mandated in the specs. - - Command line options: - - `-b, --cookie` - - tell curl a file to read cookies from and start the cookie engine, or if it - is not a file it will pass on the given string. -b name=var works and so does - -b cookiefile. - - `-j, --junk-session-cookies` - - when used in combination with -b, it will skip all "session cookies" on load - so as to appear to start a new cookie session. - - `-c, --cookie-jar` - - tell curl to start the cookie engine and write cookies to the given file - after the request(s) - -## Cookies with libcurl - - libcurl offers several ways to enable and interface the cookie engine. These - options are the ones provided by the native API. libcurl bindings may offer - access to them using other means. - - `CURLOPT_COOKIE` - - Is used when you want to specify the exact contents of a cookie header to - send to the server. - - `CURLOPT_COOKIEFILE` - - Tell libcurl to activate the cookie engine, and to read the initial set of - cookies from the given file. Read-only. - - `CURLOPT_COOKIEJAR` - - Tell libcurl to activate the cookie engine, and when the easy handle is - closed save all known cookies to the given cookiejar file. Write-only. - - `CURLOPT_COOKIELIST` - - Provide detailed information about a single cookie to add to the internal - storage of cookies. Pass in the cookie as an HTTP header with all the - details set, or pass in a line from a Netscape cookie file. This option can - also be used to flush the cookies etc. - - `CURLOPT_COOKIESESSION` - - Tell libcurl to ignore all cookies it is about to load that are session - cookies. - - `CURLINFO_COOKIELIST` - - Extract cookie information from the internal cookie storage as a linked - list. - -## Cookies with JavaScript - - These days a lot of the web is built up by JavaScript. The webbrowser loads - complete programs that render the page you see. These JavaScript programs - can also set and access cookies. - - Since curl and libcurl are plain HTTP clients without any knowledge of or - capability to handle JavaScript, such cookies will not be detected or used. - - Often, if you want to mimic what a browser does on such websites, you can - record web browser HTTP traffic when using such a site and then repeat the - cookie operations using curl or libcurl. diff --git a/Engine/lib/curl/docs/HTTP2.md b/Engine/lib/curl/docs/HTTP2.md deleted file mode 100644 index 35b45ed2f..000000000 --- a/Engine/lib/curl/docs/HTTP2.md +++ /dev/null @@ -1,121 +0,0 @@ -HTTP/2 with curl -================ - -[HTTP/2 Spec](https://www.rfc-editor.org/rfc/rfc7540.txt) -[http2 explained](https://daniel.haxx.se/http2/) - -Build prerequisites -------------------- - - nghttp2 - - OpenSSL, libressl, BoringSSL, NSS, GnuTLS, mbedTLS, wolfSSL or Schannel - with a new enough version. - -[nghttp2](https://nghttp2.org/) -------------------------------- - -libcurl uses this 3rd party library for the low level protocol handling -parts. The reason for this is that HTTP/2 is much more complex at that layer -than HTTP/1.1 (which we implement on our own) and that nghttp2 is an already -existing and well functional library. - -We require at least version 1.12.0. - -Over an http:// URL -------------------- - -If `CURLOPT_HTTP_VERSION` is set to `CURL_HTTP_VERSION_2_0`, libcurl will -include an upgrade header in the initial request to the host to allow -upgrading to HTTP/2. - -Possibly we can later introduce an option that will cause libcurl to fail if -not possible to upgrade. Possibly we introduce an option that makes libcurl -use HTTP/2 at once over http:// - -Over an https:// URL --------------------- - -If `CURLOPT_HTTP_VERSION` is set to `CURL_HTTP_VERSION_2_0`, libcurl will use -ALPN (or NPN) to negotiate which protocol to continue with. Possibly introduce -an option that will cause libcurl to fail if not possible to use HTTP/2. - -`CURL_HTTP_VERSION_2TLS` was added in 7.47.0 as a way to ask libcurl to prefer -HTTP/2 for HTTPS but stick to 1.1 by default for plain old HTTP connections. - -ALPN is the TLS extension that HTTP/2 is expected to use. The NPN extension is -for a similar purpose, was made prior to ALPN and is used for SPDY so early -HTTP/2 servers are implemented using NPN before ALPN support is widespread. - -`CURLOPT_SSL_ENABLE_ALPN` and `CURLOPT_SSL_ENABLE_NPN` are offered to allow -applications to explicitly disable ALPN or NPN. - -SSL libs --------- - -The challenge is the ALPN and NPN support and all our different SSL -backends. You may need a fairly updated SSL library version for it to provide -the necessary TLS features. Right now we support: - - - OpenSSL: ALPN and NPN - - libressl: ALPN and NPN - - BoringSSL: ALPN and NPN - - NSS: ALPN and NPN - - GnuTLS: ALPN - - mbedTLS: ALPN - - Schannel: ALPN - - wolfSSL: ALPN - - Secure Transport: ALPN - -Multiplexing ------------- - -Starting in 7.43.0, libcurl fully supports HTTP/2 multiplexing, which is the -term for doing multiple independent transfers over the same physical TCP -connection. - -To take advantage of multiplexing, you need to use the multi interface and set -`CURLMOPT_PIPELINING` to `CURLPIPE_MULTIPLEX`. With that bit set, libcurl will -attempt to re-use existing HTTP/2 connections and just add a new stream over -that when doing subsequent parallel requests. - -While libcurl sets up a connection to an HTTP server there is a period during -which it does not know if it can pipeline or do multiplexing and if you add new -transfers in that period, libcurl will default to start new connections for -those transfers. With the new option `CURLOPT_PIPEWAIT` (added in 7.43.0), you -can ask that a transfer should rather wait and see in case there's a -connection for the same host in progress that might end up being possible to -multiplex on. It favours keeping the number of connections low to the cost of -slightly longer time to first byte transferred. - -Applications ------------- - -We hide HTTP/2's binary nature and convert received HTTP/2 traffic to headers -in HTTP 1.1 style. This allows applications to work unmodified. - -curl tool ---------- - -curl offers the `--http2` command line option to enable use of HTTP/2. - -curl offers the `--http2-prior-knowledge` command line option to enable use of -HTTP/2 without HTTP/1.1 Upgrade. - -Since 7.47.0, the curl tool enables HTTP/2 by default for HTTPS connections. - -curl tool limitations ---------------------- - -The command line tool does not support HTTP/2 server push. It supports -multiplexing when the parallel transfer option is used. - -HTTP Alternative Services -------------------------- - -Alt-Svc is an extension with a corresponding frame (ALTSVC) in HTTP/2 that -tells the client about an alternative "route" to the same content for the same -origin server that you get the response from. A browser or long-living client -can use that hint to create a new connection asynchronously. For libcurl, we -may introduce a way to bring such clues to the application and/or let a -subsequent request use the alternate route automatically. - -[Detailed in RFC 7838](https://datatracker.ietf.org/doc/html/rfc7838) diff --git a/Engine/lib/curl/docs/HTTP3.md b/Engine/lib/curl/docs/HTTP3.md deleted file mode 100644 index bf2c5e1d7..000000000 --- a/Engine/lib/curl/docs/HTTP3.md +++ /dev/null @@ -1,316 +0,0 @@ -# HTTP3 (and QUIC) - -## Resources - -[HTTP/3 Explained](https://http3-explained.haxx.se/en/) - the online free -book describing the protocols involved. - -[quicwg.org](https://quicwg.org/) - home of the official protocol drafts - -## QUIC libraries - -QUIC libraries we are experimenting with: - -[ngtcp2](https://github.com/ngtcp2/ngtcp2) - -[quiche](https://github.com/cloudflare/quiche) - -[msquic](https://github.com/microsoft/msquic) & [msh3](https://github.com/nibanks/msh3) - -## Experimental - -HTTP/3 and QUIC support in curl is considered **EXPERIMENTAL** until further -notice. It needs to be enabled at build-time. - -Further development and tweaking of the HTTP/3 support in curl will happen in -the master branch using pull-requests, just like ordinary changes. - -# ngtcp2 version - -## Build with OpenSSL - -Build (patched) OpenSSL - - % git clone --depth 1 -b openssl-3.0.0+quic https://github.com/quictls/openssl - % cd openssl - % ./config enable-tls1_3 --prefix= - % make - % make install - -Build nghttp3 - - % cd .. - % git clone https://github.com/ngtcp2/nghttp3 - % cd nghttp3 - % autoreconf -fi - % ./configure --prefix= --enable-lib-only - % make - % make install - -Build ngtcp2 - - % cd .. - % git clone https://github.com/ngtcp2/ngtcp2 - % cd ngtcp2 - % autoreconf -fi - % ./configure PKG_CONFIG_PATH=/lib/pkgconfig:/lib/pkgconfig LDFLAGS="-Wl,-rpath,/lib" --prefix= --enable-lib-only - % make - % make install - -Build curl - - % cd .. - % git clone https://github.com/curl/curl - % cd curl - % autoreconf -fi - % LDFLAGS="-Wl,-rpath,/lib" ./configure --with-openssl= --with-nghttp3= --with-ngtcp2= - % make - % make install - -For OpenSSL 3.0.0 or later builds on Linux for x86_64 architecture, substitute all occurrences of "/lib" with "/lib64" - -## Build with GnuTLS - -Build GnuTLS - - % git clone --depth 1 https://gitlab.com/gnutls/gnutls.git - % cd gnutls - % ./bootstrap - % ./configure --prefix= - % make - % make install - -Build nghttp3 - - % cd .. - % git clone https://github.com/ngtcp2/nghttp3 - % cd nghttp3 - % autoreconf -fi - % ./configure --prefix= --enable-lib-only - % make - % make install - -Build ngtcp2 - - % cd .. - % git clone https://github.com/ngtcp2/ngtcp2 - % cd ngtcp2 - % autoreconf -fi - % ./configure PKG_CONFIG_PATH=/lib/pkgconfig:/lib/pkgconfig LDFLAGS="-Wl,-rpath,/lib" --prefix= --enable-lib-only --with-gnutls - % make - % make install - -Build curl - - % cd .. - % git clone https://github.com/curl/curl - % cd curl - % autoreconf -fi - % ./configure --without-openssl --with-gnutls= --with-nghttp3= --with-ngtcp2= - % make - % make install - -## Build with wolfSSL - -Build wolfSSL - - % git clone https://github.com/wolfSSL/wolfssl.git - % cd wolfssl - % autoreconf -fi - % ./configure --prefix= --enable-quic --enable-session-ticket --enable-earlydata --enable-psk --enable-harden --enable-altcertchains - % make - % make install - -Build nghttp3 - - % cd .. - % git clone https://github.com/ngtcp2/nghttp3 - % cd nghttp3 - % autoreconf -fi - % ./configure --prefix= --enable-lib-only - % make - % make install - -Build ngtcp2 (once https://github.com/ngtcp2/ngtcp2/pull/505 is merged) - - % cd .. - % git clone https://github.com/ngtcp2/ngtcp2 - % cd ngtcp2 - % autoreconf -fi - % ./configure PKG_CONFIG_PATH=/lib/pkgconfig:/lib/pkgconfig LDFLAGS="-Wl,-rpath,/lib" --prefix= --enable-lib-only --with-wolfssl - % make - % make install - -Build curl - - % cd .. - % git clone https://github.com/curl/curl - % cd curl - % autoreconf -fi - % ./configure --without-openssl --with-wolfssl= --with-nghttp3= --with-ngtcp2= - % make - % make install - -# quiche version - -## build - -Build quiche and BoringSSL: - - % git clone --recursive https://github.com/cloudflare/quiche - % cd quiche - % cargo build --package quiche --release --features ffi,pkg-config-meta,qlog - % mkdir quiche/deps/boringssl/src/lib - % ln -vnf $(find target/release -name libcrypto.a -o -name libssl.a) quiche/deps/boringssl/src/lib/ - -Build curl: - - % cd .. - % git clone https://github.com/curl/curl - % cd curl - % autoreconf -fi - % ./configure LDFLAGS="-Wl,-rpath,$PWD/../quiche/target/release" --with-openssl=$PWD/../quiche/quiche/deps/boringssl/src --with-quiche=$PWD/../quiche/target/release - % make - % make install - - If `make install` results in `Permission denied` error, you will need to prepend it with `sudo`. - -# msh3 (msquic) version - -## Build Linux (with quictls fork of OpenSSL) - -Build msh3: - - % git clone -b v0.4.0 --depth 1 --recursive https://github.com/nibanks/msh3 - % cd msh3 && mkdir build && cd build - % cmake -G 'Unix Makefiles' -DCMAKE_BUILD_TYPE=RelWithDebInfo .. - % cmake --build . - % cmake --install . - -Build curl: - - % git clone https://github.com/curl/curl - % cd curl - % autoreconf -fi - % ./configure LDFLAGS="-Wl,-rpath,/usr/local/lib" --with-msh3=/usr/local --with-openssl - % make - % make install - -Run from `/usr/local/bin/curl`. - -## Build Windows - -Build msh3: - - % git clone -b v0.4.0 --depth 1 --recursive https://github.com/nibanks/msh3 - % cd msh3 && mkdir build && cd build - % cmake -G 'Visual Studio 17 2022' -DCMAKE_BUILD_TYPE=RelWithDebInfo .. - % cmake --build . --config Release - % cmake --install . --config Release - -**Note** - On Windows, Schannel will be used for TLS support by default. If -you with to use (the quictls fork of) OpenSSL, specify the `-DQUIC_TLS=openssl` -option to the generate command above. Also note that OpenSSL brings with it an -additional set of build dependencies not specified here. - -Build curl (in [Visual Studio Command prompt](../winbuild/README.md#open-a-command-prompt)): - - % git clone https://github.com/curl/curl - % cd curl/winbuild - % nmake /f Makefile.vc mode=dll WITH_MSH3=dll MSH3_PATH="C:/Program Files/msh3" MACHINE=x64 - -**Note** - If you encounter a build error with `tool_hugehelp.c` being missing, -rename `tool_hugehelp.c.cvs` in the same directory to `tool_hugehelp.c` and -then run `nmake` again. - -Run in the `C:/Program Files/msh3/lib` directory, copy `curl.exe` to that -directory, or copy `msquic.dll` and `msh3.dll` from that directory to the -`curl.exe` directory. For example: - - % C:\Program Files\msh3\lib> F:\curl\builds\libcurl-vc-x64-release-dll-ipv6-sspi-schannel-msh3\bin\curl.exe --http3 https://www.google.com - -# `--http3` - -Use HTTP/3 directly: - - curl --http3 https://nghttp2.org:4433/ - -Upgrade via Alt-Svc: - - curl --alt-svc altsvc.cache https://quic.aiortc.org/ - -See this [list of public HTTP/3 servers](https://bagder.github.io/HTTP3-test/) - -## Known Bugs - -Check out the [list of known HTTP3 bugs](https://curl.se/docs/knownbugs.html#HTTP3). - -# HTTP/3 Test server - -This is not advice on how to run anything in production. This is for -development and experimenting. - -## Prerequisite(s) - -An existing local HTTP/1.1 server that hosts files. Preferably also a few huge -ones. You can easily create huge local files like `truncate -s=8G 8GB` - they -are huge but do not occupy that much space on disk since they are just big -holes. - -In my Debian setup I just installed **apache2**. It runs on port 80 and has a -document root in `/var/www/html`. I can get the 8GB file from it with `curl -localhost/8GB -o dev/null` - -In this description we setup and run an HTTP/3 reverse-proxy in front of the -HTTP/1 server. - -## Setup - -You can select either or both of these server solutions. - -### nghttpx - -Get, build and install **quictls**, **nghttp3** and **ngtcp2** as described -above. - -Get, build and install **nghttp2**: - - git clone https://github.com/nghttp2/nghttp2.git - cd nghttp2 - autoreconf -fi - PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/daniel/build-quictls/lib/pkgconfig:/home/daniel/build-nghttp3/lib/pkgconfig:/home/daniel/build-ngtcp2/lib/pkgconfig LDFLAGS=-L/home/daniel/build-quictls/lib CFLAGS=-I/home/daniel/build-quictls/include ./configure --enable-maintainer-mode --prefix=/home/daniel/build-nghttp2 --disable-shared --enable-app --enable-http3 --without-jemalloc --without-libxml2 --without-systemd - make && make install - -Run the local h3 server on port 9443, make it proxy all traffic through to -HTTP/1 on localhost port 80. For local toying, we can just use the test cert -that exists in curl's test dir. - - CERT=$CURLSRC/tests/stunnel.pem - $HOME/bin/nghttpx $CERT $CERT --backend=localhost,80 \ - --frontend="localhost,9443;quic" - -### Caddy - -[Install caddy](https://caddyserver.com/docs/install), you can even put the -single binary in a separate directory if you prefer. - -In the same directory you put caddy, create a `Caddyfile` with the following -content to run an HTTP/3 reverse-proxy on port 7443: -~~~ -{ - auto_https disable_redirects - servers :7443 { - protocol { - experimental_http3 - } - } -} - -localhost:7443 { - reverse_proxy localhost:80 -} -~~~ - -Then run caddy: - - ./caddy start diff --git a/Engine/lib/curl/docs/HYPER.md b/Engine/lib/curl/docs/HYPER.md deleted file mode 100644 index ad23a9039..000000000 --- a/Engine/lib/curl/docs/HYPER.md +++ /dev/null @@ -1,73 +0,0 @@ -# Hyper - -Hyper is a separate HTTP library written in Rust. curl can be told to use this -library as a backend to deal with HTTP. - -## Experimental! - -Hyper support in curl is considered **EXPERIMENTAL** until further notice. It -needs to be explicitly enabled at build-time. - -Further development and tweaking of the Hyper backend support in curl will -happen in in the master branch using pull-requests, just like ordinary -changes. - -## Hyper version - -The C API for Hyper is brand new and is still under development. - -## build curl with hyper - -Since March 3 2022, hyper needs the nightly rustc to build, which you may need -to install first with: - - % rustup toolchain install nightly - -Then build hyper and enable its C API like this: - - % git clone https://github.com/hyperium/hyper - % cd hyper - % RUSTFLAGS="--cfg hyper_unstable_ffi" cargo +nightly rustc --features client,http1,http2,ffi -Z unstable-options --crate-type cdylib - -Build curl to use hyper's C API: - - % git clone https://github.com/curl/curl - % cd curl - % autoreconf -fi - % ./configure --with-hyper= - % make - -# using Hyper internally - -Hyper is a low level HTTP transport library. curl itself provides all HTTP -headers and Hyper provides all received headers back to curl. - -Therefore, most of the "header logic" in curl as in responding to and acting -on specific input and output headers are done the same way in curl code. - -The API in Hyper delivers received HTTP headers as (cleaned up) name=value -pairs, making it impossible for curl to know the exact byte representation -over the wire with Hyper. - -## Limitations - -The hyper backend does not support - -- `CURLOPT_IGNORE_CONTENT_LENGTH` -- `--raw` and disabling `CURLOPT_HTTP_TRANSFER_DECODING` -- RTSP -- hyper is much stricter about what HTTP header contents it allows -- HTTP/0.9 -- HTTP/2 upgrade using HTTP:// URLs. Aka 'h2c' - -## Remaining issues - -This backend is still not feature complete with the native backend. Areas that -still need attention and verification include: - -- multiplexed HTTP/2 -- h2 Upgrade: -- pausing transfers -- receiving HTTP/1 trailers -- sending HTTP/1 trailers - diff --git a/Engine/lib/curl/docs/INSTALL b/Engine/lib/curl/docs/INSTALL deleted file mode 100644 index ff260b1b1..000000000 --- a/Engine/lib/curl/docs/INSTALL +++ /dev/null @@ -1,9 +0,0 @@ - _ _ ____ _ - ___| | | | _ \| | - / __| | | | |_) | | - | (__| |_| | _ <| |___ - \___|\___/|_| \_\_____| - - How To Compile - -see INSTALL.md diff --git a/Engine/lib/curl/docs/INSTALL.cmake b/Engine/lib/curl/docs/INSTALL.cmake deleted file mode 100644 index 3f905d79a..000000000 --- a/Engine/lib/curl/docs/INSTALL.cmake +++ /dev/null @@ -1,89 +0,0 @@ - _ _ ____ _ - ___| | | | _ \| | - / __| | | | |_) | | - | (__| |_| | _ <| |___ - \___|\___/|_| \_\_____| - - How To Compile with CMake - -Building with CMake -========================== - This document describes how to compile, build and install curl and libcurl - from source code using the CMake build tool. To build with CMake, you will - of course have to first install CMake. The minimum required version of - CMake is specified in the file CMakeLists.txt found in the top of the curl - source tree. Once the correct version of CMake is installed you can follow - the instructions below for the platform you are building on. - - CMake builds can be configured either from the command line, or from one - of CMake's GUI's. - -Current flaws in the curl CMake build -===================================== - - Missing features in the cmake build: - - - Builds libcurl without large file support - - Does not support all SSL libraries (only OpenSSL, Schannel, - Secure Transport, and mbed TLS, NSS, WolfSSL) - - Does not allow different resolver backends (no c-ares build support) - - No RTMP support built - - Does not allow build curl and libcurl debug enabled - - Does not allow a custom CA bundle path - - Does not allow you to disable specific protocols from the build - - Does not find or use krb4 or GSS - - Rebuilds test files too eagerly, but still cannot run the tests - - Does not detect the correct strerror_r flavor when cross-compiling (issue #1123) - - -Command Line CMake -================== - A CMake build of curl is similar to the autotools build of curl. It - consists of the following steps after you have unpacked the source. - - 1. Create an out of source build tree parallel to the curl source - tree and change into that directory - - $ mkdir curl-build - $ cd curl-build - - 2. Run CMake from the build tree, giving it the path to the top of - the curl source tree. CMake will pick a compiler for you. If you - want to specify the compile, you can set the CC environment - variable prior to running CMake. - - $ cmake ../curl - $ make - - 3. Install to default location: - - $ make install - - (The test suite does not work with the cmake build) - -ccmake -========= - CMake comes with a curses based interface called ccmake. To run ccmake on - a curl use the instructions for the command line cmake, but substitute - ccmake ../curl for cmake ../curl. This will bring up a curses interface - with instructions on the bottom of the screen. You can press the "c" key - to configure the project, and the "g" key to generate the project. After - the project is generated, you can run make. - -cmake-gui -========= - CMake also comes with a Qt based GUI called cmake-gui. To configure with - cmake-gui, you run cmake-gui and follow these steps: - 1. Fill in the "Where is the source code" combo box with the path to - the curl source tree. - 2. Fill in the "Where to build the binaries" combo box with the path - to the directory for your build tree, ideally this should not be the - same as the source tree, but a parallel directory called curl-build or - something similar. - 3. Once the source and binary directories are specified, press the - "Configure" button. - 4. Select the native build tool that you want to use. - 5. At this point you can change any of the options presented in the - GUI. Once you have selected all the options you want, click the - "Generate" button. - 6. Run the native build tool that you used CMake to generate. diff --git a/Engine/lib/curl/docs/INSTALL.md b/Engine/lib/curl/docs/INSTALL.md deleted file mode 100644 index 03d73843a..000000000 --- a/Engine/lib/curl/docs/INSTALL.md +++ /dev/null @@ -1,556 +0,0 @@ -# how to install curl and libcurl - -## Installing Binary Packages - -Lots of people download binary distributions of curl and libcurl. This -document does not describe how to install curl or libcurl using such a binary -package. This document describes how to compile, build and install curl and -libcurl from source code. - -## Building using vcpkg - -You can download and install curl and libcurl using the [vcpkg](https://github.com/Microsoft/vcpkg/) dependency manager: - - git clone https://github.com/Microsoft/vcpkg.git - cd vcpkg - ./bootstrap-vcpkg.sh - ./vcpkg integrate install - vcpkg install curl[tool] - -The curl port in vcpkg is kept up to date by Microsoft team members and community contributors. If the version is out of date, please [create an issue or pull request](https://github.com/Microsoft/vcpkg) on the vcpkg repository. - -## Building from git - -If you get your code off a git repository instead of a release tarball, see -the `GIT-INFO` file in the root directory for specific instructions on how to -proceed. - -# Unix - -A normal Unix installation is made in three or four steps (after you have -unpacked the source archive): - - ./configure --with-openssl [--with-gnutls --with-wolfssl] - make - make test (optional) - make install - -(Adjust the configure line accordingly to use the TLS library you want.) - -You probably need to be root when doing the last command. - -Get a full listing of all available configure options by invoking it like: - - ./configure --help - -If you want to install curl in a different file hierarchy than `/usr/local`, -specify that when running configure: - - ./configure --prefix=/path/to/curl/tree - -If you have write permission in that directory, you can do 'make install' -without being root. An example of this would be to make a local install in -your own home directory: - - ./configure --prefix=$HOME - make - make install - -The configure script always tries to find a working SSL library unless -explicitly told not to. If you have OpenSSL installed in the default search -path for your compiler/linker, you do not need to do anything special. If you -have OpenSSL installed in `/usr/local/ssl`, you can run configure like: - - ./configure --with-openssl - -If you have OpenSSL installed somewhere else (for example, `/opt/OpenSSL`) and -you have pkg-config installed, set the pkg-config path first, like this: - - env PKG_CONFIG_PATH=/opt/OpenSSL/lib/pkgconfig ./configure --with-openssl - -Without pkg-config installed, use this: - - ./configure --with-openssl=/opt/OpenSSL - -If you insist on forcing a build without SSL support, even though you may -have OpenSSL installed in your system, you can run configure like this: - - ./configure --without-ssl - -If you have OpenSSL installed, but with the libraries in one place and the -header files somewhere else, you have to set the `LDFLAGS` and `CPPFLAGS` -environment variables prior to running configure. Something like this should -work: - - CPPFLAGS="-I/path/to/ssl/include" LDFLAGS="-L/path/to/ssl/lib" ./configure - -If you have shared SSL libs installed in a directory where your runtime -linker does not find them (which usually causes configure failures), you can -provide this option to gcc to set a hard-coded path to the runtime linker: - - LDFLAGS=-Wl,-R/usr/local/ssl/lib ./configure --with-openssl - -## More Options - -To force a static library compile, disable the shared library creation by -running configure like: - - ./configure --disable-shared - -To tell the configure script to skip searching for thread-safe functions, add -an option like: - - ./configure --disable-thread - -If you are a curl developer and use gcc, you might want to enable more debug -options with the `--enable-debug` option. - -curl can be built to use a whole range of libraries to provide various useful -services, and configure will try to auto-detect a decent default. But if you -want to alter it, you can select how to deal with each individual library. - -## Select TLS backend - -These options are provided to select the TLS backend to use. - - - AmiSSL: `--with-amissl` - - BearSSL: `--with-bearssl` - - GnuTLS: `--with-gnutls`. - - mbedTLS: `--with-mbedtls` - - NSS: `--with-nss` - - OpenSSL: `--with-openssl` (also for BoringSSL and libressl) - - rustls: `--with-rustls` - - schannel: `--with-schannel` - - secure transport: `--with-secure-transport` - - wolfSSL: `--with-wolfssl` - -# Windows - -## Building Windows DLLs and C runtime (CRT) linkage issues - - As a general rule, building a DLL with static CRT linkage is highly - discouraged, and intermixing CRTs in the same app is something to avoid at - any cost. - - Reading and comprehending Microsoft Knowledge Base articles KB94248 and - KB140584 is a must for any Windows developer. Especially important is full - understanding if you are not going to follow the advice given above. - - - [How To Use the C Run-Time](https://support.microsoft.com/help/94248/how-to-use-the-c-run-time) - - [Run-Time Library Compiler Options](https://docs.microsoft.com/cpp/build/reference/md-mt-ld-use-run-time-library) - - [Potential Errors Passing CRT Objects Across DLL Boundaries](https://docs.microsoft.com/cpp/c-runtime-library/potential-errors-passing-crt-objects-across-dll-boundaries) - -If your app is misbehaving in some strange way, or it is suffering from -memory corruption, before asking for further help, please try first to -rebuild every single library your app uses as well as your app using the -debug multithreaded dynamic C runtime. - - If you get linkage errors read section 5.7 of the FAQ document. - -## MingW32 - -Make sure that MinGW32's bin directory is in the search path, for example: - -```cmd -set PATH=c:\mingw32\bin;%PATH% -``` - -then run `mingw32-make mingw32` in the root dir. There are other -make targets available to build libcurl with more features, use: - - - `mingw32-make mingw32-zlib` to build with Zlib support; - - `mingw32-make mingw32-ssl-zlib` to build with SSL and Zlib enabled; - - `mingw32-make mingw32-ssh2-ssl-zlib` to build with SSH2, SSL, Zlib; - - `mingw32-make mingw32-ssh2-ssl-sspi-zlib` to build with SSH2, SSL, Zlib - and SSPI support. - -If you have any problems linking libraries or finding header files, be sure -to verify that the provided `Makefile.m32` files use the proper paths, and -adjust as necessary. It is also possible to override these paths with -environment variables, for example: - -```cmd -set ZLIB_PATH=c:\zlib-1.2.8 -set OPENSSL_PATH=c:\openssl-1.0.2c -set LIBSSH2_PATH=c:\libssh2-1.6.0 -``` - -It is also possible to build with other LDAP SDKs than MS LDAP; currently -it is possible to build with native Win32 OpenLDAP, or with the Novell CLDAP -SDK. If you want to use these you need to set these vars: - -```cmd -set LDAP_SDK=c:\openldap -set USE_LDAP_OPENLDAP=1 -``` - -or for using the Novell SDK: - -```cmd -set USE_LDAP_NOVELL=1 -``` - -If you want to enable LDAPS support then set LDAPS=1. - -## Cygwin - -Almost identical to the Unix installation. Run the configure script in the -curl source tree root with `sh configure`. Make sure you have the `sh` -executable in `/bin/` or you will see the configure fail toward the end. - -Run `make` - -## Disabling Specific Protocols in Windows builds - -The configure utility, unfortunately, is not available for the Windows -environment, therefore, you cannot use the various disable-protocol options of -the configure utility on this platform. - -You can use specific defines to disable specific protocols and features. See -[CURL-DISABLE.md](CURL-DISABLE.md) for the full list. - -If you want to set any of these defines you have the following options: - - - Modify `lib/config-win32.h` - - Modify `lib/curl_setup.h` - - Modify `winbuild/Makefile.vc` - - Modify the "Preprocessor Definitions" in the libcurl project - -Note: The pre-processor settings can be found using the Visual Studio IDE -under "Project -> Properties -> Configuration Properties -> C/C++ -> -Preprocessor". - -## Using BSD-style lwIP instead of Winsock TCP/IP stack in Win32 builds - -In order to compile libcurl and curl using BSD-style lwIP TCP/IP stack it is -necessary to make the definition of the preprocessor symbol `USE_LWIPSOCK` -visible to libcurl and curl compilation processes. To set this definition you -have the following alternatives: - - - Modify `lib/config-win32.h` and `src/config-win32.h` - - Modify `winbuild/Makefile.vc` - - Modify the "Preprocessor Definitions" in the libcurl project - -Note: The pre-processor settings can be found using the Visual Studio IDE -under "Project -> Properties -> Configuration Properties -> C/C++ -> -Preprocessor". - -Once that libcurl has been built with BSD-style lwIP TCP/IP stack support, in -order to use it with your program it is mandatory that your program includes -lwIP header file `` (or another lwIP header that includes this) -before including any libcurl header. Your program does not need the -`USE_LWIPSOCK` preprocessor definition which is for libcurl internals only. - -Compilation has been verified with [lwIP -1.4.0](https://download.savannah.gnu.org/releases/lwip/lwip-1.4.0.zip) and -[contrib-1.4.0](https://download.savannah.gnu.org/releases/lwip/contrib-1.4.0.zip). - -This BSD-style lwIP TCP/IP stack support must be considered experimental given -that it has been verified that lwIP 1.4.0 still needs some polish, and libcurl -might yet need some additional adjustment, caveat emptor. - -## Important static libcurl usage note - -When building an application that uses the static libcurl library on Windows, -you must add `-DCURL_STATICLIB` to your `CFLAGS`. Otherwise the linker will -look for dynamic import symbols. - -## Legacy Windows and SSL - -Schannel (from Windows SSPI), is the native SSL library in Windows. However, -Schannel in Windows <= XP is unable to connect to servers that -no longer support the legacy handshakes and algorithms used by those -versions. If you will be using curl in one of those earlier versions of -Windows you should choose another SSL backend such as OpenSSL. - -# Apple Platforms (macOS, iOS, tvOS, watchOS, and their simulator counterparts) - -On modern Apple operating systems, curl can be built to use Apple's SSL/TLS -implementation, Secure Transport, instead of OpenSSL. To build with Secure -Transport for SSL/TLS, use the configure option `--with-secure-transport`. (It -is not necessary to use the option `--without-openssl`.) - -When Secure Transport is in use, the curl options `--cacert` and `--capath` -and their libcurl equivalents, will be ignored, because Secure Transport uses -the certificates stored in the Keychain to evaluate whether or not to trust -the server. This, of course, includes the root certificates that ship with the -OS. The `--cert` and `--engine` options, and their libcurl equivalents, are -currently unimplemented in curl with Secure Transport. - -In general, a curl build for an Apple `ARCH/SDK/DEPLOYMENT_TARGET` combination -can be taken by providing appropriate values for `ARCH`, `SDK`, `DEPLOYMENT_TARGET` -below and running the commands: - -```bash -# Set these three according to your needs -export ARCH=x86_64 -export SDK=macosx -export DEPLOYMENT_TARGET=10.8 - -export CFLAGS="-arch $ARCH -isysroot $(xcrun -sdk $SDK --show-sdk-path) -m$SDK-version-min=$DEPLOYMENT_TARGET" -./configure --host=$ARCH-apple-darwin --prefix $(pwd)/artifacts --with-secure-transport -make -j8 -make install -``` - -Above will build curl for macOS platform with `x86_64` architecture and `10.8` as deployment target. - -Here is an example for iOS device: - -```bash -export ARCH=arm64 -export SDK=iphoneos -export DEPLOYMENT_TARGET=11.0 - -export CFLAGS="-arch $ARCH -isysroot $(xcrun -sdk $SDK --show-sdk-path) -m$SDK-version-min=$DEPLOYMENT_TARGET" -./configure --host=$ARCH-apple-darwin --prefix $(pwd)/artifacts --with-secure-transport -make -j8 -make install -``` - -Another example for watchOS simulator for macs with Apple Silicon: - -```bash -export ARCH=arm64 -export SDK=watchsimulator -export DEPLOYMENT_TARGET=5.0 - -export CFLAGS="-arch $ARCH -isysroot $(xcrun -sdk $SDK --show-sdk-path) -m$SDK-version-min=$DEPLOYMENT_TARGET" -./configure --host=$ARCH-apple-darwin --prefix $(pwd)/artifacts --with-secure-transport -make -j8 -make install -``` - -In all above, the built libraries and executables can be found in the -`artifacts` folder. - -# Android - -When building curl for Android it's recommended to use a Linux environment -since using curl's `configure` script is the easiest way to build curl -for Android. Before you can build curl for Android, you need to install the -Android NDK first. This can be done using the SDK Manager that is part of -Android Studio. Once you have installed the Android NDK, you need to figure out -where it has been installed and then set up some environment variables before -launching `configure`. On macOS, those variables could look like this to compile -for `aarch64` and API level 29: - -```bash -export NDK=~/Library/Android/sdk/ndk/20.1.5948944 -export HOST_TAG=darwin-x86_64 -export TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/$HOST_TAG -export AR=$TOOLCHAIN/bin/aarch64-linux-android-ar -export AS=$TOOLCHAIN/bin/aarch64-linux-android-as -export CC=$TOOLCHAIN/bin/aarch64-linux-android29-clang -export CXX=$TOOLCHAIN/bin/aarch64-linux-android29-clang++ -export LD=$TOOLCHAIN/bin/aarch64-linux-android-ld -export RANLIB=$TOOLCHAIN/bin/aarch64-linux-android-ranlib -export STRIP=$TOOLCHAIN/bin/aarch64-linux-android-strip -``` - -When building on Linux or targeting other API levels or architectures, you need -to adjust those variables accordingly. After that you can build curl like this: - - ./configure --host aarch64-linux-android --with-pic --disable-shared - -Note that this will not give you SSL/TLS support. If you need SSL/TLS, you have -to build curl against a SSL/TLS layer, e.g. OpenSSL, because it's impossible for -curl to access Android's native SSL/TLS layer. To build curl for Android using -OpenSSL, follow the OpenSSL build instructions and then install `libssl.a` and -`libcrypto.a` to `$TOOLCHAIN/sysroot/usr/lib` and copy `include/openssl` to -`$TOOLCHAIN/sysroot/usr/include`. Now you can build curl for Android using -OpenSSL like this: - - ./configure --host aarch64-linux-android --with-pic --disable-shared --with-openssl="$TOOLCHAIN/sysroot/usr" - -Note, however, that you must target at least Android M (API level 23) or `configure` -will not be able to detect OpenSSL since `stderr` (and the like) were not defined -before Android M. - -# IBM i - -For IBM i (formerly OS/400), you can use curl in two different ways: - -- Natively, running in the **ILE**. The obvious use is being able to call curl - from ILE C or RPG applications. - - You will need to build this from source. See `packages/OS400/README` for - the ILE specific build instructions. -- In the **PASE** environment, which runs AIX programs. curl will be built as - it would be on AIX. - - IBM provides builds of curl in their Yum repository for PASE software. - - To build from source, follow the Unix instructions. - -There are some additional limitations and quirks with curl on this platform; -they affect both environments. - -## Multithreading notes - -By default, jobs in IBM i will not start with threading enabled. (Exceptions -include interactive PASE sessions started by `QP2TERM` or SSH.) If you use -curl in an environment without threading when options like async DNS were -enabled, you will get messages like: - -``` -getaddrinfo() thread failed to start -``` - -Do not panic. curl and your program are not broken. You can fix this by: - -- Set the environment variable `QIBM_MULTI_THREADED` to `Y` before starting - your program. This can be done at whatever scope you feel is appropriate. -- Alternatively, start the job with the `ALWMLTTHD` parameter set to `*YES`. - -# Cross compile - -Download and unpack the curl package. - -`cd` to the new directory. (e.g. `cd curl-7.12.3`) - -Set environment variables to point to the cross-compile toolchain and call -configure with any options you need. Be sure and specify the `--host` and -`--build` parameters at configuration time. The following script is an -example of cross-compiling for the IBM 405GP PowerPC processor using the -toolchain from MonteVista for Hardhat Linux. - -```bash -#! /bin/sh - -export PATH=$PATH:/opt/hardhat/devkit/ppc/405/bin -export CPPFLAGS="-I/opt/hardhat/devkit/ppc/405/target/usr/include" -export AR=ppc_405-ar -export AS=ppc_405-as -export LD=ppc_405-ld -export RANLIB=ppc_405-ranlib -export CC=ppc_405-gcc -export NM=ppc_405-nm - -./configure --target=powerpc-hardhat-linux - --host=powerpc-hardhat-linux - --build=i586-pc-linux-gnu - --prefix=/opt/hardhat/devkit/ppc/405/target/usr/local - --exec-prefix=/usr/local -``` - -You may also need to provide a parameter like `--with-random=/dev/urandom` to -configure as it cannot detect the presence of a random number generating -device for a target system. The `--prefix` parameter specifies where curl -will be installed. If `configure` completes successfully, do `make` and `make -install` as usual. - -In some cases, you may be able to simplify the above commands to as little as: - - ./configure --host=ARCH-OS - -# REDUCING SIZE - -There are a number of configure options that can be used to reduce the size of -libcurl for embedded applications where binary size is an important factor. -First, be sure to set the `CFLAGS` variable when configuring with any relevant -compiler optimization flags to reduce the size of the binary. For gcc, this -would mean at minimum the -Os option, and potentially the `-march=X`, -`-mdynamic-no-pic` and `-flto` options as well, e.g. - - ./configure CFLAGS='-Os' LDFLAGS='-Wl,-Bsymbolic'... - -Note that newer compilers often produce smaller code than older versions -due to improved optimization. - -Be sure to specify as many `--disable-` and `--without-` flags on the -configure command-line as you can to disable all the libcurl features that you -know your application is not going to need. Besides specifying the -`--disable-PROTOCOL` flags for all the types of URLs your application will not -use, here are some other flags that can reduce the size of the library by -disabling support for some feature: - - - `--disable-alt-svc` (HTTP Alt-Srv) - - `--disable-ares` (the C-ARES DNS library) - - `--disable-cookies` (HTTP cookies) - - `--disable-crypto-auth` (cryptographic authentication) - - `--disable-dateparse` (date parsing for time conditionals) - - `--disable-dnsshuffle` (internal server load spreading) - - `--disable-doh` (DNS-over-HTTP) - - `--disable-get-easy-options` (lookup easy options at runtime) - - `--disable-hsts` (HTTP Strict Transport Security) - - `--disable-http-auth` (all HTTP authentication) - - `--disable-ipv6` (IPv6) - - `--disable-libcurl-option` (--libcurl C code generation support) - - `--disable-manual` (built-in documentation) - - `--disable-netrc` (.netrc file) - - `--disable-ntlm-wb` (NTLM WinBind) - - `--disable-progress-meter` (graphical progress meter in library) - - `--disable-proxy` (HTTP and SOCKS proxies) - - `--disable-pthreads` (multithreading) - - `--disable-socketpair` (socketpair for async name resolving) - - `--disable-threaded-resolver` (threaded name resolver) - - `--disable-tls-srp` (Secure Remote Password authentication for TLS) - - `--disable-unix-sockets` (UNIX sockets) - - `--disable-verbose` (eliminates debugging strings and error code strings) - - `--disable-versioned-symbols` (versioned symbols) - - `--enable-symbol-hiding` (eliminates unneeded symbols in the shared library) - - `--without-brotli` (Brotli on-the-fly decompression) - - `--without-libpsl` (Public Suffix List in cookies) - - `--without-nghttp2` (HTTP/2 using nghttp2) - - `--without-ngtcp2` (HTTP/2 using ngtcp2) - - `--without-zstd` (Zstd on-the-fly decompression) - - `--without-libidn2` (internationalized domain names) - - `--without-librtmp` (RTMP) - - `--without-ssl` (SSL/TLS) - - `--without-zlib` (on-the-fly decompression) - -The GNU compiler and linker have a number of options that can reduce the -size of the libcurl dynamic libraries on some platforms even further. -Specify them by providing appropriate `CFLAGS` and `LDFLAGS` variables on -the configure command-line, e.g. - - CFLAGS="-Os -ffunction-sections -fdata-sections - -fno-unwind-tables -fno-asynchronous-unwind-tables -flto" - LDFLAGS="-Wl,-s -Wl,-Bsymbolic -Wl,--gc-sections" - -Be sure also to strip debugging symbols from your binaries after compiling -using 'strip' (or the appropriate variant if cross-compiling). If space is -really tight, you may be able to remove some unneeded sections of the shared -library using the -R option to objcopy (e.g. the .comment section). - -Using these techniques it is possible to create a basic HTTP-only libcurl -shared library for i386 Linux platforms that is only 133 KiB in size -(as of libcurl version 7.80.0, using gcc 11.2.0). - -You may find that statically linking libcurl to your application will result -in a lower total size than dynamically linking. - -Note that the curl test harness can detect the use of some, but not all, of -the `--disable` statements suggested above. Use will cause tests relying on -those features to fail. The test harness can be manually forced to skip the -relevant tests by specifying certain key words on the `runtests.pl` command -line. Following is a list of appropriate key words for those configure options -that are not automatically detected: - - - `--disable-cookies` !cookies - - `--disable-dateparse` !RETRY-AFTER !CURLOPT_TIMECONDITION !CURLINFO_FILETIME !If-Modified-Since !getdate !-z - - `--disable-libcurl-option` !--libcurl - - `--disable-verbose` !verbose\ logs - -# PORTS - -This is a probably incomplete list of known CPU architectures and operating -systems that curl has been compiled for. If you know a system curl compiles -and runs on, that is not listed, please let us know! - -## 85 Operating Systems - -AIX, AmigaOS, Android, Aros, BeOS, Blackberry 10, Blackberry Tablet OS, Cell -OS, ChromeOS, Cisco IOS, Cygwin, Dragonfly BSD, eCOS, FreeBSD, FreeDOS, -FreeRTOS, Fuchsia, Garmin OS, Genode, Haiku, HardenedBSD, HP-UX, Hurd, -Illumos, Integrity, iOS, ipadOS, IRIX, LineageOS, Linux, Lua RTOS, Mac OS 9, -macOS, Mbed, Micrium, MINIX, MorphOS, MPE/iX, MS-DOS, NCR MP-RAS, NetBSD, -Netware, Nintendo Switch, NonStop OS, NuttX, OpenBSD, OpenStep, Orbis OS, -OS/2, OS/400, OS21, Plan 9, PlayStation Portable, QNX, Qubes OS, ReactOS, -Redox, RICS OS, Sailfish OS, SCO Unix, Serenity, SINIX-Z, Solaris, SunOS, -Syllable OS, Symbian, Tizen, TPF, Tru64, tvOS, ucLinux, Ultrix, UNICOS, -UnixWare, VMS, vxWorks, WebOS, Wii system software, Windows, Windows CE, Xbox -System, z/OS, z/TPF, z/VM, z/VSE - -## 22 CPU Architectures - -Alpha, ARC, ARM, AVR32, Cell, HP-PA, Itanium, m68k, MicroBlaze, MIPS, Nios, -OpenRISC, POWER, PowerPC, RISC-V, s390, SH4, SPARC, VAX, x86, x86-64, Xtensa diff --git a/Engine/lib/curl/docs/INTERNALS.md b/Engine/lib/curl/docs/INTERNALS.md deleted file mode 100644 index 7da0be5a5..000000000 --- a/Engine/lib/curl/docs/INTERNALS.md +++ /dev/null @@ -1,70 +0,0 @@ -# curl internals - -The canonical libcurl internals documentation is now in the [everything -curl](https://everything.curl.dev/internals) book. This file lists supported -versions of libs, tools and operating systems. - -## Portability - - We write curl and libcurl to compile with C89 compilers. On 32-bit and up - machines. Most of libcurl assumes more or less POSIX compliance but that is - not a requirement. - - We write libcurl to build and work with lots of third party tools, and we - want it to remain functional and buildable with these and later versions - (older versions may still work but is not what we work hard to maintain): - -## Dependencies - - We aim to support these or later versions. - - - OpenSSL 0.9.7 - - GnuTLS 3.1.10 - - zlib 1.1.4 - - libssh2 1.0 - - c-ares 1.16.0 - - libidn2 2.0.0 - - wolfSSL 2.0.0 - - openldap 2.0 - - MIT Kerberos 1.2.4 - - GSKit V5R3M0 - - NSS 3.14.x - - Heimdal ? - - nghttp2 1.12.0 - - WinSock 2.2 (on Windows 95+ and Windows CE .NET 4.1+) - -## Operating Systems - - On systems where configure runs, we aim at working on them all - if they have - a suitable C compiler. On systems that do not run configure, we strive to - keep curl running correctly on: - - - Windows 98 - - AS/400 V5R3M0 - - Symbian 9.1 - - Windows CE ? - - TPF ? - -## Build tools - - When writing code (mostly for generating stuff included in release tarballs) - we use a few "build tools" and we make sure that we remain functional with - these versions: - - - GNU Libtool 1.4.2 - - GNU Autoconf 2.57 - - GNU Automake 1.7 - - GNU M4 1.4 - - perl 5.004 - - roffit 0.5 - - groff ? (any version that supports `groff -Tps -man [in] [out]`) - -Library Symbols -=============== - - All symbols used internally in libcurl must use a `Curl_` prefix if they are - used in more than a single file. Single-file symbols must be made static. - Public ("exported") symbols must use a `curl_` prefix. (There are exceptions, - but they are to be changed to follow this pattern in future versions.) Public - API functions are marked with `CURL_EXTERN` in the public header files so - that all others can be hidden on platforms where this is possible. diff --git a/Engine/lib/curl/docs/KNOWN_BUGS b/Engine/lib/curl/docs/KNOWN_BUGS deleted file mode 100644 index 976cf325e..000000000 --- a/Engine/lib/curl/docs/KNOWN_BUGS +++ /dev/null @@ -1,1179 +0,0 @@ - _ _ ____ _ - ___| | | | _ \| | - / __| | | | |_) | | - | (__| |_| | _ <| |___ - \___|\___/|_| \_\_____| - - Known Bugs - -These are problems and bugs known to exist at the time of this release. Feel -free to join in and help us correct one or more of these. Also be sure to -check the changelog of the current development status, as one or more of these -problems may have been fixed or changed somewhat since this was written. - - 1. HTTP - 1.2 Multiple methods in a single WWW-Authenticate: header - 1.3 STARTTRANSFER time is wrong for HTTP POSTs - 1.4 multipart formposts file name encoding - 1.5 Expect-100 meets 417 - 1.6 Unnecessary close when 401 received waiting for 100 - 1.7 Deflate error after all content was received - 1.8 DoH is not used for all name resolves when enabled - 1.11 CURLOPT_SEEKFUNCTION not called with CURLFORM_STREAM - - 2. TLS - 2.1 CURLINFO_SSL_VERIFYRESULT has limited support - 2.2 DER in keychain - 2.3 Unable to use PKCS12 certificate with Secure Transport - 2.4 Secure Transport will not import PKCS#12 client certificates without a password - 2.5 Client cert handling with Issuer DN differs between backends - 2.6 CURL_GLOBAL_SSL - 2.7 Client cert (MTLS) issues with Schannel - 2.8 Schannel disable CURLOPT_SSL_VERIFYPEER and verify hostname - 2.9 TLS session cache does not work with TFO - 2.10 Store TLS context per transfer instead of per connection - 2.11 Schannel TLS 1.2 handshake bug in old Windows versions - 2.12 FTPS with Schannel times out file list operation - 2.13 CURLOPT_CERTINFO results in CURLE_OUT_OF_MEMORY with Schannel - 2.14 Secure Transport disabling hostname validation also disables SNI - 2.15 Renegotiate from server may cause hang for OpenSSL backend - - 3. Email protocols - 3.1 IMAP SEARCH ALL truncated response - 3.2 No disconnect command - 3.3 POP3 expects "CRLF.CRLF" eob for some single-line responses - 3.4 AUTH PLAIN for SMTP is not working on all servers - - 4. Command line - 4.1 -J and -O with %-encoded file names - 4.2 -J with -C - fails - 4.3 --retry and transfer timeouts - - 5. Build and portability issues - 5.1 OS400 port requires deprecated IBM library - 5.2 curl-config --libs contains private details - 5.3 curl compiled on OSX 10.13 failed to run on OSX 10.10 - 5.4 Build with statically built dependency - 5.5 cannot handle Unicode arguments in non-Unicode builds on Windows - 5.6 make distclean loops forever - 5.7 Visual Studio project gaps - 5.8 configure finding libs in wrong directory - 5.9 Utilize Requires.private directives in libcurl.pc - 5.10 curl hangs on SMB upload over stdin - 5.11 configure --with-gssapi with Heimdal is ignored on macOS - 5.12 flaky Windows CI builds - 5.13 long paths are not fully supported on Windows - 5.14 Windows Unicode builds use homedir in current locale - - 6. Authentication - 6.1 NTLM authentication and unicode - 6.2 MIT Kerberos for Windows build - 6.3 NTLM in system context uses wrong name - 6.4 Negotiate and Kerberos V5 need a fake user name - 6.5 NTLM does not support password with § character - 6.6 libcurl can fail to try alternatives with --proxy-any - 6.7 Do not clear digest for single realm - 6.8 RTSP authentication breaks without redirect support - 6.9 SHA-256 digest not supported in Windows SSPI builds - 6.10 curl never completes Negotiate over HTTP - 6.11 Negotiate on Windows fails - 6.12 cannot use Secure Transport with Crypto Token Kit - 6.13 Negotiate against Hadoop HDFS - - 7. FTP - 7.1 FTP without or slow 220 response - 7.2 FTP with CONNECT and slow server - 7.3 FTP with NOBODY and FAILONERROR - 7.4 FTP with ACCT - 7.5 ASCII FTP - 7.6 FTP with NULs in URL parts - 7.7 FTP and empty path parts in the URL - 7.8 Premature transfer end but healthy control channel - 7.9 Passive transfer tries only one IP address - 7.10 FTPS needs session reuse - 7.11 FTPS upload data loss with TLS 1.3 - 7.12 FTPS directory listing hangs on Windows with Schannel - - 8. TELNET - 8.1 TELNET and time limitations do not work - 8.2 Microsoft telnet server - - 9. SFTP and SCP - 9.1 SFTP does not do CURLOPT_POSTQUOTE correct - 9.2 wolfssh: publickey auth does not work - 9.3 Remote recursive folder creation with SFTP - 9.4 libssh blocking and infinite loop problem - - 10. SOCKS - 10.3 FTPS over SOCKS - 10.4 active FTP over a SOCKS - - 11. Internals - 11.1 Curl leaks .onion hostnames in DNS - 11.2 error buffer not set if connection to multiple addresses fails - 11.3 Disconnects do not do verbose - 11.4 HTTP test server 'connection-monitor' problems - 11.5 Connection information when using TCP Fast Open - 11.7 signal-based resolver timeouts - 11.8 DoH leaks memory after followlocation - 11.9 DoH does not inherit all transfer options - 11.10 Blocking socket operations in non-blocking API - 11.11 A shared connection cache is not thread-safe - 11.12 'no_proxy' string-matches IPv6 numerical addresses - 11.14 Multi perform hangs waiting for threaded resolver - 11.15 CURLOPT_OPENSOCKETPAIRFUNCTION is missing - 11.16 libcurl uses renames instead of locking for atomic operations - - 12. LDAP - 12.1 OpenLDAP hangs after returning results - 12.2 LDAP on Windows does authentication wrong? - 12.3 LDAP on Windows does not work - 12.4 LDAPS with NSS is slow - - 13. TCP/IP - 13.1 --interface for ipv6 binds to unusable IP address - 13.2 Trying local ports fails on Windows - - 14. DICT - 14.1 DICT responses show the underlying protocol - - 15. CMake - 15.1 use correct SONAME - 15.2 support build with GnuTLS - 15.3 unusable tool_hugehelp.c with MinGW - 15.4 build docs/curl.1 - 15.5 build on Linux links libcurl to libdl - 15.6 uses -lpthread instead of Threads::Threads - 15.7 generated .pc file contains strange entries - 15.8 libcurl.pc uses absolute library paths - 15.9 cert paths autodetected when cross-compiling - 15.10 libpsl is not supported - 15.11 ExternalProject_Add does not set CURL_CA_PATH - 15.12 cannot enable LDAPS on Windows - 15.13 CMake build with MIT Kerberos does not work - 15.14 cmake build is not thread-safe - - 16. Applications - - 17. HTTP/2 - 17.1 Excessive HTTP/2 packets with TCP_NODELAY - 17.2 HTTP/2 frames while in the connection pool kill reuse - 17.3 ENHANCE_YOUR_CALM causes infinite retries - 17.4 Connection failures with parallel HTTP/2 - 17.5 HTTP/2 connections through HTTPS proxy frequently stall - - 18. HTTP/3 - 18.1 If the HTTP/3 server closes connection during upload curl hangs - 18.2 Transfer closed with n bytes remaining to read - 18.4 timeout when reusing a http3 connection - 18.9 connection migration does not work - -============================================================================== - -1. HTTP - -1.2 Multiple methods in a single WWW-Authenticate: header - - The HTTP responses headers WWW-Authenticate: can provide information about - multiple authentication methods as multiple headers or as several methods - within a single header. The latter way, several methods in the same physical - line, is not supported by libcurl's parser. (For no good reason.) - -1.3 STARTTRANSFER time is wrong for HTTP POSTs - - Wrong STARTTRANSFER timer accounting for POST requests Timer works fine with - GET requests, but while using POST the time for CURLINFO_STARTTRANSFER_TIME - is wrong. While using POST CURLINFO_STARTTRANSFER_TIME minus - CURLINFO_PRETRANSFER_TIME is near to zero every time. - - https://github.com/curl/curl/issues/218 - https://curl.se/bug/view.cgi?id=1213 - -1.4 multipart formposts file name encoding - - When creating multipart formposts. The file name part can be encoded with - something beyond ascii but currently libcurl will only pass in the verbatim - string the app provides. There are several browsers that already do this - encoding. The key seems to be the updated draft to RFC2231: - https://datatracker.ietf.org/doc/html/draft-reschke-rfc2231-in-http-02 - -1.5 Expect-100 meets 417 - - If an upload using Expect: 100-continue receives an HTTP 417 response, it - ought to be automatically resent without the Expect:. A workaround is for - the client application to redo the transfer after disabling Expect:. - https://curl.se/mail/archive-2008-02/0043.html - -1.6 Unnecessary close when 401 received waiting for 100 - - libcurl closes the connection if an HTTP 401 reply is received while it is - waiting for the 100-continue response. - https://curl.se/mail/lib-2008-08/0462.html - -1.7 Deflate error after all content was received - - There's a situation where we can get an error in an HTTP response that is - compressed, when that error is detected after all the actual body contents - have been received and delivered to the application. This is tricky, but is - ultimately a broken server. - - See https://github.com/curl/curl/issues/2719 - -1.8 DoH is not used for all name resolves when enabled - - Even if DoH is specified to be used, there are some name resolves that are - done without it. This should be fixed. When the internal function - `Curl_resolver_wait_resolv()` is called, it does not use DoH to complete the - resolve as it otherwise should. - - See https://github.com/curl/curl/pull/3857 and - https://github.com/curl/curl/pull/3850 - -1.11 CURLOPT_SEEKFUNCTION not called with CURLFORM_STREAM - - When using libcurl to POST form data using a FILE* with the CURLFORM_STREAM - option of curl_formadd(). I notice that if the connection drops at just the - right time, the POST is reattempted without the data from the file. It seems - like the file stream position is not getting reset to the beginning of the - file. I found the CURLOPT_SEEKFUNCTION option and set that with a function - that performs an fseek() on the FILE*. However, setting that did not seem to - fix the issue or even get called. See https://github.com/curl/curl/issues/768 - - -2. TLS - -2.1 CURLINFO_SSL_VERIFYRESULT has limited support - - CURLINFO_SSL_VERIFYRESULT is only implemented for the OpenSSL, NSS and - GnuTLS backends, so relying on this information in a generic app is flaky. - -2.2 DER in keychain - - Curl does not recognize certificates in DER format in keychain, but it works - with PEM. https://curl.se/bug/view.cgi?id=1065 - -2.3 Unable to use PKCS12 certificate with Secure Transport - - See https://github.com/curl/curl/issues/5403 - -2.4 Secure Transport will not import PKCS#12 client certificates without a password - - libcurl calls SecPKCS12Import with the PKCS#12 client certificate, but that - function rejects certificates that do not have a password. - https://github.com/curl/curl/issues/1308 - -2.5 Client cert handling with Issuer DN differs between backends - - When the specified client certificate does not match any of the - server-specified DNs, the OpenSSL and GnuTLS backends behave differently. - The github discussion may contain a solution. - - See https://github.com/curl/curl/issues/1411 - -2.6 CURL_GLOBAL_SSL - - Since libcurl 7.57.0, the flag CURL_GLOBAL_SSL is a no-op. The change was - merged in https://github.com/curl/curl/commit/d661b0afb571a - - It was removed since it was - - A) never clear for applications on how to deal with init in the light of - different SSL backends (the option was added back in the days when life - was simpler) - - B) multissl introduced dynamic switching between SSL backends which - emphasized (A) even more - - C) libcurl uses some TLS backend functionality even for non-TLS functions (to - get "good" random) so applications trying to avoid the init for - performance reasons would do wrong anyway - - D) not documented carefully so all this mostly just happened to work - for some users - - However, in spite of the problems with the feature, there were some users who - apparently depended on this feature and who now claim libcurl is broken for - them. The fix for this situation is not obvious as a downright revert of the - patch is totally ruled out due to those reasons above. - - https://github.com/curl/curl/issues/2276 - -2.7 Client cert (MTLS) issues with Schannel - - See https://github.com/curl/curl/issues/3145 - -2.8 Schannel disable CURLOPT_SSL_VERIFYPEER and verify hostname - - This seems to be a limitation in the underlying Schannel API. - - https://github.com/curl/curl/issues/3284 - -2.9 TLS session cache does not work with TFO - - See https://github.com/curl/curl/issues/4301 - -2.10 Store TLS context per transfer instead of per connection - - The GnuTLS `backend->cred` and the OpenSSL `backend->ctx` data and their - proxy versions (and possibly other TLS backends), could be better moved to be - stored in the Curl_easy handle instead of in per connection so that a single - transfer that makes multiple connections can reuse the context and reduce - memory consumption. - - https://github.com/curl/curl/issues/5102 - -2.11 Schannel TLS 1.2 handshake bug in old Windows versions - - In old versions of Windows such as 7 and 8.1 the Schannel TLS 1.2 handshake - implementation likely has a bug that can rarely cause the key exchange to - fail, resulting in error SEC_E_BUFFER_TOO_SMALL or SEC_E_MESSAGE_ALTERED. - - https://github.com/curl/curl/issues/5488 - -2.12 FTPS with Schannel times out file list operation - - "Instead of the command completing, it just sits there until the timeout - expires." - the same command line seems to work with other TLS backends and - other operating systems. See https://github.com/curl/curl/issues/5284. - -2.13 CURLOPT_CERTINFO results in CURLE_OUT_OF_MEMORY with Schannel - - https://github.com/curl/curl/issues/8741 - -2.14 Secure Transport disabling hostname validation also disables SNI - - SNI is the hostname that is sent by the TLS library to the server as part of - the TLS handshake. Secure Transport does not send SNI when hostname validation - is disabled. Servers that host multiple websites may not know which - certificate to serve without SNI or which backend server to connect to. The - server may serve the certificate of a default server or abort. - - If a server aborts a handshake then curl shows error "SSL peer handshake - failed, the server most likely requires a client certificate to connect". - In this case the error may also have been caused by lack of SNI. - - https://github.com/curl/curl/issues/6347 - -2.15 Renegotiate from server may cause hang for OpenSSL backend - - A race condition has been observed when, immediately after the initial - handshake, curl has sent an HTTP request to the server and at the same time - the server has sent a TLS hello request (renegotiate) to curl. Both are - waiting for the other to respond. OpenSSL is supposed to send a handshake - response but does not. - - https://github.com/curl/curl/issues/6785 - https://github.com/openssl/openssl/issues/14722 - -3. Email protocols - -3.1 IMAP SEARCH ALL truncated response - - IMAP "SEARCH ALL" truncates output on large boxes. "A quick search of the - code reveals that pingpong.c contains some truncation code, at line 408, when - it deems the server response to be too large truncating it to 40 characters" - https://curl.se/bug/view.cgi?id=1366 - -3.2 No disconnect command - - The disconnect commands (LOGOUT and QUIT) may not be sent by IMAP, POP3 and - SMTP if a failure occurs during the authentication phase of a connection. - -3.3 POP3 expects "CRLF.CRLF" eob for some single-line responses - - You have to tell libcurl not to expect a body, when dealing with one line - response commands. Please see the POP3 examples and test cases which show - this for the NOOP and DELE commands. https://curl.se/bug/?i=740 - -3.4 AUTH PLAIN for SMTP is not working on all servers - - Specifying "--login-options AUTH=PLAIN" on the command line does not seem to - work correctly. - - See https://github.com/curl/curl/issues/4080 - -4. Command line - -4.1 -J and -O with %-encoded file names - - -J/--remote-header-name does not decode %-encoded file names. RFC6266 details - how it should be done. The can of worm is basically that we have no charset - handling in curl and ascii >=128 is a challenge for us. Not to mention that - decoding also means that we need to check for nastiness that is attempted, - like "../" sequences and the like. Probably everything to the left of any - embedded slashes should be cut off. - https://curl.se/bug/view.cgi?id=1294 - - -O also does not decode %-encoded names, and while it has even less - information about the charset involved the process is similar to the -J case. - - Note that we will not add decoding to -O without the user asking for it with - some other means as well, since -O has always been documented to use the name - exactly as specified in the URL. - -4.2 -J with -C - fails - - When using -J (with -O), automatically resumed downloading together with "-C - -" fails. Without -J the same command line works. This happens because the - resume logic is worked out before the target file name (and thus its - pre-transfer size) has been figured out. - https://curl.se/bug/view.cgi?id=1169 - -4.3 --retry and transfer timeouts - - If using --retry and the transfer timeouts (possibly due to using -m or - -y/-Y) the next attempt does not resume the transfer properly from what was - downloaded in the previous attempt but will truncate and restart at the - original position where it was at before the previous failed attempt. See - https://curl.se/mail/lib-2008-01/0080.html and Mandriva bug report - https://qa.mandriva.com/show_bug.cgi?id=22565 - -5. Build and portability issues - -5.1 OS400 port requires deprecated IBM library - - curl for OS400 requires QADRT to build, which provides ASCII wrappers for - libc/POSIX functions in the ILE, but IBM no longer supports or even offers - this library to download. - - See https://github.com/curl/curl/issues/5176 - -5.2 curl-config --libs contains private details - - "curl-config --libs" will include details set in LDFLAGS when configure is - run that might be needed only for building libcurl. Further, curl-config - --cflags suffers from the same effects with CFLAGS/CPPFLAGS. - -5.3 curl compiled on OSX 10.13 failed to run on OSX 10.10 - - See https://github.com/curl/curl/issues/2905 - -5.4 Build with statically built dependency - - The build scripts in curl (autotools, cmake and others) are primarily done to - work with shared/dynamic third party dependencies. When linking with shared - libraries, the dependency "chain" is handled automatically by the library - loader - on all modern systems. - - If you instead link with a static library, we need to provide all the - dependency libraries already at the link command line. - - Figuring out all the dependency libraries for a given library is hard, as it - might also involve figuring out the dependencies of the dependencies and they - may vary between platforms and even change between versions. - - When using static dependencies, the build scripts will mostly assume that - you, the user, will provide all the necessary additional dependency libraries - as additional arguments in the build. With configure, by setting LIBS/LDFLAGS - on the command line. - - We welcome help to improve curl's ability to link with static libraries, but - it is likely a task that we can never fully support. - -5.5 cannot handle Unicode arguments in non-Unicode builds on Windows - - If a URL or filename cannot be encoded using the user's current codepage then - it can only be encoded properly in the Unicode character set. Windows uses - UTF-16 encoding for Unicode and stores it in wide characters, however curl - and libcurl are not equipped for that at the moment except when built with - _UNICODE and UNICODE defined. And, except for Cygwin, Windows cannot use UTF-8 - as a locale. - - https://curl.se/bug/?i=345 - https://curl.se/bug/?i=731 - https://curl.se/bug/?i=3747 - -5.6 make distclean loops forever - - Due to an issue (probably) in automake, "make distclean" can end up in a - never-ending loop. - - See https://github.com/curl/curl/issues/7716 - -5.7 Visual Studio project gaps - - The Visual Studio projects lack some features that the autoconf and nmake - builds offer, such as the following: - - - support for zlib and nghttp2 - - use of static runtime libraries - - add the test suite components - - In addition to this the following could be implemented: - - - support for other development IDEs - - add PATH environment variables for third-party DLLs - -5.8 configure finding libs in wrong directory - - When the configure script checks for third-party libraries, it adds those - directories to the LDFLAGS variable and then tries linking to see if it - works. When successful, the found directory is kept in the LDFLAGS variable - when the script continues to execute and do more tests and possibly check for - more libraries. - - This can make subsequent checks for libraries wrongly detect another - installation in a directory that was previously added to LDFLAGS by another - library check. - - A possibly better way to do these checks would be to keep the pristine LDFLAGS - even after successful checks and instead add those verified paths to a - separate variable that only after all library checks have been performed gets - appended to LDFLAGS. - -5.9 Utilize Requires.private directives in libcurl.pc - - https://github.com/curl/curl/issues/864 - -5.10 curl hangs on SMB upload over stdin - - See https://github.com/curl/curl/issues/7896 - -5.11 configure --with-gssapi with Heimdal is ignored on macOS - - ... unless you also pass --with-gssapi-libs - - https://github.com/curl/curl/issues/3841 - -5.12 flaky Windows CI builds - - We run many CI builds for each commit and PR on github, and especially a - number of the Windows builds are flaky. This means that we rarely get all CI - builds go green and complete without errors. This is unfortunate as it makes - us sometimes miss actual build problems and it is surprising to newcomers to - the project who (rightfully) do not expect this. - - See https://github.com/curl/curl/issues/6972 - -5.13 long paths are not fully supported on Windows - - curl on Windows cannot access long paths (paths longer than 260 characters). - However, as a workaround, the Windows path prefix \\?\ which disables all path - interpretation may work to allow curl to access the path. For example: - \\?\c:\longpath. - - See https://github.com/curl/curl/issues/8361 - -5.14 Windows Unicode builds use homedir in current locale - - The Windows Unicode builds of curl use the current locale, but expect Unicode - UTF-8 encoded paths for internal use such as open, access and stat. The user's - home directory is retrieved via curl_getenv in the current locale and not as - UTF-8 encoded Unicode. - - See https://github.com/curl/curl/pull/7252 and - https://github.com/curl/curl/pull/7281 - -6. Authentication - -6.1 NTLM authentication and unicode - - NTLM authentication involving unicode user name or password only works - properly if built with UNICODE defined together with the Schannel - backend. The original problem was mentioned in: - https://curl.se/mail/lib-2009-10/0024.html - https://curl.se/bug/view.cgi?id=896 - - The Schannel version verified to work as mentioned in - https://curl.se/mail/lib-2012-07/0073.html - -6.2 MIT Kerberos for Windows build - - libcurl fails to build with MIT Kerberos for Windows (KfW) due to KfW's - library header files exporting symbols/macros that should be kept private to - the KfW library. See ticket #5601 at https://krbdev.mit.edu/rt/ - -6.3 NTLM in system context uses wrong name - - NTLM authentication using SSPI (on Windows) when (lib)curl is running in - "system context" will make it use wrong(?) user name - at least when compared - to what winhttp does. See https://curl.se/bug/view.cgi?id=535 - -6.4 Negotiate and Kerberos V5 need a fake user name - - In order to get Negotiate (SPNEGO) authentication to work in HTTP or Kerberos - V5 in the email protocols, you need to provide a (fake) user name (this - concerns both curl and the lib) because the code wrongly only considers - authentication if there's a user name provided by setting - conn->bits.user_passwd in url.c https://curl.se/bug/view.cgi?id=440 How? - https://curl.se/mail/lib-2004-08/0182.html A possible solution is to - either modify this variable to be set or introduce a variable such as - new conn->bits.want_authentication which is set when any of the authentication - options are set. - -6.5 NTLM does not support password with § character - - https://github.com/curl/curl/issues/2120 - -6.6 libcurl can fail to try alternatives with --proxy-any - - When connecting via a proxy using --proxy-any, a failure to establish an - authentication will cause libcurl to abort trying other options if the - failed method has a higher preference than the alternatives. As an example, - --proxy-any against a proxy which advertise Negotiate and NTLM, but which - fails to set up Kerberos authentication will not proceed to try authentication - using NTLM. - - https://github.com/curl/curl/issues/876 - -6.7 Do not clear digest for single realm - - https://github.com/curl/curl/issues/3267 - -6.8 RTSP authentication breaks without redirect support - - RTSP authentication broke in 7.66.0. A work-around is to enable RTSP in - CURLOPT_REDIR_PROTOCOLS. Authentication should however not be considered an - actual redirect so a "proper" fix needs to be different and not require users - to allow redirects to RTSP to work. - - See https://github.com/curl/curl/pull/4750 - -6.9 SHA-256 digest not supported in Windows SSPI builds - - Windows builds of curl that have SSPI enabled use the native Windows API calls - to create authentication strings. The call to InitializeSecurityContext fails - with SEC_E_QOP_NOT_SUPPORTED which causes curl to fail with CURLE_AUTH_ERROR. - - Microsoft does not document supported digest algorithms and that SEC_E error - code is not a documented error for InitializeSecurityContext (digest). - - https://github.com/curl/curl/issues/6302 - -6.10 curl never completes Negotiate over HTTP - - Apparently it is not working correctly...? - - See https://github.com/curl/curl/issues/5235 - -6.11 Negotiate on Windows fails - - When using --negotiate (or NTLM) with curl on Windows, SSL/TLS handshake - fails despite having a valid kerberos ticket cached. Works without any issue - in Unix/Linux. - - https://github.com/curl/curl/issues/5881 - -6.12 cannot use Secure Transport with Crypto Token Kit - - https://github.com/curl/curl/issues/7048 - -6.13 Negotiate authentication against Hadoop HDFS - - https://github.com/curl/curl/issues/8264 - -7. FTP - -7.1 FTP without or slow 220 response - - If a connection is made to an FTP server but the server then just never sends - the 220 response or otherwise is dead slow, libcurl will not acknowledge the - connection timeout during that phase but only the "real" timeout - which may - surprise users as it is probably considered to be the connect phase to most - people. Brought up (and is being misunderstood) in: - https://curl.se/bug/view.cgi?id=856 - -7.2 FTP with CONNECT and slow server - - When doing FTP over a socks proxy or CONNECT through HTTP proxy and the multi - interface is used, libcurl will fail if the (passive) TCP connection for the - data transfer is not more or less instant as the code does not properly wait - for the connect to be confirmed. See test case 564 for a first shot at a test - case. - -7.3 FTP with NOBODY and FAILONERROR - - It seems sensible to be able to use CURLOPT_NOBODY and CURLOPT_FAILONERROR - with FTP to detect if a file exists or not, but it is not working: - https://curl.se/mail/lib-2008-07/0295.html - -7.4 FTP with ACCT - - When doing an operation over FTP that requires the ACCT command (but not when - logging in), the operation will fail since libcurl does not detect this and - thus fails to issue the correct command: - https://curl.se/bug/view.cgi?id=635 - -7.5 ASCII FTP - - FTP ASCII transfers do not follow RFC959. They do not convert the data - accordingly (not for sending nor for receiving). RFC 959 section 3.1.1.1 - clearly describes how this should be done: - - The sender converts the data from an internal character representation to - the standard 8-bit NVT-ASCII representation (see the Telnet - specification). The receiver will convert the data from the standard - form to his own internal form. - - Since 7.15.4 at least line endings are converted. - -7.6 FTP with NULs in URL parts - - FTP URLs passed to curl may contain NUL (0x00) in the RFC 1738 , - , and components, encoded as "%00". The problem is that - curl_unescape does not detect this, but instead returns a shortened C string. - From a strict FTP protocol standpoint, NUL is a valid character within RFC - 959 , so the way to handle this correctly in curl would be to use a - data structure other than a plain C string, one that can handle embedded NUL - characters. From a practical standpoint, most FTP servers would not - meaningfully support NUL characters within RFC 959 , anyway (e.g., - Unix pathnames may not contain NUL). - -7.7 FTP and empty path parts in the URL - - libcurl ignores empty path parts in FTP URLs, whereas RFC1738 states that - such parts should be sent to the server as 'CWD ' (without an argument). The - only exception to this rule, is that we knowingly break this if the empty - part is first in the path, as then we use the double slashes to indicate that - the user wants to reach the root dir (this exception SHALL remain even when - this bug is fixed). - -7.8 Premature transfer end but healthy control channel - - When 'multi_done' is called before the transfer has been completed the normal - way, it is considered a "premature" transfer end. In this situation, libcurl - closes the connection assuming it does not know the state of the connection so - it cannot be reused for subsequent requests. - - With FTP however, this is not necessarily true but there are a bunch of - situations (listed in the ftp_done code) where it *could* keep the connection - alive even in this situation - but the current code does not. Fixing this would - allow libcurl to reuse FTP connections better. - -7.9 Passive transfer tries only one IP address - - When doing FTP operations through a proxy at localhost, the reported spotted - that curl only tried to connect once to the proxy, while it had multiple - addresses and a failed connect on one address should make it try the next. - - After switching to passive mode (EPSV), curl should try all IP addresses for - "localhost". Currently it tries ::1, but it should also try 127.0.0.1. - - See https://github.com/curl/curl/issues/1508 - -7.10 FTPS needs session reuse - - When the control connection is reused for a subsequent transfer, some FTPS - servers complain about "missing session reuse" for the data channel for the - second transfer. - - https://github.com/curl/curl/issues/4654 - -7.11 FTPS upload data loss with TLS 1.3 - - During FTPS upload curl does not attempt to read TLS handshake messages sent - after the initial handshake. OpenSSL servers running TLS 1.3 may send such a - message. When curl closes the upload connection if unread data has been - received (such as a TLS handshake message) then the TCP protocol sends an - RST to the server, which may cause the server to discard or truncate the - upload if it has not read all sent data yet, and then return an error to curl - on the control channel connection. - - Since 7.78.0 this is mostly fixed. curl will do a single read before closing - TLS connections (which causes the TLS library to read handshake messages), - however there is still possibility of an RST if more messages need to be read - or a message arrives after the read but before close (network race condition). - - https://github.com/curl/curl/issues/6149 - -7.12 FTPS directory listing hangs on Windows with Schannel - - https://github.com/curl/curl/issues/9161 - -8. TELNET - -8.1 TELNET and time limitations do not work - - When using telnet, the time limitation options do not work. - https://curl.se/bug/view.cgi?id=846 - -8.2 Microsoft telnet server - - There seems to be a problem when connecting to the Microsoft telnet server. - https://curl.se/bug/view.cgi?id=649 - - -9. SFTP and SCP - -9.1 SFTP does not do CURLOPT_POSTQUOTE correct - - When libcurl sends CURLOPT_POSTQUOTE commands when connected to a SFTP server - using the multi interface, the commands are not being sent correctly and - instead the connection is "cancelled" (the operation is considered done) - prematurely. There is a half-baked (busy-looping) patch provided in the bug - report but it cannot be accepted as-is. See - https://curl.se/bug/view.cgi?id=748 - -9.2 wolfssh: publickey auth does not work - - When building curl to use the wolfSSH backend for SFTP, the publickey - authentication does not work. This is simply functionality not written for curl - yet, the necessary API for make this work is provided by wolfSSH. - - See https://github.com/curl/curl/issues/4820 - -9.3 Remote recursive folder creation with SFTP - - On this servers, the curl fails to create directories on the remote server - even when the CURLOPT_FTP_CREATE_MISSING_DIRS option is set. - - See https://github.com/curl/curl/issues/5204 - -9.4 libssh blocking and infinite loop problem - - In the SSH_SFTP_INIT state for libssh, the ssh session working mode is set to - blocking mode. If the network is suddenly disconnected during sftp - transmission, curl will be stuck, even if curl is configured with a timeout. - - https://github.com/curl/curl/issues/8632 - - -10. SOCKS - -10.3 FTPS over SOCKS - - libcurl does not support FTPS over a SOCKS proxy. - -10.4 active FTP over a SOCKS - - libcurl does not support active FTP over a SOCKS proxy - - -11. Internals - -11.1 Curl leaks .onion hostnames in DNS - - Curl sends DNS requests for hostnames with a .onion TLD. This leaks - information about what the user is attempting to access, and violates this - requirement of RFC7686: https://datatracker.ietf.org/doc/html/rfc7686 - - Issue: https://github.com/curl/curl/issues/543 - -11.2 error buffer not set if connection to multiple addresses fails - - If you ask libcurl to resolve a hostname like example.com to IPv6 addresses - only. But you only have IPv4 connectivity. libcurl will correctly fail with - CURLE_COULDNT_CONNECT. But the error buffer set by CURLOPT_ERRORBUFFER - remains empty. Issue: https://github.com/curl/curl/issues/544 - -11.3 Disconnects do not do verbose - - Due to how libcurl keeps connections alive in the "connection pool" after use - to potentially transcend the life-time of the initial easy handle that was - used to drive the transfer over that connection, it uses a *separate* and - internal easy handle when it shuts down the connection. That separate - connection might not have the same settings as the original easy handle, and - in particular it is often note-worthy that it does not have the same VERBOSE - and debug callbacks setup so that an application will not get the protocol - data for the disconnect phase of a transfer the same way it got all the other - data. - - This is because the original easy handle might have already been freed at that - point and the application might not at all be prepared that the callback - would get called again long after the handle was freed. - - See for example https://github.com/curl/curl/issues/6995 - -11.4 HTTP test server 'connection-monitor' problems - - The 'connection-monitor' feature of the sws HTTP test server does not work - properly if some tests are run in unexpected order. Like 1509 and then 1525. - - See https://github.com/curl/curl/issues/868 - -11.5 Connection information when using TCP Fast Open - - CURLINFO_LOCAL_PORT (and possibly a few other) fails when TCP Fast Open is - enabled. - - See https://github.com/curl/curl/issues/1332 and - https://github.com/curl/curl/issues/4296 - -11.7 signal-based resolver timeouts - - libcurl built without an asynchronous resolver library uses alarm() to time - out DNS lookups. When a timeout occurs, this causes libcurl to jump from the - signal handler back into the library with a sigsetjmp, which effectively - causes libcurl to continue running within the signal handler. This is - non-portable and could cause problems on some platforms. A discussion on the - problem is available at https://curl.se/mail/lib-2008-09/0197.html - - Also, alarm() provides timeout resolution only to the nearest second. alarm - ought to be replaced by setitimer on systems that support it. - -11.8 DoH leaks memory after followlocation - - https://github.com/curl/curl/issues/4592 - -11.9 DoH does not inherit all transfer options - - Some options are not inherited because they are not relevant for the DoH SSL - connections, or inheriting the option may result in unexpected behavior. For - example the user's debug function callback is not inherited because it would - be unexpected for internal handles (ie DoH handles) to be passed to that - callback. - - If an option is not inherited then it is not possible to set it separately for - DoH without a DoH-specific option. For example: CURLOPT_DOH_SSL_VERIFYHOST, - CURLOPT_DOH_SSL_VERIFYPEER and CURLOPT_DOH_SSL_VERIFYSTATUS. - - See https://github.com/curl/curl/issues/6605 - -11.10 Blocking socket operations in non-blocking API - - The list of blocking socket operations is in TODO section "More non-blocking". - -11.11 A shared connection cache is not thread-safe - - The share interface offers CURL_LOCK_DATA_CONNECT to have multiple easy - handle share a connection cache, but due to how connections are used they are - still not thread-safe when used shared. - - See https://github.com/curl/curl/issues/4915 and lib1541.c - -11.12 'no_proxy' string-matches IPv6 numerical addresses - - This has the downside that "::1" for example does not match "::0:1" even - though they are in fact the same address. - - See https://github.com/curl/curl/issues/5745 - -11.14 Multi perform hangs waiting for threaded resolver - - If a threaded resolver takes a long time to complete, libcurl can be blocked - waiting for it for a longer time than expected - and longer than the set - timeouts. - - See https://github.com/curl/curl/issues/2975 and - https://github.com/curl/curl/issues/4852 - -11.15 CURLOPT_OPENSOCKETPAIRFUNCTION is missing - - When libcurl creates sockets with socketpair(), those are not "exposed" in - CURLOPT_OPENSOCKETFUNCTION and therefore might surprise and be unknown to - applications that expect and want all sockets known beforehand. One way to - address this issue is to introduce a CURLOPT_OPENSOCKETPAIRFUNCTION callback. - - https://github.com/curl/curl/issues/5747 - -11.16 libcurl uses renames instead of locking for atomic operations - - For saving cookies, alt-svc and hsts files. This is bad when for example the - file is stored in a directory where the application has no write permission - but it has permission for the file. - - https://github.com/curl/curl/issues/6882 - https://github.com/curl/curl/pull/6884 - -12. LDAP - -12.1 OpenLDAP hangs after returning results - - By configuration defaults, openldap automatically chase referrals on - secondary socket descriptors. The OpenLDAP backend is asynchronous and thus - should monitor all socket descriptors involved. Currently, these secondary - descriptors are not monitored, causing openldap library to never receive - data from them. - - As a temporary workaround, disable referrals chasing by configuration. - - The fix is not easy: proper automatic referrals chasing requires a - synchronous bind callback and monitoring an arbitrary number of socket - descriptors for a single easy handle (currently limited to 5). - - Generic LDAP is synchronous: OK. - - See https://github.com/curl/curl/issues/622 and - https://curl.se/mail/lib-2016-01/0101.html - -12.2 LDAP on Windows does authentication wrong? - - https://github.com/curl/curl/issues/3116 - -12.3 LDAP on Windows does not work - - A simple curl command line getting "ldap://ldap.forumsys.com" returns an - error that says "no memory" ! - - https://github.com/curl/curl/issues/4261 - -12.4 LDAPS with NSS is slow - - See https://github.com/curl/curl/issues/5874 - -13. TCP/IP - -13.1 --interface for ipv6 binds to unusable IP address - - Since IPv6 provides a lot of addresses with different scope, binding to an - IPv6 address needs to take the proper care so that it does not bind to a - locally scoped address as that is bound to fail. - - https://github.com/curl/curl/issues/686 - -13.2 Trying local ports fails on Windows - - This makes '--local-port [range]' to not work since curl can't properly - detect if a port is already in use, so it'll try the first port, use that and - then subsequently fail anyway if that was actually in use. - - https://github.com/curl/curl/issues/8112 - -14. DICT - -14.1 DICT responses show the underlying protocol - - When getting a DICT response, the protocol parts of DICT are not stripped off - from the output. - - https://github.com/curl/curl/issues/1809 - -15. CMake - -15.1 use correct SONAME - - The autotools build sets the SONAME properly according to VERSIONINFO in - lib/Makefile.am and so should cmake to make comparable build. - - See https://github.com/curl/curl/pull/5935 - -15.2 support build with GnuTLS - -15.3 unusable tool_hugehelp.c with MinGW - - see https://github.com/curl/curl/issues/3125 - -15.4 build docs/curl.1 - - The cmake build does not create the docs/curl.1 file and therefore must rely on - it being there already. This makes the --manual option not work and test - cases like 1139 cannot function. - -15.5 build on Linux links libcurl to libdl - - ... which it should not need to! - - See https://github.com/curl/curl/issues/6165 - -15.6 uses -lpthread instead of Threads::Threads - - See https://github.com/curl/curl/issues/6166 - -15.7 generated .pc file contains strange entries - - The Libs.private field of the generated .pc file contains -lgcc -lgcc_s -lc - -lgcc -lgcc_s - - See https://github.com/curl/curl/issues/6167 - -15.8 libcurl.pc uses absolute library paths - - The libcurl.pc file generated by cmake contains things like Libs.private: - /usr/lib64/libssl.so /usr/lib64/libcrypto.so /usr/lib64/libz.so. The - autotools equivalent would say Libs.private: -lssl -lcrypto -lz - - See https://github.com/curl/curl/issues/6169 - -15.9 cert paths autodetected when cross-compiling - - The autotools build disables the ca_path/ca_bundle detection when - cross-compiling. The cmake build keeps doing the detection. - - See https://github.com/curl/curl/issues/6178 - -15.10 libpsl is not supported - - See https://github.com/curl/curl/issues/6214 - -15.11 ExternalProject_Add does not set CURL_CA_PATH - - CURL_CA_BUNDLE and CURL_CA_PATH are not set properly when cmake's - ExternalProject_Add is used to build curl as a dependency. - - See https://github.com/curl/curl/issues/6313 - -15.12 cannot enable LDAPS on Windows - - See https://github.com/curl/curl/issues/6284 - -15.13 CMake build with MIT Kerberos does not work - - Minimum CMake version was bumped in curl 7.71.0 (#5358) Since CMake 3.2 - try_compile started respecting the CMAKE_EXE_FLAGS. The code dealing with - MIT Kerberos detection sets few variables to potentially weird mix of space, - and ;-separated flags. It had to blow up at some point. All the CMake checks - that involve compilation are doomed from that point, the configured tree - cannot be built. - - https://github.com/curl/curl/issues/6904 - -15.14 cmake build is not thread-safe - - The cmake build does not check for and verify presence of a working Atomic - type, which then makes curl_global_init() to not build thread-safe on - non-Windows platforms. - - Bug: https://github.com/curl/curl/issues/8973 - Partial fix: https://github.com/curl/curl/pull/8982 - -16. Applications - -17. HTTP/2 - -17.1 Excessive HTTP/2 packets with TCP_NODELAY - - Because of how curl sets TCP_NODELAY by default, HTTP/2 requests are issued - using more separate TCP packets than it would otherwise need to use. This - means spending more bytes than it has to. Just disabling TCP_NODELAY for - HTTP/2 is also not the correct fix because that then makes the outgoing - packets to get delayed. - - See https://github.com/curl/curl/issues/6363 - -17.2 HTTP/2 frames while in the connection pool kill reuse - - If the server sends HTTP/2 frames (like for example an HTTP/2 PING frame) to - curl while the connection is held in curl's connection pool, the socket will - be found readable when considered for reuse and that makes curl think it is - dead and then it will be closed and a new connection gets created instead. - - This is *best* fixed by adding monitoring to connections while they are kept - in the pool so that pings can be responded to appropriately. - -17.3 ENHANCE_YOUR_CALM causes infinite retries - - Infinite retries with 2 parallel requests on one connection receiving GOAWAY - with ENHANCE_YOUR_CALM error code. - - See https://github.com/curl/curl/issues/5119 - -17.4 Connection failures with parallel HTTP/2 - - See https://github.com/curl/curl/issues/5611 - -17.5 HTTP/2 connections through HTTPS proxy frequently stall - - See https://github.com/curl/curl/issues/6936 - -18. HTTP/3 - -18.1 If the HTTP/3 server closes connection during upload curl hangs - - See https://github.com/curl/curl/issues/6606 - -18.2 Transfer closed with n bytes remaining to read - - HTTP/3 transfers with the Jetty HTTP/3 server seem to not work. - - https://github.com/curl/curl/issues/8523 - -18.4 timeout when reusing a http3 connection - - HTTP/3 with quiche seems to not work and always timeout a subsequent transfer - that reuses an already established connection - - https://github.com/curl/curl/issues/8764 - -18.9 connection migration does not work - - https://github.com/curl/curl/issues/7695 diff --git a/Engine/lib/curl/docs/MAIL-ETIQUETTE b/Engine/lib/curl/docs/MAIL-ETIQUETTE deleted file mode 100644 index ccd3e01f9..000000000 --- a/Engine/lib/curl/docs/MAIL-ETIQUETTE +++ /dev/null @@ -1,285 +0,0 @@ - _ _ ____ _ - ___| | | | _ \| | - / __| | | | |_) | | - | (__| |_| | _ <| |___ - \___|\___/|_| \_\_____| - -MAIL ETIQUETTE - - 1. About the lists - 1.1 Mailing Lists - 1.2 Netiquette - 1.3 Do Not Mail a Single Individual - 1.4 Subscription Required - 1.5 Moderation of new posters - 1.6 Handling trolls and spam - 1.7 How to unsubscribe - 1.8 I posted, now what? - 1.9 Your emails are public - - 2. Sending mail - 2.1 Reply or New Mail - 2.2 Reply to the List - 2.3 Use a Sensible Subject - 2.4 Do Not Top-Post - 2.5 HTML is not for mails - 2.6 Quoting - 2.7 Digest - 2.8 Please Tell Us How You Solved The Problem - -============================================================================== - -1. About the lists - - 1.1 Mailing Lists - - The mailing lists we have are all listed and described at - https://curl.se/mail/ - - Each mailing list is targeted to a specific set of users and subjects, - please use the one or the ones that suit you the most. - - Each mailing list has hundreds up to thousands of readers, meaning that each - mail sent will be received and read by a large number of people. People - from various cultures, regions, religions and continents. - - 1.2 Netiquette - - Netiquette is a common term for how to behave on the Internet. Of course, in - each particular group and subculture there will be differences in what is - acceptable and what is considered good manners. - - This document outlines what we in the curl project consider to be good - etiquette, and primarily this focus on how to behave on and how to use our - mailing lists. - - 1.3 Do Not Mail a Single Individual - - Many people send one question to one person. One person gets many mails, and - there is only one person who can give you a reply. The question may be - something that other people would also like to ask. These other people have - no way to read the reply, but to ask the one person the question. The one - person consequently gets overloaded with mail. - - If you really want to contact an individual and perhaps pay for his or her - services, by all means go ahead, but if it's just another curl question, - take it to a suitable list instead. - - 1.4 Subscription Required - - All curl mailing lists require that you are subscribed to allow a mail to go - through to all the subscribers. - - If you post without being subscribed (or from a different mail address than - the one you are subscribed with), your mail will simply be silently - discarded. You have to subscribe first, then post. - - The reason for this unfortunate and strict subscription policy is of course - to stop spam from pestering the lists. - - 1.5 Moderation of new posters - - Several of the curl mailing lists automatically make all posts from new - subscribers be moderated. This means that after you have subscribed and - sent your first mail to a list, that mail will not be let through to the - list until a mailing list administrator has verified that it is OK and - permits it to get posted. - - Once a first post has been made that proves the sender is actually talking - about curl-related subjects, the moderation "flag" will be switched off and - future posts will go through without being moderated. - - The reason for this moderation policy is that we do suffer from spammers who - actually subscribe and send spam to our lists. - - 1.6 Handling trolls and spam - - Despite our good intentions and hard work to keep spam off the lists and to - maintain a friendly and positive atmosphere, there will be times when spam - and or trolls get through. - - Troll - "someone who posts inflammatory, extraneous, or off-topic messages - in an online community" - - Spam - "use of electronic messaging systems to send unsolicited bulk - messages" - - No matter what, we NEVER EVER respond to trolls or spammers on the list. If - you believe the list admin should do something in particular, contact them - off-list. The subject will be taken care of as much as possible to prevent - repeated offenses, but responding on the list to such messages never leads to - anything good and only puts the light even more on the offender: which was - the entire purpose of it getting sent to the list in the first place. - - Do not feed the trolls. - - 1.7 How to unsubscribe - - You can unsubscribe the same way you subscribed in the first place. You go - to the page for the particular mailing list you are subscribed to and you enter - your email address and password and press the unsubscribe button. - - Also, the instructions to unsubscribe are included in the headers of every - mail that is sent out to all curl related mailing lists and there's a footer - in each mail that links to the "admin" page on which you can unsubscribe and - change other options. - - You NEVER EVER email the mailing list requesting someone else to take you off - the list. - - 1.8 I posted, now what? - - If you are not subscribed with the same email address that you used to send - the email, your post will just be silently discarded. - - If you posted for the first time to the mailing list, you first need to wait - for an administrator to allow your email to go through (moderated). This - normally happens quickly but in case we are asleep, you may have to wait a - few hours. - - Once your email goes through it is sent out to several hundred or even - thousands of recipients. Your email may cover an area that not that many - people know about or are interested in. Or possibly the person who knows - about it is on vacation or under a heavy work load right now. You may have - to wait for a response and you should not expect to get a response at all. - Ideally, you get an answer within a couple of days. - - You do yourself and all of us a service when you include as many details as - possible already in your first email. Mention your operating system and - environment. Tell us which curl version you are using and tell us what you - did, what happened and what you expected would happen. Preferably, show us - what you did with details enough to allow others to help point out the - problem or repeat the steps in their locations. - - Failing to include details will only delay responses and make people respond - and ask for more details and you will have to send a follow-up email that - includes them. - - Expect the responses to primarily help YOU debug the issue, or ask YOU - questions that can lead you or others towards a solution or explanation to - whatever you experience. - - If you are a repeat offender to the guidelines outlined in this document, - chances are that people will ignore you at will and your chances to get - responses in the future will greatly diminish. - - 1.9 Your emails are public - - Your email, its contents and all its headers and the details in those - headers will be received by every subscriber of the mailing list that you - send your email to. - - Your email as sent to a curl mailing list will end up in mail archives, on - the curl website and elsewhere, for others to see and read. Today and in - the future. In addition to the archives, the mail is sent out to thousands - of individuals. There is no way to undo a sent email. - - When sending emails to a curl mailing list, do not include sensitive - information such as user names and passwords; use fake ones, temporary ones - or just remove them completely from the mail. Note that this includes base64 - encoded HTTP Basic auth headers. - - This public nature of the curl mailing lists makes automatically inserted mail - footers about mails being "private" or "only meant for the recipient" or - similar even more silly than usual. Because they are absolutely not private - when sent to a public mailing list. - - -2. Sending mail - - 2.1 Reply or New Mail - - Please do not reply to an existing message as a short-cut to post a message - to the lists. - - Many mail programs and web archivers use information within mails to keep - them together as "threads", as collections of posts that discuss a certain - subject. If you do not intend to reply on the same or similar subject, do not - just hit reply on an existing mail and change the subject, create a new mail. - - 2.2 Reply to the List - - When replying to a message from the list, make sure that you do "group - reply" or "reply to all", and not just reply to the author of the single - mail you reply to. - - We are actively discouraging replying back to the single person by setting - the Reply-To: field in outgoing mails back to the mailing list address, - making it harder for people to mail the author directly, if only by mistake. - - 2.3 Use a Sensible Subject - - Please use a subject of the mail that makes sense and that is related to the - contents of your mail. It makes it a lot easier to find your mail afterwards - and it makes it easier to track mail threads and topics. - - 2.4 Do Not Top-Post - - If you reply to a message, do not use top-posting. Top-posting is when you - write the new text at the top of a mail and you insert the previous quoted - mail conversation below. It forces users to read the mail in a backwards - order to properly understand it. - - This is why top posting is so bad (in top posting order): - - A: Because it messes up the order in which people normally read text. - Q: Why is top-posting such a bad thing? - A: Top-posting. - Q: What is the most annoying thing in email? - - Apart from the screwed up read order (especially when mixed together in a - thread when someone responds using the mandated bottom-posting style), it - also makes it impossible to quote only parts of the original mail. - - When you reply to a mail. You let the mail client insert the previous mail - quoted. Then you put the cursor on the first line of the mail and you move - down through the mail, deleting all parts of the quotes that do not add - context for your comments. When you want to add a comment you do so, inline, - right after the quotes that relate to your comment. Then you continue - downwards again. - - When most of the quotes have been removed and you have added your own words, - you are done. - - 2.5 HTML is not for mails - - Please switch off those HTML encoded messages. You can mail all those funny - mails to your friends. We speak plain text mails. - - 2.6 Quoting - - Quote as little as possible. Just enough to provide the context you cannot - leave out. A lengthy description can be found here: - - https://www.netmeister.org/news/learn2quote.html - - 2.7 Digest - - We allow subscribers to subscribe to the "digest" version of the mailing - lists. A digest is a collection of mails lumped together in one single mail. - - Should you decide to reply to a mail sent out as a digest, there are two - things you MUST consider if you really really cannot subscribe normally - instead: - - Cut off all mails and chatter that is not related to the mail you want to - reply to. - - Change the subject name to something sensible and related to the subject, - preferably even the actual subject of the single mail you wanted to reply to - - 2.8 Please Tell Us How You Solved The Problem - - Many people mail questions to the list, people spend some of their time and - make an effort in providing good answers to these questions. - - If you are the one who asks, please consider responding once more in case - one of the hints was what solved your problems. The guys who write answers - feel good to know that they provided a good answer and that you fixed the - problem. Far too often, the person who asked the question is never heard from - again, and we never get to know if they are gone because the problem was - solved or perhaps because the problem was unsolvable. - - Getting the solution posted also helps other users that experience the same - problem(s). They get to see (possibly in the web archives) that the - suggested fixes actually have helped at least one person. diff --git a/Engine/lib/curl/docs/MQTT.md b/Engine/lib/curl/docs/MQTT.md deleted file mode 100644 index 0f034f72e..000000000 --- a/Engine/lib/curl/docs/MQTT.md +++ /dev/null @@ -1,27 +0,0 @@ -# MQTT in curl - -## Usage - -A plain "GET" subscribes to the topic and prints all published messages. -Doing a "POST" publishes the post data to the topic and exits. - -Example subscribe: - - curl mqtt://host/home/bedroom/temp - -Example publish: - - curl -d 75 mqtt://host/home/bedroom/dimmer - -## What does curl deliver as a response to a subscribe - -It outputs two bytes topic length (MSB | LSB), the topic followed by the -payload. - -## Caveats - -Remaining limitations: - - Only QoS level 0 is implemented for publish - - No way to set retain flag for publish - - No TLS (mqtts) support - - Naive EAGAIN handling will not handle split messages diff --git a/Engine/lib/curl/docs/Makefile.am b/Engine/lib/curl/docs/Makefile.am deleted file mode 100644 index 0959ac593..000000000 --- a/Engine/lib/curl/docs/Makefile.am +++ /dev/null @@ -1,130 +0,0 @@ -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### - -AUTOMAKE_OPTIONS = foreign no-dependencies - -# EXTRA_DIST breaks with $(abs_builddir) so build it using this variable -# but distribute it (using the relative file name) in the next variable -man_MANS = $(abs_builddir)/curl.1 -noinst_man_MANS = curl.1 mk-ca-bundle.1 -dist_man_MANS = curl-config.1 -GENHTMLPAGES = curl.html curl-config.html mk-ca-bundle.html -PDFPAGES = curl.pdf curl-config.pdf mk-ca-bundle.pdf -MANDISTPAGES = curl.1.dist curl-config.1.dist - -HTMLPAGES = $(GENHTMLPAGES) - -# Build targets in this file (.) before cmdline-opts to ensure that -# the curl.1 rule below runs first -SUBDIRS = . cmdline-opts -DIST_SUBDIRS = $(SUBDIRS) examples libcurl - -CLEANFILES = $(GENHTMLPAGES) $(PDFPAGES) $(MANDISTPAGES) curl.1 - -EXTRA_DIST = \ - $(noinst_man_MANS) \ - ALTSVC.md \ - BINDINGS.md \ - BUFREF.md \ - BUG-BOUNTY.md \ - BUGS.md \ - CHECKSRC.md \ - CIPHERS.md \ - CMakeLists.txt \ - CODE_OF_CONDUCT.md \ - CODE_REVIEW.md \ - CODE_STYLE.md \ - CONTRIBUTE.md \ - CURL-DISABLE.md \ - DEPRECATE.md \ - DYNBUF.md \ - EXPERIMENTAL.md \ - FAQ \ - FEATURES.md \ - GOVERNANCE.md \ - HELP-US.md \ - HISTORY.md \ - HSTS.md \ - HTTP-COOKIES.md \ - HTTP2.md \ - HTTP3.md \ - HYPER.md \ - INSTALL \ - INSTALL.cmake \ - INSTALL.md \ - INTERNALS.md \ - KNOWN_BUGS \ - MAIL-ETIQUETTE \ - MQTT.md \ - NEW-PROTOCOL.md \ - options-in-versions \ - PARALLEL-TRANSFERS.md \ - README.md \ - RELEASE-PROCEDURE.md \ - RUSTLS.md \ - ROADMAP.md \ - SECURITY-PROCESS.md \ - SSL-PROBLEMS.md \ - SSLCERTS.md \ - THANKS \ - TODO \ - TheArtOfHttpScripting.md \ - URL-SYNTAX.md \ - VERSIONS.md - -MAN2HTML= roffit $< >$@ - -SUFFIXES = .1 .html .pdf - -# $(abs_builddir) is to disable VPATH when searching for this file, which -# would otherwise find the copy in $(srcdir) which breaks the $(HUGE) -# rule in src/Makefile.am in out-of-tree builds that references the file in the -# build directory. -# -# First, seed the used copy of curl.1 with the prebuilt copy (in an out-of-tree -# build), then run make recursively to rebuild it only if its dependencies -# have changed. -$(abs_builddir)/curl.1: - if test "$(top_builddir)x" != "$(top_srcdir)x" -a -e "$(srcdir)/curl.1"; then \ - $(INSTALL_DATA) "$(srcdir)/curl.1" $@; fi - cd cmdline-opts && $(MAKE) - -html: $(HTMLPAGES) - cd libcurl && $(MAKE) html - -pdf: $(PDFPAGES) - cd libcurl && $(MAKE) pdf - -.1.html: - $(MAN2HTML) - -.1.pdf: - @(foo=`echo $@ | sed -e 's/\.[0-9]$$//g'`; \ - groff -Tps -man $< >$$foo.ps; \ - ps2pdf $$foo.ps $@; \ - rm $$foo.ps; \ - echo "converted $< to $@") - -distclean: - rm -f $(CLEANFILES) diff --git a/Engine/lib/curl/docs/Makefile.in b/Engine/lib/curl/docs/Makefile.in deleted file mode 100644 index 346c31907..000000000 --- a/Engine/lib/curl/docs/Makefile.in +++ /dev/null @@ -1,939 +0,0 @@ -# Makefile.in generated by automake 1.16.5 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2021 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@ - -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = docs -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \ - $(top_srcdir)/m4/curl-bearssl.m4 \ - $(top_srcdir)/m4/curl-compilers.m4 \ - $(top_srcdir)/m4/curl-confopts.m4 \ - $(top_srcdir)/m4/curl-functions.m4 \ - $(top_srcdir)/m4/curl-gnutls.m4 \ - $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \ - $(top_srcdir)/m4/curl-openssl.m4 \ - $(top_srcdir)/m4/curl-override.m4 \ - $(top_srcdir)/m4/curl-reentrant.m4 \ - $(top_srcdir)/m4/curl-rustls.m4 \ - $(top_srcdir)/m4/curl-schannel.m4 \ - $(top_srcdir)/m4/curl-sectransp.m4 \ - $(top_srcdir)/m4/curl-sysconfig.m4 \ - $(top_srcdir)/m4/curl-wolfssl.m4 $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/m4/xc-am-iface.m4 \ - $(top_srcdir)/m4/xc-cc-check.m4 \ - $(top_srcdir)/m4/xc-lt-iface.m4 \ - $(top_srcdir)/m4/xc-translit.m4 \ - $(top_srcdir)/m4/xc-val-flgs.m4 \ - $(top_srcdir)/m4/zz40-xc-ovr.m4 \ - $(top_srcdir)/m4/zz50-xc-ovr.m4 \ - $(top_srcdir)/m4/zz60-xc-ovr.m4 $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/lib/curl_config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -depcomp = -am__maybe_remake_depfiles = -SOURCES = -DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ - ctags-recursive dvi-recursive html-recursive info-recursive \ - install-data-recursive install-dvi-recursive \ - install-exec-recursive install-html-recursive \ - install-info-recursive install-pdf-recursive \ - install-ps-recursive install-recursive installcheck-recursive \ - installdirs-recursive pdf-recursive ps-recursive \ - tags-recursive uninstall-recursive -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -man1dir = $(mandir)/man1 -am__installdirs = "$(DESTDIR)$(man1dir)" -MANS = $(dist_man_MANS) $(man_MANS) -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -am__recursive_targets = \ - $(RECURSIVE_TARGETS) \ - $(RECURSIVE_CLEAN_TARGETS) \ - $(am__extra_recursive_targets) -AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ - distdir distdir-am -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` -am__DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.in INSTALL \ - README.md THANKS TODO -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AR_FLAGS = @AR_FLAGS@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BLANK_AT_MAKETIME = @BLANK_AT_MAKETIME@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CFLAG_CURL_SYMBOL_HIDING = @CFLAG_CURL_SYMBOL_HIDING@ -CONFIGURE_OPTIONS = @CONFIGURE_OPTIONS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CPPFLAG_CURL_STATICLIB = @CPPFLAG_CURL_STATICLIB@ -CSCOPE = @CSCOPE@ -CTAGS = @CTAGS@ -CURLVERSION = @CURLVERSION@ -CURL_CA_BUNDLE = @CURL_CA_BUNDLE@ -CURL_CFLAG_EXTRAS = @CURL_CFLAG_EXTRAS@ -CURL_DISABLE_DICT = @CURL_DISABLE_DICT@ -CURL_DISABLE_FILE = @CURL_DISABLE_FILE@ -CURL_DISABLE_FTP = @CURL_DISABLE_FTP@ -CURL_DISABLE_GOPHER = @CURL_DISABLE_GOPHER@ -CURL_DISABLE_HTTP = @CURL_DISABLE_HTTP@ -CURL_DISABLE_IMAP = @CURL_DISABLE_IMAP@ -CURL_DISABLE_LDAP = @CURL_DISABLE_LDAP@ -CURL_DISABLE_LDAPS = @CURL_DISABLE_LDAPS@ -CURL_DISABLE_MQTT = @CURL_DISABLE_MQTT@ -CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@ -CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@ -CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@ -CURL_DISABLE_SMB = @CURL_DISABLE_SMB@ -CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@ -CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@ -CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@ -CURL_LT_SHLIB_VERSIONED_FLAVOUR = @CURL_LT_SHLIB_VERSIONED_FLAVOUR@ -CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@ -CURL_NETWORK_LIBS = @CURL_NETWORK_LIBS@ -CURL_PLIST_VERSION = @CURL_PLIST_VERSION@ -CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@ -CYGPATH_W = @CYGPATH_W@ -DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -ENABLE_SHARED = @ENABLE_SHARED@ -ENABLE_STATIC = @ENABLE_STATIC@ -ETAGS = @ETAGS@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -FILECMD = @FILECMD@ -FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@ -GCOV = @GCOV@ -GREP = @GREP@ -HAVE_BROTLI = @HAVE_BROTLI@ -HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@ -HAVE_LDAP_SSL = @HAVE_LDAP_SSL@ -HAVE_LIBZ = @HAVE_LIBZ@ -HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@ -HAVE_PROTO_BSDSOCKET_H = @HAVE_PROTO_BSDSOCKET_H@ -HAVE_ZSTD = @HAVE_ZSTD@ -IDN_ENABLED = @IDN_ENABLED@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -IPV6_ENABLED = @IPV6_ENABLED@ -LCOV = @LCOV@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBCURL_LIBS = @LIBCURL_LIBS@ -LIBCURL_NO_SHARED = @LIBCURL_NO_SHARED@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MANOPT = @MANOPT@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NROFF = @NROFF@ -NSS_LIBS = @NSS_LIBS@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PERL = @PERL@ -PKGADD_NAME = @PKGADD_NAME@ -PKGADD_PKG = @PKGADD_PKG@ -PKGADD_VENDOR = @PKGADD_VENDOR@ -PKGCONFIG = @PKGCONFIG@ -RANDOM_FILE = @RANDOM_FILE@ -RANLIB = @RANLIB@ -REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -SSL_BACKENDS = @SSL_BACKENDS@ -SSL_ENABLED = @SSL_ENABLED@ -SSL_LIBS = @SSL_LIBS@ -STRIP = @STRIP@ -SUPPORT_FEATURES = @SUPPORT_FEATURES@ -SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@ -USE_ARES = @USE_ARES@ -USE_BEARSSL = @USE_BEARSSL@ -USE_GNUTLS = @USE_GNUTLS@ -USE_HYPER = @USE_HYPER@ -USE_LIBRTMP = @USE_LIBRTMP@ -USE_LIBSSH = @USE_LIBSSH@ -USE_LIBSSH2 = @USE_LIBSSH2@ -USE_MBEDTLS = @USE_MBEDTLS@ -USE_MSH3 = @USE_MSH3@ -USE_NGHTTP2 = @USE_NGHTTP2@ -USE_NGHTTP3 = @USE_NGHTTP3@ -USE_NGTCP2 = @USE_NGTCP2@ -USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@ -USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@ -USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@ -USE_NSS = @USE_NSS@ -USE_OPENLDAP = @USE_OPENLDAP@ -USE_QUICHE = @USE_QUICHE@ -USE_RUSTLS = @USE_RUSTLS@ -USE_SCHANNEL = @USE_SCHANNEL@ -USE_SECTRANSP = @USE_SECTRANSP@ -USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@ -USE_WIN32_CRYPTO = @USE_WIN32_CRYPTO@ -USE_WIN32_LARGE_FILES = @USE_WIN32_LARGE_FILES@ -USE_WIN32_SMALL_FILES = @USE_WIN32_SMALL_FILES@ -USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@ -USE_WOLFSSH = @USE_WOLFSSH@ -USE_WOLFSSL = @USE_WOLFSSL@ -VERSION = @VERSION@ -VERSIONNUM = @VERSIONNUM@ -ZLIB_LIBS = @ZLIB_LIBS@ -ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -libext = @libext@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -runstatedir = @runstatedir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -AUTOMAKE_OPTIONS = foreign no-dependencies - -# EXTRA_DIST breaks with $(abs_builddir) so build it using this variable -# but distribute it (using the relative file name) in the next variable -man_MANS = $(abs_builddir)/curl.1 -noinst_man_MANS = curl.1 mk-ca-bundle.1 -dist_man_MANS = curl-config.1 -GENHTMLPAGES = curl.html curl-config.html mk-ca-bundle.html -PDFPAGES = curl.pdf curl-config.pdf mk-ca-bundle.pdf -MANDISTPAGES = curl.1.dist curl-config.1.dist -HTMLPAGES = $(GENHTMLPAGES) - -# Build targets in this file (.) before cmdline-opts to ensure that -# the curl.1 rule below runs first -SUBDIRS = . cmdline-opts -DIST_SUBDIRS = $(SUBDIRS) examples libcurl -CLEANFILES = $(GENHTMLPAGES) $(PDFPAGES) $(MANDISTPAGES) curl.1 -EXTRA_DIST = \ - $(noinst_man_MANS) \ - ALTSVC.md \ - BINDINGS.md \ - BUFREF.md \ - BUG-BOUNTY.md \ - BUGS.md \ - CHECKSRC.md \ - CIPHERS.md \ - CMakeLists.txt \ - CODE_OF_CONDUCT.md \ - CODE_REVIEW.md \ - CODE_STYLE.md \ - CONTRIBUTE.md \ - CURL-DISABLE.md \ - DEPRECATE.md \ - DYNBUF.md \ - EXPERIMENTAL.md \ - FAQ \ - FEATURES.md \ - GOVERNANCE.md \ - HELP-US.md \ - HISTORY.md \ - HSTS.md \ - HTTP-COOKIES.md \ - HTTP2.md \ - HTTP3.md \ - HYPER.md \ - INSTALL \ - INSTALL.cmake \ - INSTALL.md \ - INTERNALS.md \ - KNOWN_BUGS \ - MAIL-ETIQUETTE \ - MQTT.md \ - NEW-PROTOCOL.md \ - options-in-versions \ - PARALLEL-TRANSFERS.md \ - README.md \ - RELEASE-PROCEDURE.md \ - RUSTLS.md \ - ROADMAP.md \ - SECURITY-PROCESS.md \ - SSL-PROBLEMS.md \ - SSLCERTS.md \ - THANKS \ - TODO \ - TheArtOfHttpScripting.md \ - URL-SYNTAX.md \ - VERSIONS.md - -MAN2HTML = roffit $< >$@ -SUFFIXES = .1 .html .pdf -all: all-recursive - -.SUFFIXES: -.SUFFIXES: .1 .html .pdf -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign docs/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign docs/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-man1: $(dist_man_MANS) $(man_MANS) - @$(NORMAL_INSTALL) - @list1=''; \ - list2='$(dist_man_MANS) $(man_MANS)'; \ - test -n "$(man1dir)" \ - && test -n "`echo $$list1$$list2`" \ - || exit 0; \ - echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ - { for i in $$list1; do echo "$$i"; done; \ - if test -n "$$list2"; then \ - for i in $$list2; do echo "$$i"; done \ - | sed -n '/\.1[a-z]*$$/p'; \ - fi; \ - } | while read p; do \ - if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; echo "$$p"; \ - done | \ - sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ - sed 'N;N;s,\n, ,g' | { \ - list=; while read file base inst; do \ - if test "$$base" = "$$inst"; then list="$$list $$file"; else \ - echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ - $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ - fi; \ - done; \ - for i in $$list; do echo "$$i"; done | $(am__base_list) | \ - while read files; do \ - test -z "$$files" || { \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ - done; } - -uninstall-man1: - @$(NORMAL_UNINSTALL) - @list=''; test -n "$(man1dir)" || exit 0; \ - files=`{ for i in $$list; do echo "$$i"; done; \ - l2='$(dist_man_MANS) $(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ - sed -n '/\.1[a-z]*$$/p'; \ - } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ - -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ - dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) - -# 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. -$(am__recursive_targets): - @fail=; \ - if $(am__make_keepgoing); then \ - failcom='fail=yes'; \ - else \ - failcom='exit 1'; \ - fi; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - 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; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-recursive -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: ctags-recursive - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-recursive - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - $(am__make_dryrun) \ - || test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-recursive -all-am: Makefile $(MANS) -installdirs: installdirs-recursive -installdirs-am: - for dir in "$(DESTDIR)$(man1dir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -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: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -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-libtool mostlyclean-am - -distclean-am: clean-am distclean-generic distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html-am: - -info: info-recursive - -info-am: - -install-data-am: install-man - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: install-man1 - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: uninstall-man - -uninstall-man: uninstall-man1 - -.MAKE: $(am__recursive_targets) install-am install-strip - -.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ - check-am clean clean-generic clean-libtool cscopelist-am ctags \ - ctags-am distclean distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-man1 install-pdf install-pdf-am install-ps \ - install-ps-am install-strip installcheck installcheck-am \ - installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ - uninstall-am uninstall-man uninstall-man1 - -.PRECIOUS: Makefile - - -# $(abs_builddir) is to disable VPATH when searching for this file, which -# would otherwise find the copy in $(srcdir) which breaks the $(HUGE) -# rule in src/Makefile.am in out-of-tree builds that references the file in the -# build directory. -# -# First, seed the used copy of curl.1 with the prebuilt copy (in an out-of-tree -# build), then run make recursively to rebuild it only if its dependencies -# have changed. -$(abs_builddir)/curl.1: - if test "$(top_builddir)x" != "$(top_srcdir)x" -a -e "$(srcdir)/curl.1"; then \ - $(INSTALL_DATA) "$(srcdir)/curl.1" $@; fi - cd cmdline-opts && $(MAKE) - -html: $(HTMLPAGES) - cd libcurl && $(MAKE) html - -pdf: $(PDFPAGES) - cd libcurl && $(MAKE) pdf - -.1.html: - $(MAN2HTML) - -.1.pdf: - @(foo=`echo $@ | sed -e 's/\.[0-9]$$//g'`; \ - groff -Tps -man $< >$$foo.ps; \ - ps2pdf $$foo.ps $@; \ - rm $$foo.ps; \ - echo "converted $< to $@") - -distclean: - rm -f $(CLEANFILES) - -# 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/Engine/lib/curl/docs/NEW-PROTOCOL.md b/Engine/lib/curl/docs/NEW-PROTOCOL.md deleted file mode 100644 index 9a1451817..000000000 --- a/Engine/lib/curl/docs/NEW-PROTOCOL.md +++ /dev/null @@ -1,110 +0,0 @@ -# Adding a new protocol? - -Every once in a while someone comes up with the idea of adding support for yet -another protocol to curl. After all, curl already supports 25 something -protocols and it is the Internet transfer machine for the world. - -In the curl project we love protocols and we love supporting many protocols -and doing it well. - -So how do you proceed to add a new protocol and what are the requirements? - -## No fixed set of requirements - -This document is an attempt to describe things to consider. There is no -checklist of the twenty-seven things you need to cross off. We view the entire -effort as a whole and then judge if it seems to be the right thing - for -now. The more things that look right, fit our patterns and are done in ways -that align with our thinking, the better are the chances that we will agree -that supporting this protocol is a grand idea. - -## Mutual benefit is preferred - -curl is not here for your protocol. Your protocol is not here for curl. The -best cooperation and end result occur when all involved parties mutually see -and agree that supporting this protocol in curl would be good for everyone. -Heck, for the world. - -Consider "selling us" the idea that we need an implementation merged in curl, -to be fairly important. *Why* do we want curl to support this new protocol? - -## Protocol requirements - -### Client-side - -The protocol implementation is for a client's side of a "communication -session". - -### Transfer oriented - -The protocol itself should be focused on *transfers*. Be it uploads or -downloads or both. It should at least be possible to view the transfers as -such, like we can view reading emails over POP3 as a download and sending -emails over SMTP as an upload. - -If you cannot even shoehorn the protocol into a transfer focused view, then -you are up for a tough argument. - -### URL - -There should be a documented URL format. If there is an RFC for it there is no -question about it but the syntax does not have to be a published RFC. It could -be enough if it is already in use by other implementations. - -If you make up the syntax just in order to be able to propose it to curl, then -you are in a bad place. URLs are designed and defined for interoperability. -There should at least be a good chance that other clients and servers can be -implemented supporting the same URL syntax and work the same or similar way. - -URLs work on registered 'schemes'. There is a register of [all officially -recognized -schemes](https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml). If -your protocol is not in there, is it really a protocol we want? - -### Wide and public use - -The protocol shall already be used or have an expectation of getting used -widely. Experimental protocols are better off worked on in experiments first, -to prove themselves before they are adopted by curl. - -## Code - -Of course the code needs to be written, provided, licensed agreeably and it -should follow our code guidelines and review comments have to be dealt with. -If the implementation needs third party code, that third party code should not -have noticeably lesser standards than the curl project itself. - -## Tests - -As much of the protocol implementation as possible needs to be verified by -curl test cases. We must have the implementation get tested by CI jobs, -torture tests and more. - -We have experienced many times in the past how new implementations were brought -to curl and immediately once the code had been merged, the originator vanished -from the face of the earth. That is fine, but we need to take the necessary -precautions so when it happens we are still fine. - -Our test infrastructure is powerful enough to test just about every possible -protocol - but it might require a bit of an effort to make it happen. - -## Documentation - -We cannot assume that users are particularly familiar with details and -peculiarities of the protocol. It needs documentation. - -Maybe it even needs some internal documentation so that the developers who -will try to debug something five years from now can figure out functionality a -little easier! - -The protocol specification itself should be freely available without requiring -any NDA or similar. - -## Do not compare - -We are constantly raising the bar and we are constantly improving the -project. A lot of things we did in the past would not be acceptable if done -today. Therefore, you might be tempted to use shortcuts or "hacks" you can -spot other - existing - protocol implementations have used, but there is -nothing to gain from that. The bar has been raised. Former "cheats" will not be -tolerated anymore. diff --git a/Engine/lib/curl/docs/PARALLEL-TRANSFERS.md b/Engine/lib/curl/docs/PARALLEL-TRANSFERS.md deleted file mode 100644 index 325e64f9b..000000000 --- a/Engine/lib/curl/docs/PARALLEL-TRANSFERS.md +++ /dev/null @@ -1,58 +0,0 @@ -# Parallel transfers - -curl 7.66.0 introduces support for doing multiple transfers simultaneously; in -parallel. - -## -Z, --parallel - -When this command line option is used, curl will perform the transfers given -to it at the same time. It will do up to `--parallel-max` concurrent -transfers, with a default value of 50. - -## Progress meter - -The progress meter that is displayed when doing parallel transfers is -completely different than the regular one used for each single transfer. - - It shows: - - o percent download (if known, which means *all* transfers need to have a - known size) - o percent upload (if known, with the same caveat as for download) - o total amount of downloaded data - o total amount of uploaded data - o number of transfers to perform - o number of concurrent transfers being transferred right now - o number of transfers queued up waiting to start - o total time all transfers are expected to take (if sizes are known) - o current time the transfers have spent so far - o estimated time left (if sizes are known) - o current transfer speed (the faster of UL/DL speeds measured over the last - few seconds) - -Example: - - DL% UL% Dled Uled Xfers Live Qd Total Current Left Speed - 72 -- 37.9G 0 101 30 23 0:00:55 0:00:34 0:00:22 2752M - -## Behavior differences - -Connections are shared fine between different easy handles, but the -"authentication contexts" are not. So for example doing HTTP Digest auth with -one handle for a particular transfer and then continue on with another handle -that reuses the same connection, the second handle cannot send the necessary -Authorization header at once since the context is only kept in the original -easy handle. - -To fix this, the authorization state could be made possible to share with the -share API as well, as a context per origin + path (realm?) basically. - -Visible in test 153, 1412 and more. - -## Feedback - -This is early days for parallel transfer support. Keep your eyes open for -unintended side effects or downright bugs. - -Tell us what you think and how you think we could improve this feature! - diff --git a/Engine/lib/curl/docs/README.md b/Engine/lib/curl/docs/README.md deleted file mode 100644 index b72d8bc45..000000000 --- a/Engine/lib/curl/docs/README.md +++ /dev/null @@ -1,12 +0,0 @@ -![curl logo](https://curl.se/logo/curl-logo.svg) - -# Documentation - -you will find a mix of various documentation in this directory and -subdirectories, using several different formats. Some of them are not ideal -for reading directly in your browser. - -If you would rather see the rendered version of the documentation, check out the -curl website's [documentation section](https://curl.se/docs/) for -general curl stuff or the [libcurl section](https://curl.se/libcurl/) for -libcurl related documentation. diff --git a/Engine/lib/curl/docs/RELEASE-PROCEDURE.md b/Engine/lib/curl/docs/RELEASE-PROCEDURE.md deleted file mode 100644 index 65c02f91a..000000000 --- a/Engine/lib/curl/docs/RELEASE-PROCEDURE.md +++ /dev/null @@ -1,106 +0,0 @@ -curl release procedure - how to do a release -============================================ - -in the source code repo ------------------------ - -- run `./scripts/copyright.pl` and correct possible omissions - -- edit `RELEASE-NOTES` to be accurate - -- update `docs/THANKS` - -- make sure all relevant changes are committed on the master branch - -- tag the git repo in this style: `git tag -a curl-7_34_0`. -a annotates the - tag and we use underscores instead of dots in the version number. Make sure - the tag is GPG signed (using -s). - -- run "./maketgz 7.34.0" to build the release tarballs. It is important that - you run this on a machine with the correct set of autotools etc installed - as this is what then will be shipped and used by most users on \*nix like - systems. - -- push the git commits and the new tag - -- gpg sign the 4 tarballs as maketgz suggests - -- upload the 8 resulting files to the primary download directory - -in the curl-www repo --------------------- - -- edit `Makefile` (version number and date), - -- edit `_newslog.html` (announce the new release) and - -- edit `_changes.html` (insert changes+bugfixes from RELEASE-NOTES) - -- commit all local changes - -- tag the repo with the same name as used for the source repo. - -- make sure all relevant changes are committed and pushed on the master branch - - (the website then updates its contents automatically) - -on GitHub ---------- - -- edit the newly made release tag so that it is listed as the latest release - -inform ------- - -- send an email to curl-users, curl-announce and curl-library. Insert the - RELEASE-NOTES into the mail. - -celebrate ---------- - -- suitable beverage intake is encouraged for the festivities - -curl release scheduling -======================= - -Release Cycle -------------- - -We do releases every 8 weeks on Wednesdays. If critical problems arise, we can -insert releases outside of the schedule or we can move the release date - but -this is rare. - -Each 8 week release cycle is split in two 4-week periods. - -- During the first 4 weeks after a release, we allow new features and changes - to curl and libcurl. If we accept any such changes, we bump the minor number - used for the next release. - -- During the second 4-week period we do not merge any features or changes, we - then only focus on fixing bugs and polishing things to make a solid coming - release. - -- After a regular procedure-following release (made on Wednesdays), the - feature window remains closed until the following Monday in case of special - actions or patch releases etc. - -If a future release date happens to end up on a "bad date", like in the middle -of common public holidays or when the lead release manager is away traveling, -the release date can be moved forwards or backwards a full week. This is then -advertised well in advance. - -Coming dates ------------- - -Based on the description above, here are some planned release dates (at the -time of this writing): - -- May 11, 2022 (7.83.1) -- July 1, 2022 -- August 31, 2022 -- October 25, 2022 -- December 21, 2022 -- February 15, 2023 (last version 7 release, no feature window after) -- March 20, 2023 (8.0.0 - curl 25 years) -- April 17, 2023 -- July 12, 2023 diff --git a/Engine/lib/curl/docs/ROADMAP.md b/Engine/lib/curl/docs/ROADMAP.md deleted file mode 100644 index e48c21b58..000000000 --- a/Engine/lib/curl/docs/ROADMAP.md +++ /dev/null @@ -1,24 +0,0 @@ -# curl the next few years - perhaps - -Roadmap of things Daniel Stenberg wants to work on next. It is intended to -serve as a guideline for others for information, feedback and possible -participation. - -## "Complete" the HTTP/3 support - -curl has experimental support for HTTP/3 since a good while back. There are -some functionality missing and once the final specs are published we want to -eventually remove the "experimental" label from this functionality. - -## HTTPS DNS records - -As a DNS version of alt-svc and also a pre-requisite for ECH (see below). - -See: https://datatracker.ietf.org/doc/html/draft-ietf-dnsop-svcb-https-02 - -## ECH (Encrypted Client Hello - formerly known as ESNI) - - See Daniel's post on [Support of Encrypted - SNI](https://curl.se/mail/lib-2019-03/0000.html) on the mailing list. - - Initial work exists in https://github.com/curl/curl/pull/4011 diff --git a/Engine/lib/curl/docs/RUSTLS.md b/Engine/lib/curl/docs/RUSTLS.md deleted file mode 100644 index 4b49b5cf7..000000000 --- a/Engine/lib/curl/docs/RUSTLS.md +++ /dev/null @@ -1,26 +0,0 @@ -# Rustls - -[Rustls is a TLS backend written in Rust.](https://docs.rs/rustls/). Curl can -be built to use it as an alternative to OpenSSL or other TLS backends. We use -the [rustls-ffi C bindings](https://github.com/rustls/rustls-ffi/). This -version of curl depends on version v0.8.2 of rustls-ffi. - -# Building with rustls - -First, [install Rust](https://rustup.rs/). - -Next, check out, build, and install the appropriate version of rustls-ffi: - - % cargo install cbindgen - % git clone https://github.com/rustls/rustls-ffi -b v0.8.2 - % cd rustls-ffi - % make - % make DESTDIR=${HOME}/rustls-ffi-built/ install - -Now configure and build curl with rustls: - - % git clone https://github.com/curl/curl - % cd curl - % autoreconf -fi - % ./configure --with-rustls=${HOME}/rustls-ffi-built - % make diff --git a/Engine/lib/curl/docs/SECURITY-PROCESS.md b/Engine/lib/curl/docs/SECURITY-PROCESS.md deleted file mode 100644 index efa47e157..000000000 --- a/Engine/lib/curl/docs/SECURITY-PROCESS.md +++ /dev/null @@ -1,214 +0,0 @@ -# curl security process - -This document describes how security vulnerabilities should be handled in the -curl project. - -## Publishing Information - -All known and public curl or libcurl related vulnerabilities are listed on -[the curl website security page](https://curl.se/docs/security.html). - -Security vulnerabilities **should not** be entered in the project's public bug -tracker. - -## Vulnerability Handling - -The typical process for handling a new security vulnerability is as follows. - -No information should be made public about a vulnerability until it is -formally announced at the end of this process. That means, for example, that a -bug tracker entry must NOT be created to track the issue since that will make -the issue public and it should not be discussed on any of the project's public -mailing lists. Also messages associated with any commits should not make any -reference to the security nature of the commit if done prior to the public -announcement. - -- The person discovering the issue, the reporter, reports the vulnerability on - [https://hackerone.com/curl](https://hackerone.com/curl). Issues filed there - reach a handful of selected and trusted people. - -- Messages that do not relate to the reporting or managing of an undisclosed - security vulnerability in curl or libcurl are ignored and no further action - is required. - -- A person in the security team responds to the original report to acknowledge - that a human has seen the report. - -- The security team investigates the report and either rejects it or accepts - it. See below for examples of problems that are not considered - vulnerabilities. - -- If the report is rejected, the team writes to the reporter to explain why. - -- If the report is accepted, the team writes to the reporter to let them - know it is accepted and that they are working on a fix. - -- The security team discusses the problem, works out a fix, considers the - impact of the problem and suggests a release schedule. This discussion - should involve the reporter as much as possible. - -- The release of the information should be "as soon as possible" and is most - often synchronized with an upcoming release that contains the fix. If the - reporter, or anyone else involved, thinks the next planned release is too - far away, then a separate earlier release should be considered. - -- Write a security advisory draft about the problem that explains what the - problem is, its impact, which versions it affects, solutions or workarounds, - when the release is out and make sure to credit all contributors properly. - Figure out the CWE (Common Weakness Enumeration) number for the flaw. - -- Request a CVE number from - [HackerOne](https://docs.hackerone.com/programs/cve-requests.html) - -- Update the "security advisory" with the CVE number. - -- The security team commits the fix in a private branch. The commit message - should ideally contain the CVE number. - -- The security team also decides on and delivers a monetary reward to the - reporter as per the bug-bounty policies. - -- No more than 10 days before release, inform - [distros@openwall](https://oss-security.openwall.org/wiki/mailing-lists/distros) - to prepare them about the upcoming public security vulnerability - announcement - attach the advisory draft for information with CVE and - current patch. 'distros' does not accept an embargo longer than 14 days and - they do not care for Windows-specific flaws. - -- No more than 48 hours before the release, the private branch is merged into - the master branch and pushed. Once pushed, the information is accessible to - the public and the actual release should follow suit immediately afterwards. - The time between the push and the release is used for final tests and - reviews. - -- The project team creates a release that includes the fix. - -- The project team announces the release and the vulnerability to the world in - the same manner we always announce releases. It gets sent to the - curl-announce, curl-library and curl-users mailing lists. - -- The security web page on the website should get the new vulnerability - mentioned. - -## security (at curl dot se) - -This is a private mailing list for discussions on and about curl security -issues. - -Who is on this list? There are a couple of criteria you must meet, and then we -might ask you to join the list or you can ask to join it. It really is not a -formal process. We basically only require that you have a long-term presence -in the curl project and you have shown an understanding for the project and -its way of working. You must have been around for a good while and you should -have no plans of vanishing in the near future. - -We do not make the list of participants public mostly because it tends to vary -somewhat over time and a list somewhere will only risk getting outdated. - -## Publishing Security Advisories - -1. Write up the security advisory, using markdown syntax. Use the same - subtitles as last time to maintain consistency. - -2. Name the advisory file after the allocated CVE id. - -3. Add a line on the top of the array in `curl-www/docs/vuln.pm'. - -4. Put the new advisory markdown file in the curl-www/docs/ directory. Add it - to the git repository. - -5. Run `make` in your local web checkout and verify that things look fine. - -6. On security advisory release day, push the changes on the curl-www - repository's remote master branch. - -## Hackerone - -Request the issue to be disclosed. If there are sensitive details present in -the report and discussion, those should be redacted from the disclosure. The -default policy is to disclose as much as possible as soon as the vulnerability -has been published. - -## Bug Bounty - -See [BUG-BOUNTY](https://curl.se/docs/bugbounty.html) for details on the -bug bounty program. - -# Not security issues - -This is an incomplete list of issues that are not considered vulnerabilities. - -## Small memory leaks - -We do not consider a small memory leak a security problem; even if the amount -of allocated memory grows by a small amount every now and then. Long-living -applications and services already need to have counter-measures and deal with -growing memory usage, be it leaks or just increased use. A small memory or -resource leak is then expected to *not* cause a security problem. - -Of course there can be a discussion if a leak is small or not. A large leak -can be considered a security problem due to the DOS risk. If leaked memory -contains sensitive data it might also qualify as a security problem. - -## Never-ending transfers - -We do not consider flaws that cause a transfer to never end to be a security -problem. There are already several benign and likely reasons for transfers to -stall and never end, so applications that cannot deal with never-ending -transfers already need to have counter-measures established. - -If the problem avoids the regular counter-measures when it causes a never- -ending transfer, it might very well be a security problem. - -## Not practically possible - -If the flaw or vulnerability cannot practically get executed on existing -hardware it is not a security problem. - -## API misuse - -If a reported issue only triggers by an application using the API in a way -that is not documented to work or even documented to not work, it is probably -not going to be considered a security problem. We only guarantee secure and -proper functionality when the APIs are used as expected and documented. - -There can be a discussion about what the documentation actually means and how -to interpret the text, which might end up with us still agreeing that it is a -security problem. - -## Local attackers already present - -When an issue can only be attacked or misused by an attacker present on the -local system or network, the bar is raised. If a local user wrongfully has -elevated rights on your system enough to attack curl, they can probably -already do much worse harm and the problem is not really in curl. - -## Experiments - -Vulnerabilities in features which are off by default (in the build) and -documented as experimental, are not eligible for a reward and we do not -consider them security problems. - -## URL inconsistencies - -URL parser inconsistencies between browsers and curl are expected and are not -considered security vulnerabilities. The WHATWG URL Specification and RFC -3986+ (the plus meaning that it is an extended version) [are not completely -interoperable](https://github.com/bagder/docs/blob/master/URL-interop.md). - -Obvious parser bugs can still be vulnerabilities of course. - -## Visible command line arguments - -The curl command blanks the contents of a number of command line arguments to -prevent them from appearing in process listings. It does not blank all -arguments even if some of them that are not blanked might contain sensitive -data. We consider this functionality a best-effort and omissions are not -security vulnerabilities. - - - not all systems allow the arguments to be blanked in the first place - - since curl blanks the argument itself they will be readable for a short - moment in time no matter what - - virtually every argument can contain sensitive data, depending on use - - blanking all arguments would make it impractical for users to differentiate - curl command lines in process listings diff --git a/Engine/lib/curl/docs/SSL-PROBLEMS.md b/Engine/lib/curl/docs/SSL-PROBLEMS.md deleted file mode 100644 index 4afe30018..000000000 --- a/Engine/lib/curl/docs/SSL-PROBLEMS.md +++ /dev/null @@ -1,98 +0,0 @@ - _ _ ____ _ - ___| | | | _ \| | - / __| | | | |_) | | - | (__| |_| | _ <| |___ - \___|\___/|_| \_\_____| - -# SSL problems - - First, let's establish that we often refer to TLS and SSL interchangeably as - SSL here. The current protocol is called TLS, it was called SSL a long time - ago. - - There are several known reasons why a connection that involves SSL might - fail. This is a document that attempts to detail the most common ones and - how to mitigate them. - -## CA certs - - CA certs are used to digitally verify the server's certificate. You need a - "ca bundle" for this. See lots of more details on this in the SSLCERTS - document. - -## CA bundle missing intermediate certificates - - When using said CA bundle to verify a server cert, you will experience - problems if your CA store does not contain the certificates for the - intermediates if the server does not provide them. - - The TLS protocol mandates that the intermediate certificates are sent in the - handshake, but as browsers have ways to survive or work around such - omissions, missing intermediates in TLS handshakes still happen that - browser-users will not notice. - - Browsers work around this problem in two ways: they cache intermediate - certificates from previous transfers and some implement the TLS "AIA" - extension that lets the client explicitly download such certificates on - demand. - -## Protocol version - - Some broken servers fail to support the protocol negotiation properly that - SSL servers are supposed to handle. This may cause the connection to fail - completely. Sometimes you may need to explicitly select a SSL version to use - when connecting to make the connection succeed. - - An additional complication can be that modern SSL libraries sometimes are - built with support for older SSL and TLS versions disabled! - - All versions of SSL and the TLS versions before 1.2 are considered insecure - and should be avoided. Use TLS 1.2 or later. - -## Ciphers - - Clients give servers a list of ciphers to select from. If the list does not - include any ciphers the server wants/can use, the connection handshake - fails. - - curl has recently disabled the user of a whole bunch of seriously insecure - ciphers from its default set (slightly depending on SSL backend in use). - - You may have to explicitly provide an alternative list of ciphers for curl - to use to allow the server to use a WEAK cipher for you. - - Note that these weak ciphers are identified as flawed. For example, this - includes symmetric ciphers with less than 128 bit keys and RC4. - - Schannel in Windows XP is not able to connect to servers that no longer - support the legacy handshakes and algorithms used by those versions, so we - advice against building curl to use Schannel on really old Windows versions. - - References: - - https://datatracker.ietf.org/doc/html/draft-popov-tls-prohibiting-rc4-01 - -## Allow BEAST - - BEAST is the name of a TLS 1.0 attack that surfaced 2011. When adding means - to mitigate this attack, it turned out that some broken servers out there in - the wild did not work properly with the BEAST mitigation in place. - - To make such broken servers work, the --ssl-allow-beast option was - introduced. Exactly as it sounds, it re-introduces the BEAST vulnerability - but on the other hand it allows curl to connect to that kind of strange - servers. - -## Disabling certificate revocation checks - - Some SSL backends may do certificate revocation checks (CRL, OCSP, etc) - depending on the OS or build configuration. The --ssl-no-revoke option was - introduced in 7.44.0 to disable revocation checking but currently is only - supported for Schannel (the native Windows SSL library), with an exception - in the case of Windows' Untrusted Publishers block list which it seems cannot - be bypassed. This option may have broader support to accommodate other SSL - backends in the future. - - References: - - https://curl.se/docs/ssl-compared.html diff --git a/Engine/lib/curl/docs/SSLCERTS.md b/Engine/lib/curl/docs/SSLCERTS.md deleted file mode 100644 index ec57f41c9..000000000 --- a/Engine/lib/curl/docs/SSLCERTS.md +++ /dev/null @@ -1,173 +0,0 @@ -SSL Certificate Verification -============================ - -SSL is TLS ----------- - -SSL is the old name. It is called TLS these days. - - -Native SSL ----------- - -If libcurl was built with Schannel or Secure Transport support (the native SSL -libraries included in Windows and Mac OS X), then this does not apply to -you. Scroll down for details on how the OS-native engines handle SSL -certificates. If you are not sure, then run "curl -V" and read the results. If -the version string says `Schannel` in it, then it was built with Schannel -support. - -It is about trust ------------------ - -This system is about trust. In your local CA certificate store you have certs -from *trusted* Certificate Authorities that you then can use to verify that the -server certificates you see are valid. they are signed by one of the CAs you -trust. - -Which CAs do you trust? You can decide to trust the same set of companies your -operating system trusts, or the set one of the known browsers trust. That is -basically trust via someone else you trust. You should just be aware that -modern operating systems and browsers are setup to trust *hundreds* of -companies and in recent years several such CAs have been found untrustworthy. - -Certificate Verification ------------------------- - -libcurl performs peer SSL certificate verification by default. This is done -by using a CA certificate store that the SSL library can use to make sure the -peer's server certificate is valid. - -If you communicate with HTTPS, FTPS or other TLS-using servers using -certificates that are signed by CAs present in the store, you can be sure -that the remote server really is the one it claims to be. - -If the remote server uses a self-signed certificate, if you do not install a CA -cert store, if the server uses a certificate signed by a CA that is not -included in the store you use or if the remote host is an impostor -impersonating your favorite site, and you want to transfer files from this -server, do one of the following: - - 1. Tell libcurl to *not* verify the peer. With libcurl you disable this with - `curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, FALSE);` - - With the curl command line tool, you disable this with -k/--insecure. - - 2. Get a CA certificate that can verify the remote server and use the proper - option to point out this CA cert for verification when connecting. For - libcurl hackers: `curl_easy_setopt(curl, CURLOPT_CAINFO, cacert);` - - With the curl command line tool: --cacert [file] - - 3. Add the CA cert for your server to the existing default CA certificate - store. The default CA certificate store can be changed at compile time with - the following configure options: - - --with-ca-bundle=FILE: use the specified file as the CA certificate store. - CA certificates need to be concatenated in PEM format into this file. - - --with-ca-path=PATH: use the specified path as CA certificate store. CA - certificates need to be stored as individual PEM files in this directory. - You may need to run c_rehash after adding files there. - - If neither of the two options is specified, configure will try to auto-detect - a setting. It's also possible to explicitly not hardcode any default store - but rely on the built in default the crypto library may provide instead. - You can achieve that by passing both --without-ca-bundle and - --without-ca-path to the configure script. - - If you use Internet Explorer, this is one way to get extract the CA cert - for a particular server: - - - View the certificate by double-clicking the padlock - - Find out where the CA certificate is kept (Certificate> - Authority Information Access>URL) - - Get a copy of the crt file using curl - - Convert it from crt to PEM using the openssl tool: - openssl x509 -inform DES -in yourdownloaded.crt \ - -out outcert.pem -text - - Add the 'outcert.pem' to the CA certificate store or use it stand-alone - as described below. - - If you use the 'openssl' tool, this is one way to get extract the CA cert - for a particular server: - - - `openssl s_client -showcerts -servername server -connect server:443 > cacert.pem` - - type "quit", followed by the "ENTER" key - - The certificate will have "BEGIN CERTIFICATE" and "END CERTIFICATE" - markers. - - If you want to see the data in the certificate, you can do: "openssl - x509 -inform PEM -in certfile -text -out certdata" where certfile is - the cert you extracted from logfile. Look in certdata. - - If you want to trust the certificate, you can add it to your CA - certificate store or use it stand-alone as described. Just remember that - the security is no better than the way you obtained the certificate. - - 4. If you are using the curl command line tool, you can specify your own CA - cert file by setting the environment variable `CURL_CA_BUNDLE` to the path - of your choice. - - If you are using the curl command line tool on Windows, curl will search - for a CA cert file named "curl-ca-bundle.crt" in these directories and in - this order: - 1. application's directory - 2. current working directory - 3. Windows System directory (e.g. C:\windows\system32) - 4. Windows Directory (e.g. C:\windows) - 5. all directories along %PATH% - - 5. Get a better/different/newer CA cert bundle! One option is to extract the - one a recent Firefox browser uses by running 'make ca-bundle' in the curl - build tree root, or possibly download a version that was generated this - way for you: [CA Extract](https://curl.se/docs/caextract.html) - -Neglecting to use one of the above methods when dealing with a server using a -certificate that is not signed by one of the certificates in the installed CA -certificate store, will cause SSL to report an error ("certificate verify -failed") during the handshake and SSL will then refuse further communication -with that server. - -Certificate Verification with NSS ---------------------------------- - -If libcurl was built with NSS support, then depending on the OS distribution, -it is probably required to take some additional steps to use the system-wide -CA cert db. RedHat ships with an additional module, libnsspem.so, which -enables NSS to read the OpenSSL PEM CA bundle. On openSUSE you can install -p11-kit-nss-trust which makes NSS use the system wide CA certificate store. NSS -also has a new [database format](https://wiki.mozilla.org/NSS_Shared_DB). - -Starting with version 7.19.7, libcurl automatically adds the 'sql:' prefix to -the certdb directory (either the hardcoded default /etc/pki/nssdb or the -directory configured with SSL_DIR environment variable). To check which certdb -format your distribution provides, examine the default certdb location: -/etc/pki/nssdb; the new certdb format can be identified by the filenames -cert9.db, key4.db, pkcs11.txt; filenames of older versions are cert8.db, -key3.db, secmod.db. - -Certificate Verification with Schannel and Secure Transport ------------------------------------------------------------ - -If libcurl was built with Schannel (Microsoft's native TLS engine) or Secure -Transport (Apple's native TLS engine) support, then libcurl will still perform -peer certificate verification, but instead of using a CA cert bundle, it will -use the certificates that are built into the OS. These are the same -certificates that appear in the Internet Options control panel (under Windows) -or Keychain Access application (under OS X). Any custom security rules for -certificates will be honored. - -Schannel will run CRL checks on certificates unless peer verification is -disabled. Secure Transport on iOS will run OCSP checks on certificates unless -peer verification is disabled. Secure Transport on OS X will run either OCSP -or CRL checks on certificates if those features are enabled, and this behavior -can be adjusted in the preferences of Keychain Access. - -HTTPS proxy ------------ - -Since version 7.52.0, curl can do HTTPS to the proxy separately from the -connection to the server. This TLS connection is handled separately from the -server connection so instead of `--insecure` and `--cacert` to control the -certificate verification, you use `--proxy-insecure` and `--proxy-cacert`. -With these options, you make sure that the TLS connection and the trust of the -proxy can be kept totally separate from the TLS connection to the server. diff --git a/Engine/lib/curl/docs/THANKS b/Engine/lib/curl/docs/THANKS deleted file mode 100644 index 89b263a03..000000000 --- a/Engine/lib/curl/docs/THANKS +++ /dev/null @@ -1,2696 +0,0 @@ - This project has been alive for many years. Countless people have provided - feedback that have improved curl. Here follows a list of people that have - contributed (a-z order). - - If you have contributed but are missing here, please let us know! - -0xee on github -0xflotus on github -1337vt on github -1ocalhost on github -3dyd on github -3eka on github -8U61ife on github -a1346054 on github -Aaro Koskinen -Aaron Oneal -Aaron Orenstein -Aaron Scarisbrick -aasivov on github -Abhinav Singh -Abram Pousada -accountantM on github -AceCrow on Github -Adam Barclay -Adam Brown -Adam Coyne -Adam D. Moss -Adam Langley -Adam Light -Adam Marcionek -Adam Piggott -Adam Rosenfield -Adam Sampson -Adam Tkac -Adnan Khan -adnn on github -Adrian Burcea -Adrian Peniak -Adrian Schuur -Adriano Meirelles -afrind on github -ahodesuka on github -Ajit Dhumale -Akhil Kedia -Aki Koskinen -Akos Pasztory -Akshay Vernekar -Alain Danteny -Alain Miniussi -Alan Jenkins -Alan Pinstein -Albert Chin-A-Young -Albert Choy -Albin Vass -Alejandro Alvarez Ayllon -Alejandro Colomar -Alejandro R. Sedeño -Aleksandar Milivojevic -Aleksander Mazur -Aleksandr Krotov -Aleksey Tulinov -Ales Mlakar -Ales Novak -Alessandro Ghedini -Alessandro Vesely -Alex aka WindEagle -Alex Baines -Alex Bligh -Alex Chan -Alex Crichton -Alex Fishman -Alex Gaynor -Alex Grebenschikov -Alex Gruz -Alex Kiernan -Alex Konev -Alex Malinovich -Alex Mayorga -Alex McLellan -Alex Neblett -Alex Nichols -Alex Potapenko -Alex Rousskov -Alex Samorukov -Alex Suykov -Alex Vinnik -Alex Xu -Alexander Beedie -Alexander Chuykov -Alexander Dyagilev -Alexander Elgert -Alexander Kanavin -Alexander Klauer -Alexander Kourakos -Alexander Krasnostavsky -Alexander Lazic -Alexander Pepper -Alexander Peslyak -Alexander Sinditskiy -Alexander Traud -Alexander V. Tikhonov -Alexander Zhuravlev -Alexandre Bury -Alexandre Pion -Alexey Borzov -Alexey Eremikhin -Alexey Melnichuk -Alexey Pesternikov -Alexey Simak -Alexey Zakhlestin -Alexis Carvalho -Alexis La Goutte -Alexis Vachette -Alfonso Martone -Alfred Gebert -Allen Pulsifer -Alona Rossen -Amaury Denoyelle -amishmm on github -Amit Katyal -Amol Pattekar -Amr Shahin -Anatol Belski -Anatoli Tubman -Anders Bakken -Anders Berg -Anders Gustafsson -Anders Havn -Anders Roxell -Anderson Sasaki -Anderson Toshiyuki Sasaki -Andi Jahja -Andre Guibert de Bruet -Andre Heinecke -Andrea Pappacoda -Andreas Damm -Andreas Falkenhahn -Andreas Farber -Andreas Fischer -Andreas Kostyrka -Andreas Malzahn -Andreas Ntaflos -Andreas Olsson -Andreas Rieke -Andreas Roth -Andreas Schneider -Andreas Schuldei -Andreas Sommer -Andreas Streichardt -Andreas Wurf -Andrei Benea -Andrei Bica -Andrei Cipu -Andrei Karas -Andrei Kurushin -Andrei Neculau -Andrei Rybak -Andrei Sedoi -Andrei Valeriu BICA -Andrei Virtosu -Andrej E Baranov -Andrew Barnert -Andrew Barnes -Andrew Benham -Andrew Biggs -Andrew Bushnell -Andrew de los Reyes -Andrew Francis -Andrew Fuller -Andrew Ishchuk -Andrew Krieger -Andrew Kurushin -Andrew Lambert -Andrew Moise -Andrew Potter -Andrew Robbins -Andrew Wansink -Andrey Alifanov -Andrey Gursky -Andrey Labunets -Andrii Moiseiev -Andrius Merkys -Andrés García -Andy Cedilnik -Andy Fiddaman -Andy Serpa -Andy Tsouladze -Angus Mackay -anio on github -anon00000000 on github -anshnd on github -Antarpreet Singh -Anthon Pang -Anthony Avina -Anthony Bryan -Anthony G. Basile -Anthony Hu -Anthony Ramine -Anthony Shaw -Antoine Aubert -Antoine Calando -Antoine Pietri -Anton Bychkov -Anton Gerasimov -Anton Kalmykov -Anton Malov -Anton Yabchinskiy -Antoni Villalonga -Antonio Larrosa -Antony74 on github -Antti Hätälä -April King -arainchik on github -Archangel_SDY on github -Arkadiusz Miskiewicz -Armel Asselin -Arnaud Compan -Arnaud Ebalard -Arnaud Rebillout -Aron Bergman -Aron Rotteveel -Artak Galoyan -Arthur Murray -Artur Sinila -Arve Knudsen -Arvid Norberg -arvids-kokins-bidstack on github -asavah on github -Ashish Shukla -Ashwin Metpalli -Ask Bjørn Hansen -Askar Safin -Ates Goral -Augustus Saunders -Austin Green -Avery Fay -awesomenode on github -Axel Chong -Axel Morawietz -Axel Tillequin -Ayoub Boudhar -Ayushman Singh Chauhan -b9a1 on github -Bachue Zhou -Balaji Parasuram -Balaji S Rao -Balaji Salunke -Balakrishnan Balasubramanian -Balazs Kovacsics -Balint Szilakszi -Barry Abrahamson -Barry Pollard -Bart Whiteley -Baruch Siach -Bas Mevissen -Bas van Schaik -Bastian Krause -Bastien Bouclet -Basuke Suzuki -baumanj on github -bdry on github -beckenc on github -Ben Boeckel -Ben Darnell -Ben Greear -Ben Kohler -Ben Madsen -Ben Noordhuis -Ben Van Hof -Ben Voris -Ben Winslow -Benau on github -Benbuck Nason -Benjamin Gerard -Benjamin Gilbert -Benjamin Johnson -Benjamin Kircher -Benjamin Riefenstahl -Benjamin Ritcey -Benjamin Sergeant -Benoit Neil -Benoit Sigoure -Bernard Leak -Bernard Spil -Bernat Mut -Bernd Mueller -Bernhard Iselborn -Bernhard M. Wiedemann -Bernhard Reutner-Fischer -Bernhard Walle -Bert Huijben -Bertrand Demiddelaer -Bertrand Simonnet -beslick5 on github -Bevan Weiss -Bill Doyle -Bill Egert -Bill Hoffman -Bill Middlecamp -Bill Nagel -Bill Pyne -billionai on github -Billyzou0741326 on github -Bin Lan -Bin Meng -Bjarni Ingi Gislason -Bjoern Franke -Bjoern Sikora -Bjorn Augustsson -Bjorn Reese -Björn Stenberg -Blaise Potard -Blake Burkhart -bnfp on github -Bo Anderson -Bob Relyea -Bob Richmond -Bob Schader -bobmitchell1956 on github -Bodo Bergmann -Bogdan Nicula -Boris Rasin -Boris Verkhovskiy -Brad Burdick -Brad Fitzpatrick -Brad Forschinger -Brad Harder -Brad Hards -Brad King -Brad Spencer -Bradford Bruce -bramus on github -Brandon Casey -Brandon Dong -Brandon Wang -Brendan Jurd -Brent Beardsley -Brian Akins -Brian Bergeron -Brian Carpenter -Brian Chaplin -Brian Childs -Brian Chrisman -Brian Dessent -Brian E. Gallew -Brian Inglis -Brian J. Murrell -Brian Prodoehl -Brian R Duffy -Brian Ulm -Brock Noland -Bru Rom -Bruce Mitchener -Bruce Stephens -BrumBrum on hackerone -Bruno Baguette -Bruno de Carvalho -Bruno Grasselli -Bruno Thomsen -Bryan Henderson -Bryan Kemp -bsammon on github -Bubu on github -buzo-ffm on github -bxac on github -Bylon2 on github -Byrial Jensen -Caleb Raitto -Calvin Buckley -Cameron Cawley -Cameron Kaiser -Cameron MacMinn -Cameron Will -Camille Moncelier -Cao ZhenXiang -Caolan McNamara -Captain Basil -Carie Pointer -Carl Zogheib -Carlo Alberto -Carlo Cannas -Carlo Marcelo Arenas Belón -Carlo Teubner -Carlo Wood -Carlos ORyan -Carsten Lange -Casey O'Donnell -Catalin Patulea -causal-agent on github -cbartl on github -cclauss on github -Cering on github -Cesar Eduardo Barros -Chad Monroe -Chandrakant Bagul -Charles Cazabon -Charles Kerr -Charles Romestant -Chen Prog -Cherish98 on github -Chester Liu -Chih-Chung Chang -Chih-Hsuan Yen -Chris "Bob Bob" -Chris Araman -Chris Carlmar -Chris Combes -Chris Conlon -Chris Deidun -Chris Faherty -Chris Flerackers -Chris Gaukroger -Chris Maltby -Chris Mumford -Chris Paulson-Ellis -Chris Roberts -Chris Smowton -Chris Young -Christian Fillion -Christian Grothoff -Christian Heimes -Christian Hägele -Christian Krause -Christian Kurz -Christian Robottom Reis -Christian Schmitz -Christian Stewart -Christian Vogt -Christian Weisgerber -Christoph Krey -Christoph M. Becker -Christophe Demory -Christophe Dervieux -Christophe Legry -Christopher Conroy -Christopher Degawa -Christopher Head -Christopher Palow -Christopher R. Palmer -Christopher Reid -Christopher Stone -Chungtsun Li -Ciprian Badescu -civodul on github -Claes Jakobsson -Clarence Gardner -Claudio Neves -clbr on github -Clemens Gruber -Cliff Crosland -Clifford Wolf -Clint Clayton -Clément Notin -cmfrolick on github -codesniffer13 on github -Cody Jones -Cody Mack -COFFEETALES on github -coinhubs on github -Colby Ranger -Colin Blair -Colin Hogben -Colin Leroy -Colin O'Dell -Colin Watson -Colm Buckley -Constantine Sapuntzakis -coralw on github -Cory Benfield -Cory Nelson -Costya Shulyupin -Craig A West -Craig Andrews -Craig Davison -Craig de Stigter -Craig Markwardt -crazydef on github -Cris Bailiff -Cristian Greco -Cristian Morales Vega -Cristian Rodríguez -Curt Bogmine -Cynthia Coan -Cyril B -Cyrill Osterwalder -Cédric Connes -Cédric Deltheil -D. Flinkmann -d4d on hackerone -d912e3 on github -Da-Yoon Chung -daboul on github -Dag Ekengren -Dagobert Michelsen -Daiki Ueno -Dair Grant -Dambaev Alexander -Damian Dixon -Damien Adant -Damien Vielpeau -Damien Walsh -Dan Becker -Dan Cristian -Dan Donahue -Dan Fandrich -Dan Jacobson -Dan Johnson -Dan Kenigsberg -Dan Locks -Dan McNulty -Dan Nelson -Dan Petitt -Dan Torop -Dan Zitter -Daniel at touchtunes -Daniel Bankhead -Daniel Black -Daniel Carpenter -Daniel Cater -Daniel Egger -Daniel Gustafsson -Daniel Hwang -Daniel JeliÅ„ski -Daniel Johnson -Daniel Kahn Gillmor -Daniel Katz -Daniel Krügler -Daniel KureÄka -Daniel Lee Hwang -Daniel Lublin -Daniel Marjamäki -Daniel Melani -Daniel Mentz -Daniel Romero -Daniel Schauenberg -Daniel Seither -Daniel Shahaf -Daniel Silverstone -Daniel Steinberg -Daniel Stenberg -Daniel Theron -Daniel Valenzuela -Daniel Woelfel -Daphne Luong -Dario Nieuwenhuis -Dario Weißer -Darryl House -Darshan Mody -Darío Hereñú -dasimx on github -Dave Dribin -Dave Halbakken -Dave Hamilton -Dave May -Dave Reisner -Dave Thompson -Dave Vasilevsky -Davey Shafik -David Bau -David Benjamin -David Binderman -David Blaikie -David Bohman -David Byron -David Carlier -David Cohen -David Cook -David Demelier -David E. Narváez -David Earl -David Eriksson -David Garske -David Goerger -David Houlder -David Hu -David Hull -David J Meyer -David James -David Kalnischkies -David Kierznowski -David Kimdon -David L. -David Lang -David LeBlanc -David Lopes -David Lord -David McCreedy -David Odin -David Phillips -David Rosenstrauch -David Ryskalczyk -David Sanderson -David Schweikert -David Shaw -David Strauss -David Tarendash -David Thiel -David Walser -David Woodhouse -David Wright -David Yan -Davide Cassioli -davidedec on github -dbrowndan on github -dEajL3kA on github -Dengminwen -Denis BaruÄić -Denis Chaplygin -Denis Feklushkin -Denis Goleshchikhin -Denis Laxalde -Denis Ollier -Dennis Clarke -Dennis Felsing -Derek Higgins -Desmond O. Chang -destman on github -Detlef Schmier -Dheeraj Sangamkar -Didier Brisebourg -Diego Bes -Diego Casorran -Dietmar Hauser -Dilyan Palauzov -Dima Barsky -Dima Pasechnik -Dima Tisnek -Dimitar Boevski -Dimitre Dimitrov -Dimitrios Apostolou -Dimitrios Siganos -Dimitris Sarris -Dinar -Dirk Eddelbuettel -Dirk Feytons -Dirk Manske -Dirk Wetter -Dirkjan Bussink -Diven Qi -divinity76 on github -dkjjr89 on github -dkwolfe4 on github -Dmitri Shubin -Dmitri Tikhonov -Dmitriy Sergeyev -dmitrmax on github -Dmitry Bartsevich -Dmitry Eremin-Solenikov -Dmitry Falko -Dmitry Karpov -Dmitry Kostjuchenko -Dmitry Kurochkin -Dmitry Mikhirev -Dmitry Popov -Dmitry Rechkin -Dmitry S. Baikov -Dmitry Wagin -dnivras on github -Dolbneff A.V -Domen Kožar -Domenico Andreoli -Dominick Meglio -Dominik Hölzl -Dominik Thalhammer -Dominique Leuenberger -Don J Olmstead -Dongliang Mu -Doron Behar -Doug Kaufman -Doug Porter -Douglas Creager -Douglas E. Wegscheid -Douglas Kilpatrick -Douglas Mencken -Douglas R. Horner -Douglas R. Reno -Douglas Steinwand -Dov Murik -dpull on github -Drake Arconis -dtmsecurity on github -Duane Cathey -Duncan Mac-Vicar Prett -Duncan Wilcox -Dustin Boswell -Dustin Howett -Dusty Mabe -Duy Phan Thanh -Dwarakanath Yadavalli -Dylan Ellicott -Dylan Salisbury -Dániel Bakai -Early Ehlinger -Earnestly on github -Eason-Yu on github -Ebe Janchivdorj -ebejan on github -Ebenezer Ikonne -Ed Morley -Eddie Lumpkin -Edgaras JanuÅ¡auskas -Edin Kadribasic -Edmond Yu -Eduard Bloch -Edward Kimmel -Edward Rudd -Edward Sheldrake -Edward Thomson -Eelco Dolstra -Eetu Ojanen -Egon Eckert -Egor Pugin -Ehren Bendler -Eldar Zaitov -elelel on github -elephoenix on github -Eli Schwartz -Elia Tufarolo -Elliot Saba -Ellis Pritchard -Elmira A Semenova -Elms -elsamuko on github -emanruse on github -Emanuele Bovisio -Emanuele Torre -Emil Engler -Emil Lerner -Emil Romanus -Emiliano Ida -Emmanuel Tychon -Enrico Scholz -Enrik Berkhan -Eramoto Masaya -Eric Cooper -Eric Curtin -Eric Gallager -Eric Hu -Eric Landes -Eric Lavigne -Eric Lubin -Eric Melville -Eric Mertens -Eric Musser -Eric Rautman -Eric Rescorla -Eric Ridge -Eric Rosenquist -Eric S. Raymond -Eric Sauvageau -Eric Thelin -Eric Vergnaud -Eric Wong -Eric Wu -Eric Young -Erick Nuwendam -Erik Jacobsen -Erik Janssen -Erik Johansson -Erik Minekus -Erik Olsson -Erik Stenlund -Ernest Beinrohr -Ernst Sjöstrand -Erwan Legrand -Erwin Authried -Estanislau Augé-Pujadas -Ethan Glasser Camp -Etienne Simard -Eugene Kotlyarov -Evan Jordan -Evangelos Foutras -Even Rouault -Evert Pot -Evgeny Grin (Karlson2k) -Evgeny Turnaev -eXeC64 on github -Eygene Ryabinkin -Eylem Ugurel -Fabian Fischer -Fabian Frank -Fabian Hiernaux -Fabian Keil -Fabian Ruff -Fabian Yamaguchi -Fabrice Fontaine -Fabrizio Ammollo -Fahim Chandurwala -Faizur Rahman -Farzin on github -Fawad Mirza -fds242 on github -Federico Bianchi -Fedor Karpelevitch -Fedor Korotkov -Feist Josselin -Felipe Gasper -Felix Hädicke -Felix Kaiser -Felix von Leitner -Felix Yan -Feng Tu -Fernando Muñoz -Filip Lundgren -Filip Salomonsson -Firefox OS -Flameborn on github -Flavio Medeiros -Florian Kohnhäuser -Florian Pritz -Florian Schoppmann -Florian Van Heghe -Florian Weimer -Florin Petriuc -Forrest Cahoon -Francisco Moraes -Francisco Munoz -Francisco Olarte -Francisco Sedano -Francois Petitjean -Francois Rivard -Frank Denis -Frank Gevaerts -Frank Hempel -Frank Keeney -Frank McGeough -Frank Meier -Frank Ticheler -Frank Van Uffelen -FrantiÅ¡ek KuÄera -François Charlier -François Rigault -Frazer Smith -Fred Machado -Fred New -Fred Noz -Fred Stluka -Frederic Lepied -Frederik B -Frederik Wedel-Heinen -Fredrik Thulin -FuccDucc on github -fullincome on github -Gabriel Kuri -Gabriel Simmer -Gabriel Sjoberg -Gambit Communications -Ganesh Kamath -gaoxingwang on github -Garrett Holmstrom -Garrett Squire -Gary Maxwell -Gaurav Malhotra -Gautam Kachroo -Gautam Mani -Gavin Wong -Gavrie Philipson -Gaz Iqbal -Gaël Portay -gclinch on github -Gealber Morales -Geeknik Labs -Geoff Beier -Georeth Zhou -Georg Horn -Georg Huettenegger -Georg Lippitsch -Georg Wicherski -George Liu -Gerd v. Egidy -Gergely Nagy -Gerhard Herre -Gerrit Bruchhäuser -Gerrit Renker -Ghennadi Procopciuc -Giancarlo Formicuccia -Giaslas Georgios -Gil Weber -Gilad -Gilbert Ramirez Jr. -Gilles Blanc -Gilles Vollant -Giorgos Oikonomou -Gisle Vanem -git-bruh on github -GitYuanQu on github -Giuseppe Attardi -Giuseppe D'Ambrosio -Giuseppe Persico -Gleb Ivanovsky -Glen A Johnson Jr. -Glen Nakamura -Glen Scott -Glenn de boer -Glenn Sheridan -Glenn Strauss -Godwin Stewart -Google Inc. -Gordon Marler -Gorilla Maguila -Gou Lingfeng -Grant Erickson -Grant Pannell -Greg Hewgill -Greg Morse -Greg Onufer -Greg Pratt -Greg Rowe -Greg Zavertnik -Gregor Jasny -Gregory Jefferis -Gregory Muchka -Gregory Nicholls -Gregory Szorc -Griffin Downs -Grigory Entin -Guenole Bescon -Guido Berhoerster -Guillaume Arluison -guitared on github -Gunter Knauf -Gustaf Hui -Gustavo Grieco -Guy Poizat -GwanYeong Kim -Gwen Shapira -Gwenole Beauchesne -Gökhan Åžengün -Götz Babin-Ebell -h1zzz on github -H3RSKO on github -Hagai Auro -Haibo Huang -Hamish Mackenzie -hamstergene on github -Han Han -Han Qiao -Hang Kin Lau -Hang Su -Hannes Magnusson -Hanno Böck -Hanno Kranzhoff -Hans Steegers -Hans-Christian Noren Egtvedt -Hans-Jurgen May -Hao Wu -Hardeep Singh -Haris Okanovic -Harold Stuart -Harry Sarson -Harry Sintonen -Harshal Pradhan -Hauke Duden -Hayden Roche -He Qin -Heikki Korpela -Heinrich Ko -Heinrich Schaefer -Helge Klein -Helmut K. C. Tessarek -Helwing Lutz -Hendrik Visage -Henri Gomez -Henrik Gaßmann -Henrik Holst -Henrik Storner -Henry Ludemann -Henry Roeland -Herve Amblard -HexTheDragon -Hidemoto Nakada -highmtworks on github -Himanshu Gupta -Ho-chi Chen -Hoi-Ho Chan -Hongli Lai -Hongyi Zhao -Howard Blaise -Howard Chu -hsiao yi -htasta on github -Hubert Kario -Hugh Macdonald -Hugo van Kemenade -Huzaifa Sidhpurwala -huzunhao on github -hydra3333 on github -Hzhijun -iammrtau on github -Ian Blanes -Ian D Allen -Ian Fette -Ian Ford -Ian Gulliver -Ian Lynagh -Ian Spence -Ian Turner -Ian Wilkes -Ignacio Vazquez-Abrams -Igor Franchuk -Igor Khristophorov -Igor Makarov -Igor Novoseltsev -Igor Polyakov -Ihor Karpenko -ihsinme on github -Iida Yosiaki -Ikko Ashimine -Ilguiz Latypov -Ilja van Sprundel -Illarion Taev -illusory-dream on github -Ilya Kosarev -imilli on github -Immanuel Gregoire -ImpatientHippo on GitHub -Inca R -infinnovation-dev on github -Ingmar Runge -Ingo Ralf Blum -Ingo Wilken -Inho Oh -IonuÈ›-Francisc Oancea -Irfan Adilovic -Ironbars13 on github -Irving Wolfe -Isaac Boukris -Isaiah Norton -Ishan SinghLevett -Ithubg on github -Ivan Avdeev -Ivan Tsybulin -IvanoG on github -Ivo Bellin Salarin -iz8mbw on github -J. Bromley -Jack Boos Yu -Jack Zhang -Jackarain on github -Jacky Lam -Jacob Barthelmeh -Jacob Hoffman-Andrews -Jacob Meuser -Jacob Moshenko -Jacob Tolar -Jactry Zeng -Jad Chamcham -Jaime Fullaondo -jakirkham on github -Jakub Bochenski -Jakub Wilk -Jakub Zakrzewski -James Atwill -James Brown -James Bursa -James Cheng -James Clancy -James Cone -James Dury -James Fuller -James Gallagher -James Griffiths -James Housley -James Knight -James Le Cuirot -James MacMillan -James Slaughter -Jamie Lokier -Jamie Newton -Jamie Wilkinson -Jan Alexander Steffens -Jan Chren -Jan Ehrhardt -Jan Koen Annot -Jan Kunder -Jan Mazur -Jan Schaumann -Jan Schmidt -Jan Van Boghout -Jan Venekamp -Jan Verbeek -Jan-Piet Mens -JanB on github -Janne Johansson -Jared Jennings -Jared Lundell -Jari Aalto -Jari Sundell -jasal82 on github -Jason Baietto -Jason Glasgow -Jason Juang -Jason Lee -Jason Liu -Jason McDonald -Jason S. Priebe -Javier Barroso -Javier Blazquez -Javier G. Sogo -Javier Navarro -Javier Sixto -Jay Austin -Jay Dommaschk -Jayesh A Shah -Jaz Fresh -Jean Fabrice -Jean Gressmann -Jean Jacques Drouin -Jean-Claude Chauve -Jean-Francois Bertrand -Jean-Francois Durand -Jean-Louis Lemaire -Jean-Marc Ranger -Jean-Noël Rouvignac -Jean-Philippe Barrette-LaPierre -Jean-Philippe Menil -Jeff Connelly -Jeff Hodges -Jeff Johnson -Jeff King -Jeff Lawson -Jeff Luszcz -Jeff Mears -Jeff Phillips -Jeff Pohlmeyer -Jeff Weber -Jeffrey Tolar -Jeffrey Walton -jeffrson on github -Jenny Heino -Jens Finkhaeuser -Jens Rantil -Jens Schleusener -Jeremie Rapin -Jeremy Falcon -Jeremy Friesner -Jeremy Huddleston -Jeremy Lainé -Jeremy Lin -Jeremy Maitin-Shepard -Jeremy Pearson -Jeremy Tan -Jeremy Thibault -Jeroen Koekkoek -Jeroen Ooms -Jerome Mao -Jerome Muffat-Meridol -Jerome Robert -Jerome Vouillon -Jerry Krinock -Jerry Wu -Jes Badwal -Jesper Jensen -Jesse Chisholm -Jesse Noller -Jesse Tan -jethrogb on github -jhoyla on github -Jie He -Jilayne Lovejoy -Jim Beveridge -Jim Drash -Jim Freeman -Jim Fuller -Jim Hollinger -Jim Meyering -Jimmy Gaussen -Jiri Dvorak -Jiri Hruska -Jiri Jaburek -Jishan Shaikh -Jiří Malák -jmdavitt on github -jnbr on github -Jocelyn Jaubert -Jochem Broekhoff -Joe Halpin -Joe Malicki -Joe Mason -Joel Chen -Joel Depooter -Joel Jakobsson -Joel Teichroeb -joey-l-us on github -Jofell Gallardo -Johan Anderson -Johan Lantz -Johan Nilsson -Johan van Selst -Johann150 on github -Johannes Bauer -Johannes Ernst -Johannes G. Kristinsson -Johannes Lesr -Johannes Schindelin -John A. Bristor -John Bradshaw -John Butterfield -John Coffey -John Crow -John David Anglin -John DeHelian -John Dennis -John Dunn -John E. Malmberg -John Gardiner Myers -John H. Ayad -John Hascall -John Janssen -John Joseph Bachir -John Kelly -John Kohl -John Lask -John Levon -John Lightsey -John Marino -John Marshall -John McGowan -John P. McCaskey -John Schroeder -John Simpson -John Starks -John Suprock -John V. Chow -John Wanghui -John Weismiller -John Wilkinson -John-Mark Bell -Johnny Luong -Jojojov on github -Jon DeVree -Jon Grubbs -Jon Johnson Jr -Jon Nelson -Jon Rumsey -Jon Sargeant -Jon Seymour -Jon Spencer -Jon Torrey -Jon Travis -Jon Turner -Jon Wilkes -Jonas Forsman -Jonas Minnberg -Jonas Schnelli -Jonas Vautherin -Jonatan Lander -Jonatan Vela -Jonathan Cardoso Machado -Jonathan Hseu -Jonathan Moerman -Jonathan Nieder -Jonathan Watt -Jonathan Wernberg -Jongki Suwandi -jonny112 on github -Joombalaya on github -Joonas Kuorilehto -Jordan Brown -Jose Alf -Jose Kahan -Josef Wolf -Joseph Chen -Josh Bialkowski -Josh Kapell -Josh Soref -joshhe on github -Joshua Kwan -Joshua Root -Joshua Swink -Josie Huddleston -Josip Medved -Josue Andrade Gomes -José Joaquín Atria -Jozef Kralik -Juan Barreto -Juan F. Codagnone -Juan Ignacio Hervás -Juan RP -Judson Bishop -Juergen Hoetzel -Juergen Wilke -Jukka Pihl -Julian Montes -Julian Noble -Julian Ospald -Julian Romero Nieto -Julian Taylor -Julian Z -Julien Chaffraix -Julien Nabet -Julien Royer -Jun Tseng -Jun-ichiro itojun Hagino -Jun-ya Kato -jungle-boogie on github -Junho Choi -Jurij Smakov -jurisuk on github -Juro Bystricky -Justin Clift -Justin Ehlert -Justin Fletcher -Justin Karneges -Justin Maggard -jveazey on github -jvvprasad78 on github -jzinn on github -János Fekete -Jérémy Rocher -Jörg Mueller-Tolk -Jörn Hartroth -Jürgen Gmach -K. R. Walker -ka7 on github -Kael1117 on github -Kai Engert -Kai Noda -Kai Pastor -Kai Sommerfeld -Kai-Uwe Rommel -Kalle Vahlman -Kamil Dudka -Kane York -Kang Lin -Kang-Jin Lee -Kantanat Wannapaka -Kari Pahula -Karl Chen -Karl Moerder -Karol Pietrzak -Kartik Mahajan -Kaspar Brand -Katie Wang -Katsuhiko YOSHIDA -Kazuho Oku -Kees Cook -Kees Dekker -Keith MacDonald -Keith McGuigan -Keith Mok -Ken Brown -Ken Hirsch -Ken Rastatter -Kenneth Davidson -Kenny To -Kent Boortz -Kerem Kat -Keshav Krity -Kevin Adler -Kevin Baughman -Kevin Burke -Kevin Fisk -Kevin Ji -Kevin Lussier -Kevin R. Bulgrien -Kevin Reed -Kevin Roth -Kevin Smith -Kevin Ushey -Kim Minjoong -Kim Rinnewitz -Kim Vandry -Kimmo Kinnunen -Kirill Efimov -Kirill Marchuk -Kjell Ericson -Kjetil Jacobsen -Klaus Crusius -Klaus Stein -Klevtsov Vadim -Kobi Gurkan -Koen Dergent -Koichi Shiraishi -kokke on github -Konstantin Isakov -Konstantin Kushnir -KotlinIsland on github -kotoriã®ã­ã“ -kouzhudong on github -Kovalkov Dmitrii -kreshano on github -Kris Kennaway -Krishnendu Majumdar -Krister Johansen -Kristian Gunstone -Kristian Köhntopp -Kristian Mide -Kristiyan Tsaklev -Kristoffer Gleditsch -Kunal Chandarana -Kunal Ekawde -Kurt Fankhauser -Kushal Das -Kwon-Young Choi -Kyle Abramowitz -Kyle Edwards -Kyle J. McKay -Kyle L. Huff -Kyle Sallee -Kyohei Kadota -Kyselgov E.N -l00p3r on Hackerone -Lachlan O'Dea -Ladar Levison -Lance Ware -Laramie Leavitt -Larry Campbell -Larry Fahnoe -Larry Lin -Larry Stefani -Larry Stone -Lars Buitinck -Lars Gustafsson -Lars J. Aas -Lars Johannesen -Lars Nilsson -Lars Torben Wilson -Laurent Bonnans -Laurent Dufresne -Laurent Rabret -Lauri Kasanen -Laurie Clark-Michalek -Lawrence Gripper -Lawrence Matthews -Lawrence Wagerfield -Leah Neukirchen -Leandro Coutinho -Legoff Vincent -Lehel Bernadt -Leif W -Leigh Purdie -Leith Bade -Len Krause -Len Marinaccio -Lenaic Lefever -Lenny Rachitsky -Leo Neat -Leon Breedt -Leon Winter -Leonardo Rosati -Leonardo Taccari -Leszek Kubik -Li Xinwei -Liam Healy -Liam Warfield -LigH-de on github -lijian996 on github -Lijo Antony -lilongyan-huawei on github -Linas Vepstas -Lindley French -Ling Thio -Linos Giannopoulos -Linus Lewandowski -Linus Nielsen Feltzing -Linus Nordberg -Lior Kaplan -Lisa Xu -Litter White -Liviu Chircu -Liza Alenchery -lllaffer on github -Lloyd Fournier -Lluís Batlle i Rossell -locpyl-tidnyd on github -Loganaden Velvindron -Loic Dachary -Loren Kirkby -Luan Cestari -Luca Altea -Luca Boccassi -Lucas Adamski -Lucas Clemente Vella -Lucas Holt -Lucas Pardue -Lucas Servén Marín -Lucas Severo -Lucien Zürcher -Ludek Finstrle -Ludovico Cavedon -Ludwig Nussel -Lukas Ruzicka -Lukasz Czekierda -lukaszgn on github -Luke Amery -Luke Call -Luke Dashjr -Luke Granger-Brown -luminixinc on github -Luo Jinghua -Luong Dinh Dung -Luz Paz -Luật Nguyá»…n -lwthiker on github -Lyman Epp -Lyndon Hill -M.R.T on github -Maciej Karpiuk -Maciej Puzio -Maciej W. Rozycki -madblobfish on github -Mahmoud Samir Fayed -Maks Naumov -Maksim Kuzevanov -Maksim Stsepanenka -Malik Idrees Hasan Khan -Mamoru Tasaka -Mamta Upadhyay -Mandy Wu -Manfred Schwarb -Manuel Massing -Manuj Bhatia -Marc Aldorasi -Marc Boucher -Marc Deslauriers -Marc Doughty -Marc Hesse -Marc Hörsken -Marc Kleine-Budde -Marc Renault -Marc Schlatter -Marc-Antoine Perennou -marc-groundctl on github -Marcel Hernandez -Marcel Raad -Marcel Roelofs -Marcelo Echeverria -Marcelo Juchem -Marcin Adamski -Marcin Gryszkalis -Marcin Konicki -Marco Deckel -Marco G. Salvagno -Marco Kamner -Marco Maggi -Marcos Diazr -Marcus Hoffmann -Marcus Klein -Marcus Sundberg -Marcus T -Marcus Webster -Marian Klymov -Mario Schroeder -Mark Brand -Mark Butler -Mark Davies -Mark Dodgson -Mark Hamilton -Mark Incley -Mark Karpeles -Mark Lentczner -Mark Nottingham -Mark Salisbury -Mark Snelling -Mark Swaanenburg -Mark Tully -Mark W. Eichin -Mark Wotton -Markus Duft -Markus Elfring -Markus Koetter -Markus Moeller -Markus Oberhumer -Markus Olsson -Markus Westerlind -Maros Priputen -Marquis de Muesli -Martijn Koster -Martin Ankerl -Martin BaÅ¡ti -Martin C. Martin -Martin Dorey -Martin Drasar -Martin Dreher -Martin Frodl -Martin Galvan -Martin Gartner -Martin Hager -Martin Halle -Martin Hedenfalk -Martin Howarth -Martin Jansen -Martin Kammerhofer -Martin Kepplinger -Martin Lemke -Martin Skinner -Martin Staael -Martin Storsjö -Martin V -Martin Vejnár -Marty Kuhrt -Maruko -Masaya Suzuki -masbug on github -Massimiliano Fantuzzi -Massimiliano Ziccardi -Massimo Callegari -MasterInQuestion on github -Mateusz Loskot -Mathias Axelsson -Mathias Gumz -Mathieu Legare -Matias N. Goldberg -Mats Lidell -Mats Lindestam -Matt Arsenault -Matt Ford -Matt Holt -Matt Kraai -Matt McClure -Matt Veenstra -Matt Witherspoon -Matt Wixson -Matteo Baccan -Matteo Bignotti -Matteo Bignottignotti -Matteo Rocco -Matthew Blain -Matthew Clarke -Matthew Hall -Matthew Kerwin -Matthew Thompson -Matthew Whitehead -Matthias Bolte -Matthias Gatto -Matthias Naegler -Mattias Fornander -Matus Uzak -Maurice Barnum -Mauro Iorio -Mauro Rappa -Max Dymond -Max Katsev -Max Kellermann -Max Khon -Max Mehl -Max Peal -Max Savenkov -Max Zettlmeißl -Maxim Ivanov -Maxim Perenesenko -Maxim Prohorov -Maxime Larocque -Maxime Legros -mbeifuss on github -mccormickt12 on github -Median Median Stride -mehatzri on github -Mehmet Bozkurt -Mekonikum -Melissa Mears -Melroy van den Berg -Mert YazıcıoÄŸlu -Mettgut Jamalla -Michael Afanasiev -Michael Anti -Michael Baentsch -Michael Benedict -Michael Brehm -Michael Brown -Michael Calmer -Michael Cronenworth -Michael Curtis -Michael Day -Michael Felt -Michael Forney -Michael Gmelin -Michael Goffioul -Michael Hordijk -Michael Jahn -Michael Jerris -Michael Kalinin -Michael Kaufmann -Michael Kilburn -Michael Kolechkin -Michael Kujawa -Michael König -Michael Lee -Michael Maltese -Michael Mealling -Michael Mueller -Michael Musset -Michael O'Farrell -Michael Olbrich -Michael Osipov -Michael Schmid -Michael Smith -Michael Stapelberg -Michael Steuer -Michael Stillwell -Michael Trebilcock -Michael Vittiglio -Michael Wallner -Michal Bonino -Michal Marek -Michal Rus -Michal Trybus -Michal ÄŒaplygin -MichaÅ‚ Antoniak -MichaÅ‚ Fita -MichaÅ‚ Górny -MichaÅ‚ Janiszewski -MichaÅ‚ Kowalczyk -MichaÅ‚ Piechowski -Michel Promonet -Michele Bini -Miguel Angel -Miguel Diaz -migueljcrum on github -Mihai Ionescu -Mikael Johansson -Mikael Sennerholm -Mikalai Ananenka -Mike Bytnar -Mike Crowe -Mike Dobbs -Mike Dowell -Mike Frysinger -Mike Gelfand -Mike Giancola -Mike Hasselberg -Mike Henshaw -Mike Hommey -Mike Mio -Mike Norton -Mike Power -Mike Protts -Mike Revi -Mike Tzou -Miklos Nemeth -MiloÅ¡ Ljumović -Mingliang Zhu -Mingtao Yang -Miroslav Franc -Miroslav Spousta -Mischa Salle -Mitz Wark -mkzero on github -modbw on github -Mohamed Lrhazi -Mohamed Osama -Mohammad AlSaleh -Mohammad Hasbini -Mohammed Naser -Mohun Biswas -momala454 on github -Momoka Yamamoto -moohoorama on github -Morten Minde Neergaard -Mostyn Bramley-Moore -Moti Avrahami -MrdUkk on github -MrSorcus on github -Muhammad Herdiansyah -Muhammed Yavuz Nuzumlalı -Murugan Balraj -Muz Dima -Myk Taylor -Nach M. S. -Nagai H -Nao Yonashiro -naost3rn on github -Nate Prewitt -Nathan Coulter -Nathan O'Sullivan -Nathanael Nerode -Nathaniel J. Smith -Nathaniel R. Lewis -Nathaniel Waisbrot -Naveen Chandran -Naveen Noel -Neal McBurnett -Neal Poole -nedres on github -neex on github -Nehal J Wani -neheb on github -Neil Bowers -Neil Dunbar -Neil Kolban -Neil Spring -neutric on github -nevv on HackerOne/curl -Niall O'Reilly -niallor on github -nian6324 on github -nianxuejie on github -Nic Roets -Nicholas Maniscalco -Nick Banks -Nick Coghlan -Nick Draffen -Nick Gimbrone -Nick Humfrey -Nick Miyake -Nick Zitzmann -Nicklas Avén -Nico Baggus -nico-abram on github -Nicolas Berloquin -Nicolas Croiset -Nicolas François -Nicolas Grekas -Nicolas Guillier -Nicolas Morey-Chaisemartin -Nicolas Sterchele -Niels Martignène -Niels van Tongeren -Nikita Schmidt -Nikitinskit Dmitriy -Niklas Angebrand -Niklas Hambüchen -Nikolai Kondrashov -Nikos Mavrogiannopoulos -Nikos Tsipinakis -nimaje on github -niner on github -Ning Dong -Nir Soffer -Niranjan Hasabnis -Nis Jorgensen -nk -Noam Moshe -NobodyXu on github -Nobuhiro Ban -Nodak Sodak -nopjmp on github -Norbert Frese -Norbert Kett -Norbert Novotny -nosajsnikta on github -NTMan on Github -Nuru on github -Octavio Schroeder -Ofer -Okhin Vasilij -Ola Mork -Olaf Flebbe -Olaf Hering -Olaf Stüben -Oleg Pudeyev -Oleguer Llopart -Olen Andoni -olesteban on github -Oli Kingshott -Oliver Gondža -Oliver Graute -Oliver Kuckertz -Oliver Roberts -Oliver Schindler -Oliver Urbann -Olivier Berger -Olivier Brunel -Omar Ramadan -omau on github -opensignature on github -Orange Tsai -Oren Souroujon -Oren Tirosh -Orgad Shaneh -Ori Avtalion -orycho on github -osabc on github -Oscar Koeroo -Oscar Norlander -Oskar Liljeblad -Oumph on github -ovidiu-benea on github -P R Schaffner -Palo Markovic -Paolo Mossino -Paolo Piacentini -Paras Sethia -parazyd on github -Pascal Gaudette -Pascal Terjan -Pasha Kuznetsov -Pasi Karkkainen -Pat Ray -patelvivekv1993 on github -patnyb on github -Patrice Guerin -Patricia Muscalu -Patrick Bihan-Faou -Patrick Dawson -Patrick McManus -Patrick Monnerat -Patrick Rapin -Patrick Schlangen -Patrick Scott -Patrick Smith -Patrick Watson -Patrik Thunstrom -Pau Garcia i Quiles -Paul B. Omta -Paul Donohue -Paul Dreik -Paul Groke -Paul Harrington -Paul Harris -Paul Hoffman -Paul Howarth -Paul Johnson -Paul Joyce -Paul Marks -Paul Marquis -Paul Moore -Paul Nolan -Paul Oliver -Paul Querna -Paul Saab -Paul Vixie -Paulo Roberto Tomasi -Pavel Cenek -Pavel Gushchin -Pavel Löbl -Pavel Orehov -Pavel Pavlov -Pavel Raiskup -Pavel Rochnyak -Pavel Volgarev -Pavol Markovic -Pawel A. Gajda -Pawel Kierski -PaweÅ‚ Kowalski -PaweÅ‚ Wegner -Pedro Larroy -Pedro Monreal -Pedro Neves -pendrek at hackerone -Peng Li -Peng-Yu Chen -Per Jensen -Per Lundberg -Per Malmberg -Per Nilsson -Pete Lomax -Peter Bray -Peter Forret -Peter Frühberger -Peter Gal -Peter Heuchert -Peter Hjalmarsson -Peter Korsgaard -Peter Körner -Peter Lamare -Peter Lamberg -Peter Laser -Peter O'Gorman -Peter Pentchev -Peter Piekarski -Peter Silva -Peter Simonyi -Peter Su -Peter Sumatra -Peter Sylvester -Peter Todd -Peter Varga -Peter Verhas -Peter Wang -Peter Wu -Peter Wullinger -Peteris Krumins -Petr Bahula -Petr Novak -Petr Pisar -Petr Voytsik -Phil Blundell -Phil Crump -Phil E. Taylor -Phil Karn -Phil Lisiecki -Phil Pellouchoud -Philip Craig -Philip Gladstone -Philip H -Philip Langdale -Philip Prindeville -Philipp Klaus Krause -Philipp Waehnert -Philippe Hameau -Philippe Marguinaud -Philippe Raoult -Philippe Vaucher -Pierre -Pierre Brico -Pierre Chapuis -Pierre Joye -Pierre Yager -Pierre Ynard -Pierre-Yves Bigourdan -Pierrick Charron -Piotr Dobrogost -Piotr Komborski -Po-Chuan Hsieh -Pontus Lundkvist -Pooyan McSporran -Poul T Lomholt -Pramod Sharma -Prash Dush -Praveen Pvs -Prithvi MK -privetryan on github -Priyanka Shah -PrzemysÅ‚aw Tomaszewski -pszemus on github -puckipedia on github -Puneet Pawaia -qiandu2006 on github -Quagmire -Quanah Gibson-Mount -Quentin Balland -Quinn Slack -r-a-sattarov on github -R. Dennis Steed -Radek Zajic -Radoslav Georgiev -Radu Simionescu -Rafa Muyo -Rafael Antonio -Rafael Sagula -Rafayel Mkrtchyan -Rafaël Carré -RafaÅ‚ Mikrut -Rainer Canavan -Rainer Jung -Rainer Koenig -Rainer Müller -Rajesh Naganathan -Rajkumar Mandal -Ralf S. Engelschall -Ralph Beckmann -Ralph Langendam -Ralph Mitchell -Ram Krushna Mishra -ramsay-jones on github -Ran Mozes -Randall S. Becker -Randolf J -Randy Armstrong -Randy McMurchy -Raphael Gozzo -Rasmus Melchior Jacobsen -Raul Onitza-Klugman -Ravi Pratap -Ray Dassen -Ray Pekowski -Ray Satiro -Razvan Cojocaru -rcombs on github -Red Hat Product Security -Reed Loden -Reinhard Max -Reinout van Schouwen -RekGRpth on github -Remco van Hooff -Remi Gacogne -Remo E -Renato Botelho -Renaud Allard -Renaud Chaillat -Renaud Duhaut -Renaud Guillard -Renaud Lehoux -Rene Bernhardt -Rene Rebe -Reuven Wachtfogel -Reza Arbab -Rianov Viacheslav -Ricardo Cadime -Ricardo Gomes -Ricardo M. Correia -Ricardo Martins -Rich Burridge -Rich FitzJohn -Rich Gray -Rich Mirch -Rich Rauenzahn -Rich Salz -Rich Turner -Richard Adams -Richard Alcock -Richard Archer -Richard Atterer -Richard Bowker -Richard Bramante -Richard Clayton -Richard Cooper -Richard Gorton -Richard Gray -Richard Hosking -Richard Hsu -Richard Marion -Richard Michael -Richard Moore -Richard Prescott -Richard Silverman -Richard van den Berg -Richard Whitehouse -Richy Kim -Rici Lake -Rick Deist -Rick Jones -Rick Lane -Rick Richardson -Rick Welykochy -Rickard Hallerbäck -Ricki Hirner -Ricky Leverence -Ricky-Tigg on github -Rider Linden -RiderALT on github -Rikard Falkeborn -rl1987 on github -Rob Boeckermann -Rob Cotrone -Rob Crittenden -Rob Davies -Rob Jones -Rob Sanders -Rob Stanzel -Rob Ward -Robert A. Monat -Robert B. Harris -Robert Brose -Robert Charles Muir -Robert D. Young -Robert Dunaj -Robert Foreman -Robert Iakobashvili -Robert Kolcun -Robert Linden -Robert Olson -Robert Prag -Robert Ronto -Robert Schumann -Robert Weaver -Robert Wruck -Robin A. Meade -Robin Cornelius -Robin Douine -Robin Johnson -Robin Kay -Robson Braga Araujo -Rod Widdowson -Rodger Combs -Rodney Simmons -Rodric Glaser -Rodrigo Silva -Roger Leigh -Roger Orr -Roger Young -Roland Blom -Roland Hieber -Roland Krikava -Roland Zimmermann -Rolf Eike Beer -Rolland Dudemaine -Romain Coltel -Romain Fliedel -Romain Geissler -romamik om github -Roman Koifman -Roman Mamedov -Romulo A. Ceccon -Ron Eldor -Ron Parker -Ron Zapp -Ronnie Mose -Rosen Penev -Rosimildo da Silva -Ross Burton -Roy Bellingan -Roy Li -Roy Shan -Rui LIU -Rui Pinheiro -Rune Kleveland -Ruslan Baratov -Ruslan Gazizov -Rutger Hofman -Ruurd Beerstra -RuurdBeerstra on github -Ryan Beck-Buysse -Ryan Braud -Ryan Chan -Ryan Mast -Ryan Nelson -Ryan Schmidt -Ryan Scott -Ryan Sleevi -Ryan Winograd -ryancaicse on github -Ryuichi KAWAMATA -rzrymiak on github -Rémy Léone -S. Moonesamy -Sai Ram Kunala -Salah-Eddin Shaban -Saleem Abdulrasool -Salvador Dávila -Salvatore Sorrentino -Sam Deane -Sam Hurst -Sam Roth -Sam Schanken -Samanta Navarro -Sampo Kellomaki -Samuel Díaz García -Samuel Henrique -Samuel Listopad -Samuel Marks -Samuel Surtees -Samuel Thibault -Samuel Tranchet -Sander Gates -Sandor Feldi -Sandro Jaeckel -Santhana Todatry -Santino Keupp -Saqib Ali -Sara Golemon -Saran Neti -Sascha Swiercy -Sascha Zengler -Satadru Pramanik -Saul good -Saurav Babu -sayrer on github -SBKarr on github -Scott Bailey -Scott Barrett -Scott Cantor -Scott Davis -Scott McCreary -Sean Boudreau -Sean Burford -Sean MacLennan -Sean McArthur -Sean Miller -Sean Molenaar -Sebastiaan van Erk -Sebastian Haglund -Sebastian Mundry -Sebastian Pohlschmidt -Sebastian Rasmussen -Sebastian Sterk -Senthil Raja Velu -Sergei Kuzmin -Sergei Nikulov -Sergey Markelov -Sergey Ogryzkov -Sergey Tatarincev -Sergii Kavunenko -Sergii Pylypenko -Sergio Ballestrero -Sergio Barresi -Sergio Borghese -Sergio Durigan Junior -sergio-nsk on github -Serj Kalichev -Seshubabu Pasam -Seth Mos -Sevan Janiyan -Sgharat on github -Sh Diao -Shachaf Ben-Kiki -Shailesh Kapse -Shankar Jadhavar -Shao Shuchao -Sharad Gupta -Shard -Sharon Brizinov -Shaun Jackman -Shawn Landden -Shawn Poulson -Shikha Sharma -Shine Fan -Shiraz Kanga -shithappens2016 on github -Shlomi Fish -Shmulik Regev -Siddhartha Prakash Jain -siddharthchhabrap on github -Sidney San Martín -Siegfried Gyuricsko -silveja1 on github -Simon Berger -Simon Chalifoux -Simon Dick -Simon H. -Simon Josefsson -Simon Legner -Simon Liu -Simon Warta -Siva Sivaraman -SLDiggie on github -smuellerDD on github -sn on hackerone -sofaboss on github -Somnath Kundu -Song Ma -Sonia Subramanian -Spacen Jasset -Spezifant on github -Spiridonoff A.V -Spoon Man -Spork Schivago -sspiri on github -sstruchtrup on github -Stadler Stephan -Stan Hu -Stan van de Burgt -Stanislav Ivochkin -Stanislav Zidek -Stathis Kapnidis -Stav Nir -steelman on github -Stefan Agner -Stefan Bühler -Stefan Eissing -Stefan Esser -Stefan Grether -Stefan Huber -Stefan Kanthak -Stefan Karpinski -Stefan Krause -Stefan Neis -Stefan Strogin -Stefan Teleman -Stefan Tomanek -Stefan Ulrich -Stefan Yohansson -Stefano Simonelli -Steinar H. Gunderson -steini2000 on github -Stepan Broz -Stepan Efremov -Stephan Bergmann -Stephan Lagerholm -Stephan Mühlstrasser -Stephan Szabo -Stephane Pellegrino -Stephen Boost -Stephen Brokenshire -Stephen Collyer -Stephen Kick -Stephen M. Coakley -Stephen More -Stephen Toub -Sterling Hughes -Steve Green -Steve H Truong -Steve Havelka -Steve Holme -Steve Lhomme -Steve Little -Steve Marx -Steve Oliphant -Steve Roskowski -Steve Walch -Steven Bazyl -Steven G. Johnson -Steven Gu -Steven M. Schweda -Steven Parkes -Steven Penny -Stewart Gebbie -Stian Soiland-Reyes -Stoned Elipot -stootill on github -Stuart Henderson -Sukanya Hanumanthu -SumatraPeter on github -Sune Ahlgren -Sunny Bean -Sunny Purushe -Sven Anders -Sven Blumenstein -Sven Neuhaus -Sven Wegener -Svyatoslav Mishyn -swalkaus at yahoo.com -sylgal on github -Sylvestre Ledru -Symeon Paraschoudis -Sébastien Willemijns -T. Bharath -T. Yamada -T200proX7 on github -Tadej Vengust -Tae Hyoung Ahn -Taiyu Len -Taneli Vähäkangas -Tanguy Fautre -Taras Kushnir -tarek112 on github -Tatsuhiro Tsujikawa -tawmoto on github -tbugfinder on github -Ted Lyngmo -Teemu Yli-Elsila -Temprimus -Terri Oda -Terry Wu -thanhchungbtc on github -The Infinnovation team -TheAssassin on github -TheKnarf on github -Theodore Dubois -therealhirudo on github -tholin on github -Thomas Bouzerar -Thomas Braun -Thomas Danielsson -Thomas Gamper -Thomas Glanzmann -Thomas Guillem -Thomas J. Moore -Thomas Klausner -Thomas L. Shinnick -Thomas Lopatic -Thomas M. DuBuisson -Thomas Petazzoni -Thomas Ruecker -Thomas Schwinge -Thomas Tonino -Thomas van Hesteren -Thomas Vegas -Thomas Weißschuh -Thorsten Schöning -Tiit Pikma -Till Maas -Tim Ansell -Tim Baker -Tim Bartley -Tim Chen -Tim Costello -Tim Harder -Tim Heckman -Tim Mcdonough -Tim Newsome -Tim Rühsen -Tim Sedlmeyer -Tim Sneddon -Tim Stack -Tim Starling -Tim Tassonis -Tim Verhoeven -Timo Lange -Timo Sirainen -Timotej Lazar -Timothe Litt -Timothy Gu -Timothy Polich -Timur Artikov -Tinus van den Berg -TJ Saunders -Tk Xiong -tlahn on github -tmkk on github -Tobias Blomberg -Tobias Gabriel -Tobias Hieta -Tobias Hintze -Tobias Lindgren -Tobias Markus -Tobias Nießen -Tobias Nygren -Tobias Nyholm -Tobias Rundström -Tobias Stoeckmann -Toby Peterson -Todd A Ouska -Todd Kaufmann -Todd Kulesza -Todd Short -Todd Vierling -Tom Benoist -Tom Donovan -Tom Eccles -Tom G. Christensen -Tom Grace -Tom Greenslade -Tom Lee -Tom Mattison -Tom Moers -Tom Mueller -Tom Regner -Tom Seddon -Tom Sparrow -Tom van der Woerdt -Tom Wright -Tom Zerucha -Tomas Berger -Tomas Hoger -Tomas Jakobsson -Tomas Mlcoch -Tomas Mraz -Tomas Pospisek -Tomas Szepe -Tomas Tomecek -Tomasz Kojm -Tomasz Lacki -Tommie Gannert -tommink[at]post.pl -Tommy Chiang -Tommy Odom -Tommy Petty -Tommy Tam -Ton Voon -Toni Moreno -Tony Kelman -tonystz on Github -Toon Verwaest -Tor Arntsen -Torben Dannhauer -Torsten Foertsch -Toshio Kuratomi -Toshiyuki Maezawa -tpaukrt on github -Traian Nicolescu -Travis Burtrum -Travis Obenhaus -Trivikram Kamat -Troels Walsted Hansen -Troy Engel -Tseng Jun -Tuomas Siipola -Tuomo Rinne -Tupone Alfredo -Tyler Hall -Török Edwin -Ulf Härnhammar -Ulf Samuelsson -Ulrich Doehner -Ulrich Telle -Ulrich Zadow -updatede on github -UrsusArctos on github -User Sg -ustcqidi on github -Vadim Grinshpun -Valentin David -Valentin Richter -Valentyn Korniienko -Valentín Gutiérrez -Valerii Zapodovnikov -vanillajonathan on github -Varnavas Papaioannou -Vasiliy Faronov -Vasily Lobaskin -Vasy Okhin -Venkat Akella -Venkataramana Mokkapati -Vicente Garcia -Victor Magierski -Victor Snezhko -Victor Vieux -Vijay Panghal -Vikram Saxena -Viktor Szakats -Vilhelm Prytz -Ville Skyttä -Vilmos Nebehaj -Vincas Razma -Vincent Bronner -Vincent Grande -Vincent Le Normand -Vincent Penquerc'h -Vincent Sanders -Vincent Torri -vitaha85 on github -Vitaly Varyvdin -vl409 on github -Vlad Grachov -Vlad Ureche -Vladimir Grishchenko -Vladimir Kotal -Vladimir Lazarenko -Vladimir Panteleev -Vladimir Varlamov -Vlastimil OvÄáÄík -vlubart on github -Vojtech Janota -Vojtech Minarik -VojtÄ›ch Král -Volker Schmid -Vsevolod Novikov -vshmuk on hackerone -vvb2060 on github -Vyron Tsingaras -W. Mark Kubacki -Waldek Kozba -Walter J. Mack -Ward Willats -Warren Menzer -Wayne Haigh -Wenchao Li -Wenxiang Qian -Werner Koch -Werner Stolz -Wes Hinsley -wesinator on github -Wesley Laxton -Wesley Miaw -Wez Furlong -Wham Bang -Wilfredo Sanchez -Will Dietz -Will Roberts -Willem Hoek -Willem Sparreboom -William A. Rowe Jr -William Ahern -William Desportes -wmsch on github -wncboy on github -Wojciech Zwiefka -Wolf Vollprecht -Wouter Van Rooy -Wu Yongzheng -Wu Zheng -Wyatt O'Day -Wyatt OʼDay -x2018 on github -Xavier Bouchoux -XhmikosR on github -XhstormR on github -Xiang Xiao -Xiangbin Li -Xiaoke Wang -Xiaoyin Liu -XmiliaH on github -xnynx on github -xwxbug on github -Yaakov Selkowitz -Yang Tse -Yaobin Wen -Yarram Sunil -Yasuharu Yamada -Yasuhiro Matsumoto -Yechiel Kalmenson -Yehezkel Horowitz -Yehoshua Hershberg -ygthien on github -Yi Huang -Yiming Jing -Yingwei Liu -yiyuaner on github -Ymir1711 on github -Yonggang Luo -Yongkang Huang -Younes El-karama -youngchopin on github -Yousuke Kimoto -Yu Xin -Yukihiro Kawada -Yun SangHo -Yuri Slobodyanyuk -Yuriy Sosov -Yusuke Nakamura -Yves Arrouye -Yves Lejeune -z2-2z on github -z2_ on hackerone -Zachary Seguin -Zdenek Pavlas -Zekun Ni -zelinchen on github -Zenju on github -Zero King -Zhang Xiuhua -Zhao Yisha -Zhaoyang Wu -Zhibiao Wu -Zhouyihai Ding -ZimCodes on github -zloi-user on github -Zmey Petroff -Zvi Har'El -zzq1015 on github -Ãdler Jonas Gross -Érico Nogueira -Érico Nogueira Rolim -İsmail Dönmez -Åukasz Domeradzki -Å tefan Kremeň -Ð‘Ð¾Ñ€Ð¸Ñ Ð’ÐµÑ€Ñ…Ð¾Ð²Ñкий -Коваленко Ðнатолий Викторович -Ðикита Дорохин -ウã•ã‚“ -ä¸ç¡®å®š -加藤éƒä¹‹ -梦终无痕 diff --git a/Engine/lib/curl/docs/TODO b/Engine/lib/curl/docs/TODO deleted file mode 100644 index 97afcec3a..000000000 --- a/Engine/lib/curl/docs/TODO +++ /dev/null @@ -1,1292 +0,0 @@ - _ _ ____ _ - ___| | | | _ \| | - / __| | | | |_) | | - | (__| |_| | _ <| |___ - \___|\___/|_| \_\_____| - - Things that could be nice to do in the future - - Things to do in project curl. Please tell us what you think, contribute and - send us patches that improve things. - - Be aware that these are things that we could do, or have once been considered - things we could do. If you want to work on any of these areas, please - consider bringing it up for discussions first on the mailing list so that we - all agree it is still a good idea for the project. - - All bugs documented in the KNOWN_BUGS document are subject for fixing. - - 1. libcurl - 1.1 TFO support on Windows - 1.2 Consult %APPDATA% also for .netrc - 1.3 struct lifreq - 1.4 alt-svc sharing - 1.5 get rid of PATH_MAX - 1.6 native IDN support on macOS - 1.7 Support HTTP/2 for HTTP(S) proxies - 1.8 CURLOPT_RESOLVE for any port number - 1.9 Cache negative name resolves - 1.10 auto-detect proxy - 1.11 minimize dependencies with dynamically loaded modules - 1.12 updated DNS server while running - 1.13 c-ares and CURLOPT_OPENSOCKETFUNCTION - 1.15 Monitor connections in the connection pool - 1.16 Try to URL encode given URL - 1.17 Add support for IRIs - 1.18 try next proxy if one does not work - 1.19 provide timing info for each redirect - 1.20 SRV and URI DNS records - 1.21 netrc caching and sharing - 1.22 CURLINFO_PAUSE_STATE - 1.23 Offer API to flush the connection pool - 1.25 Expose tried IP addresses that failed - 1.28 FD_CLOEXEC - 1.29 Upgrade to websockets - 1.30 config file parsing - 1.31 erase secrets from heap/stack after use - 1.32 add asynch getaddrinfo support - - 2. libcurl - multi interface - 2.1 More non-blocking - 2.2 Better support for same name resolves - 2.3 Non-blocking curl_multi_remove_handle() - 2.4 Split connect and authentication process - 2.5 Edge-triggered sockets should work - 2.6 multi upkeep - 2.7 Virtual external sockets - 2.8 dynamically decide to use socketpair - - 3. Documentation - 3.1 Improve documentation about fork safety - 3.2 Provide cmake config-file - - 4. FTP - 4.1 HOST - 4.2 Alter passive/active on failure and retry - 4.3 Earlier bad letter detection - 4.4 Support CURLOPT_PREQUOTE for dir listings too - 4.5 ASCII support - 4.6 GSSAPI via Windows SSPI - 4.7 STAT for LIST without data connection - - 5. HTTP - 5.2 Set custom client ip when using haproxy protocol - 5.3 Rearrange request header order - 5.4 Allow SAN names in HTTP/2 server push - 5.5 auth= in URLs - 5.6 alt-svc should fallback if alt-svc does not work - 5.7 Require HTTP version X or higher - - 6. TELNET - 6.1 ditch stdin - 6.2 ditch telnet-specific select - 6.3 feature negotiation debug data - 6.4 exit immediately upon connection if stdin is /dev/null - - 7. SMTP - 7.1 Passing NOTIFY option to CURLOPT_MAIL_RCPT - 7.2 Enhanced capability support - 7.3 Add CURLOPT_MAIL_CLIENT option - - 8. POP3 - 8.2 Enhanced capability support - - 9. IMAP - 9.1 Enhanced capability support - - 10. LDAP - 10.1 SASL based authentication mechanisms - 10.2 CURLOPT_SSL_CTX_FUNCTION for LDAPS - 10.3 Paged searches on LDAP server - - 11. SMB - 11.1 File listing support - 11.2 Honor file timestamps - 11.3 Use NTLMv2 - 11.4 Create remote directories - - 12. FILE - 12.1 Directory listing for FILE: - - 13. TLS - 13.1 TLS-PSK with OpenSSL - 13.2 Provide mutex locking API - 13.3 Defeat TLS fingerprinting - 13.4 Cache/share OpenSSL contexts - 13.5 Export session ids - 13.6 Provide callback for cert verification - 13.7 Less memory massaging with Schannel - 13.8 Support DANE - 13.9 TLS record padding - 13.10 Support Authority Information Access certificate extension (AIA) - 13.11 Support intermediate & root pinning for PINNEDPUBLICKEY - 13.13 Make sure we forbid TLS 1.3 post-handshake authentication - 13.14 Support the clienthello extension - - 14. GnuTLS - 14.2 check connection - - 15. Schannel - 15.1 Extend support for client certificate authentication - 15.2 Extend support for the --ciphers option - 15.4 Add option to allow abrupt server closure - - 16. SASL - 16.1 Other authentication mechanisms - 16.2 Add QOP support to GSSAPI authentication - - 17. SSH protocols - 17.1 Multiplexing - 17.2 Handle growing SFTP files - 17.3 Read keys from ~/.ssh/id_ecdsa, id_ed25519 - 17.4 Support CURLOPT_PREQUOTE - 17.5 SSH over HTTPS proxy with more backends - 17.6 SFTP with SCP:// - - 18. Command line tool - 18.1 sync - 18.2 glob posts - 18.4 --proxycommand - 18.5 UTF-8 filenames in Content-Disposition - 18.6 Option to make -Z merge lined based outputs on stdout - 18.8 Consider convenience options for JSON and XML? - 18.9 Choose the name of file in braces for complex URLs - 18.10 improve how curl works in a windows console window - 18.11 Windows: set attribute 'archive' for completed downloads - 18.12 keep running, read instructions from pipe/socket - 18.13 Ratelimit or wait between serial requests - 18.14 --dry-run - 18.15 --retry should resume - 18.16 send only part of --data - 18.17 consider file name from the redirected URL with -O ? - 18.18 retry on network is unreachable - 18.19 expand ~/ in config files - 18.20 host name sections in config files - 18.21 retry on the redirected-to URL - 18.23 Set the modification date on an uploaded file - 18.24 Use multiple parallel transfers for a single download - 18.25 Prevent terminal injection when writing to terminal - 18.26 Custom progress meter update interval - - 19. Build - 19.1 roffit - 19.2 Enable PIE and RELRO by default - 19.3 Do not use GNU libtool on OpenBSD - 19.4 Package curl for Windows in a signed installer - 19.5 make configure use --cache-file more and better - - 20. Test suite - 20.1 SSL tunnel - 20.2 nicer lacking perl message - 20.3 more protocols supported - 20.4 more platforms supported - 20.5 Add support for concurrent connections - 20.6 Use the RFC6265 test suite - 20.7 Support LD_PRELOAD on macOS - 20.8 Run web-platform-tests URL tests - - 21. MQTT - 21.1 Support rate-limiting - -============================================================================== - -1. libcurl - -1.1 TFO support on Windows - - libcurl supports the CURLOPT_TCP_FASTOPEN option since 7.49.0 for Linux and - Mac OS. Windows supports TCP Fast Open starting with Windows 10, version 1607 - and we should add support for it. - - TCP Fast Open is supported on several platforms but not on Windows. Work on - this was once started but never finished. - - See https://github.com/curl/curl/pull/3378 - -1.2 Consult %APPDATA% also for .netrc - - %APPDATA%\.netrc is not considered when running on Windows. should not it? - - See https://github.com/curl/curl/issues/4016 - -1.3 struct lifreq - - Use 'struct lifreq' and SIOCGLIFADDR instead of 'struct ifreq' and - SIOCGIFADDR on newer Solaris versions as they claim the latter is obsolete. - To support IPv6 interface addresses for network interfaces properly. - -1.4 alt-svc sharing - - The share interface could benefit from allowing the alt-svc cache to be - possible to share between easy handles. - - See https://github.com/curl/curl/issues/4476 - -1.5 get rid of PATH_MAX - - Having code use and rely on PATH_MAX is not nice: - https://insanecoding.blogspot.com/2007/11/pathmax-simply-isnt.html - - Currently the libssh2 SSH based code uses it, but to remove PATH_MAX from - there we need libssh2 to properly tell us when we pass in a too small buffer - and its current API (as of libssh2 1.2.7) does not. - -1.6 native IDN support on macOS - - On recent macOS versions, the getaddrinfo() function itself has built-in IDN - support. By setting the AI_CANONNAME flag, the function will return the - encoded name in the ai_canonname struct field in the returned information. - This could be used by curl on macOS when built without a separate IDN library - and an IDN host name is used in a URL. - - See initial work in https://github.com/curl/curl/pull/5371 - -1.7 Support HTTP/2 for HTTP(S) proxies - - Support for doing HTTP/2 to HTTP and HTTPS proxies is still missing. - - See https://github.com/curl/curl/issues/3570 - -1.8 CURLOPT_RESOLVE for any port number - - This option allows applications to set a replacement IP address for a given - host + port pair. Consider making support for providing a replacement address - for the host name on all port numbers. - - See https://github.com/curl/curl/issues/1264 - -1.9 Cache negative name resolves - - A name resolve that has failed is likely to fail when made again within a - short period of time. Currently we only cache positive responses. - -1.10 auto-detect proxy - - libcurl could be made to detect the system proxy setup automatically and use - that. On Windows, macOS and Linux desktops for example. - - The pull-request to use libproxy for this was deferred due to doubts on the - reliability of the dependency and how to use it: - https://github.com/curl/curl/pull/977 - - libdetectproxy is a (C++) library for detecting the proxy on Windows - https://github.com/paulharris/libdetectproxy - -1.11 minimize dependencies with dynamically loaded modules - - We can create a system with loadable modules/plug-ins, where these modules - would be the ones that link to 3rd party libs. That would allow us to avoid - having to load ALL dependencies since only the necessary ones for this - app/invoke/used protocols would be necessary to load. See - https://github.com/curl/curl/issues/349 - -1.12 updated DNS server while running - - If /etc/resolv.conf gets updated while a program using libcurl is running, it - is may cause name resolves to fail unless res_init() is called. We should - consider calling res_init() + retry once unconditionally on all name resolve - failures to mitigate against this. Firefox works like that. Note that Windows - does not have res_init() or an alternative. - - https://github.com/curl/curl/issues/2251 - -1.13 c-ares and CURLOPT_OPENSOCKETFUNCTION - - curl will create most sockets via the CURLOPT_OPENSOCKETFUNCTION callback and - close them with the CURLOPT_CLOSESOCKETFUNCTION callback. However, c-ares - does not use those functions and instead opens and closes the sockets - itself. This means that when curl passes the c-ares socket to the - CURLMOPT_SOCKETFUNCTION it is not owned by the application like other sockets. - - See https://github.com/curl/curl/issues/2734 - -1.15 Monitor connections in the connection pool - - libcurl's connection cache or pool holds a number of open connections for the - purpose of possible subsequent connection reuse. It may contain a few up to a - significant amount of connections. Currently, libcurl leaves all connections - as they are and first when a connection is iterated over for matching or - reuse purpose it is verified that it is still alive. - - Those connections may get closed by the server side for idleness or they may - get an HTTP/2 ping from the peer to verify that they are still alive. By - adding monitoring of the connections while in the pool, libcurl can detect - dead connections (and close them) better and earlier, and it can handle - HTTP/2 pings to keep such ones alive even when not actively doing transfers - on them. - -1.16 Try to URL encode given URL - - Given a URL that for example contains spaces, libcurl could have an option - that would try somewhat harder than it does now and convert spaces to %20 and - perhaps URL encoded byte values over 128 etc (basically do what the redirect - following code already does). - - https://github.com/curl/curl/issues/514 - -1.17 Add support for IRIs - - IRIs (RFC 3987) allow localized, non-ascii, names in the URL. To properly - support this, curl/libcurl would need to translate/encode the given input - from the input string encoding into percent encoded output "over the wire". - - To make that work smoothly for curl users even on Windows, curl would - probably need to be able to convert from several input encodings. - -1.18 try next proxy if one does not work - - Allow an application to specify a list of proxies to try, and failing to - connect to the first go on and try the next instead until the list is - exhausted. Browsers support this feature at least when they specify proxies - using PACs. - - https://github.com/curl/curl/issues/896 - -1.19 provide timing info for each redirect - - curl and libcurl provide timing information via a set of different - time-stamps (CURLINFO_*_TIME). When curl is following redirects, those - returned time value are the accumulated sums. An improvement could be to - offer separate timings for each redirect. - - https://github.com/curl/curl/issues/6743 - -1.20 SRV and URI DNS records - - Offer support for resolving SRV and URI DNS records for libcurl to know which - server to connect to for various protocols (including HTTP). - -1.21 netrc caching and sharing - - The netrc file is read and parsed each time a connection is setup, which - means that if a transfer needs multiple connections for authentication or - redirects, the file might be reread (and parsed) multiple times. This makes - it impossible to provide the file as a pipe. - -1.22 CURLINFO_PAUSE_STATE - - Return information about the transfer's current pause state, in both - directions. https://github.com/curl/curl/issues/2588 - -1.23 Offer API to flush the connection pool - - Sometimes applications want to flush all the existing connections kept alive. - An API could allow a forced flush or just a forced loop that would properly - close all connections that have been closed by the server already. - -1.25 Expose tried IP addresses that failed - - When libcurl fails to connect to a host, it could offer the application the - addresses that were used in the attempt. Source + dest IP, source + dest port - and protocol (UDP or TCP) for each failure. Possibly as a callback. Perhaps - also provide "reason". - - https://github.com/curl/curl/issues/2126 - -1.28 FD_CLOEXEC - - It sets the close-on-exec flag for the file descriptor, which causes the file - descriptor to be automatically (and atomically) closed when any of the - exec-family functions succeed. Should probably be set by default? - - https://github.com/curl/curl/issues/2252 - -1.29 Upgrade to websockets - - libcurl could offer a smoother path to get to a websocket connection. - See https://github.com/curl/curl/issues/3523 - - Michael Kaufmann suggestion here: - https://curl.se/video/curlup-2017/2017-03-19_05_Michael_Kaufmann_Websocket_support_for_curl.mp4 - -1.30 config file parsing - - Consider providing an API, possibly in a separate companion library, for - parsing a config file like curl's -K/--config option to allow applications to - get the same ability to read curl options from files. - - See https://github.com/curl/curl/issues/3698 - -1.31 erase secrets from heap/stack after use - - Introducing a concept and system to erase secrets from memory after use, it - could help mitigate and lessen the impact of (future) security problems etc. - However: most secrets are passed to libcurl as clear text from the - application and then clearing them within the library adds nothing... - - https://github.com/curl/curl/issues/7268 - -1.32 add asynch getaddrinfo support - - Use getaddrinfo_a() to provide an asynch name resolver backend to libcurl - that does not use threads and does not depend on c-ares. The getaddrinfo_a - function is (probably?) glibc specific but that is a widely used libc among - our users. - - https://github.com/curl/curl/pull/6746 - -2. libcurl - multi interface - -2.1 More non-blocking - - Make sure we do not ever loop because of non-blocking sockets returning - EWOULDBLOCK or similar. Blocking cases include: - - - Name resolves on non-windows unless c-ares or the threaded resolver is used. - - - The threaded resolver may block on cleanup: - https://github.com/curl/curl/issues/4852 - - - file:// transfers - - - TELNET transfers - - - GSSAPI authentication for FTP transfers - - - The "DONE" operation (post transfer protocol-specific actions) for the - protocols SFTP, SMTP, FTP. Fixing multi_done() for this is a worthy task. - - - curl_multi_remove_handle for any of the above. See section 2.3. - -2.2 Better support for same name resolves - - If a name resolve has been initiated for name NN and a second easy handle - wants to resolve that name as well, make it wait for the first resolve to end - up in the cache instead of doing a second separate resolve. This is - especially needed when adding many simultaneous handles using the same host - name when the DNS resolver can get flooded. - -2.3 Non-blocking curl_multi_remove_handle() - - The multi interface has a few API calls that assume a blocking behavior, like - add_handle() and remove_handle() which limits what we can do internally. The - multi API need to be moved even more into a single function that "drives" - everything in a non-blocking manner and signals when something is done. A - remove or add would then only ask for the action to get started and then - multi_perform() etc still be called until the add/remove is completed. - -2.4 Split connect and authentication process - - The multi interface treats the authentication process as part of the connect - phase. As such any failures during authentication will not trigger the relevant - QUIT or LOGOFF for protocols such as IMAP, POP3 and SMTP. - -2.5 Edge-triggered sockets should work - - The multi_socket API should work with edge-triggered socket events. One of - the internal actions that need to be improved for this to work perfectly is - the 'maxloops' handling in transfer.c:readwrite_data(). - -2.6 multi upkeep - - In libcurl 7.62.0 we introduced curl_easy_upkeep. It unfortunately only works - on easy handles. We should introduces a version of that for the multi handle, - and also consider doing "upkeep" automatically on connections in the - connection pool when the multi handle is in used. - - See https://github.com/curl/curl/issues/3199 - -2.7 Virtual external sockets - - libcurl performs operations on the given file descriptor that presumes it is - a socket and an application cannot replace them at the moment. Allowing an - application to fully replace those would allow a larger degree of freedom and - flexibility. - - See https://github.com/curl/curl/issues/5835 - -2.8 dynamically decide to use socketpair - - For users who do not use curl_multi_wait() or do not care for - curl_multi_wakeup(), we could introduce a way to make libcurl NOT - create a socketpair in the multi handle. - - See https://github.com/curl/curl/issues/4829 - -3. Documentation - -3.1 Improve documentation about fork safety - - See https://github.com/curl/curl/issues/6968 - -3.2 Provide cmake config-file - - A config-file package is a set of files provided by us to allow applications - to write cmake scripts to find and use libcurl easier. See - https://github.com/curl/curl/issues/885 - -4. FTP - -4.1 HOST - - HOST is a command for a client to tell which host name to use, to offer FTP - servers named-based virtual hosting: - - https://datatracker.ietf.org/doc/html/rfc7151 - -4.2 Alter passive/active on failure and retry - - When trying to connect passively to a server which only supports active - connections, libcurl returns CURLE_FTP_WEIRD_PASV_REPLY and closes the - connection. There could be a way to fallback to an active connection (and - vice versa). https://curl.se/bug/feature.cgi?id=1754793 - -4.3 Earlier bad letter detection - - Make the detection of (bad) %0d and %0a codes in FTP URL parts earlier in the - process to avoid doing a resolve and connect in vain. - -4.4 Support CURLOPT_PREQUOTE for dir listings too - - The lack of support is mostly an oversight and requires the FTP state machine - to get updated to get fixed. - - https://github.com/curl/curl/issues/8602 - -4.5 ASCII support - - FTP ASCII transfers do not follow RFC959. They do not convert the data - accordingly. - -4.6 GSSAPI via Windows SSPI - - In addition to currently supporting the SASL GSSAPI mechanism (Kerberos V5) - via third-party GSS-API libraries, such as Heimdal or MIT Kerberos, also add - support for GSSAPI authentication via Windows SSPI. - -4.7 STAT for LIST without data connection - - Some FTP servers allow STAT for listing directories instead of using LIST, - and the response is then sent over the control connection instead of as the - otherwise usedw data connection: https://www.nsftools.com/tips/RawFTP.htm#STAT - - This is not detailed in any FTP specification. - -5. HTTP - -5.2 Set custom client ip when using haproxy protocol - - This would allow testing servers with different client ip addresses (without - using x-forward-for header). - - https://github.com/curl/curl/issues/5125 - -5.3 Rearrange request header order - - Server implementors often make an effort to detect browser and to reject - clients it can detect to not match. One of the last details we cannot yet - control in libcurl's HTTP requests, which also can be exploited to detect - that libcurl is in fact used even when it tries to impersonate a browser, is - the order of the request headers. I propose that we introduce a new option in - which you give headers a value, and then when the HTTP request is built it - sorts the headers based on that number. We could then have internally created - headers use a default value so only headers that need to be moved have to be - specified. - -5.4 Allow SAN names in HTTP/2 server push - - curl only allows HTTP/2 push promise if the provided :authority header value - exactly matches the host name given in the URL. It could be extended to allow - any name that would match the Subject Alternative Names in the server's TLS - certificate. - - See https://github.com/curl/curl/pull/3581 - -5.5 auth= in URLs - - Add the ability to specify the preferred authentication mechanism to use by - using ;auth= in the login part of the URL. - - For example: - - http://test:pass;auth=NTLM@example.com would be equivalent to specifying - --user test:pass;auth=NTLM or --user test:pass --ntlm from the command line. - - Additionally this should be implemented for proxy base URLs as well. - -5.6 alt-svc should fallback if alt-svc does not work - - The alt-svc: header provides a set of alternative services for curl to use - instead of the original. If the first attempted one fails, it should try the - next etc and if all alternatives fail go back to the original. - - See https://github.com/curl/curl/issues/4908 - -5.7 Require HTTP version X or higher - - curl and libcurl provide options for trying higher HTTP versions (for example - HTTP/2) but then still allows the server to pick version 1.1. We could - consider adding a way to require a minimum version. - - See https://github.com/curl/curl/issues/7980 - -6. TELNET - -6.1 ditch stdin - - Reading input (to send to the remote server) on stdin is a crappy solution - for library purposes. We need to invent a good way for the application to be - able to provide the data to send. - -6.2 ditch telnet-specific select - - Move the telnet support's network select() loop go away and merge the code - into the main transfer loop. Until this is done, the multi interface will not - work for telnet. - -6.3 feature negotiation debug data - - Add telnet feature negotiation data to the debug callback as header data. - -6.4 exit immediately upon connection if stdin is /dev/null - - If it did, curl could be used to probe if there's an server there listening - on a specific port. That is, the following command would exit immediately - after the connection is established with exit code 0: - - curl -s --connect-timeout 2 telnet://example.com:80 NOTIFY=SUCCESS,FAILURE" ); - - https://github.com/curl/curl/issues/8232 - -7.2 Enhanced capability support - - Add the ability, for an application that uses libcurl, to obtain the list of - capabilities returned from the EHLO command. - -7.3 Add CURLOPT_MAIL_CLIENT option - - Rather than use the URL to specify the mail client string to present in the - HELO and EHLO commands, libcurl should support a new CURLOPT specifically for - specifying this data as the URL is non-standard and to be honest a bit of a - hack ;-) - - Please see the following thread for more information: - https://curl.se/mail/lib-2012-05/0178.html - - -8. POP3 - -8.2 Enhanced capability support - - Add the ability, for an application that uses libcurl, to obtain the list of - capabilities returned from the CAPA command. - -9. IMAP - -9.1 Enhanced capability support - - Add the ability, for an application that uses libcurl, to obtain the list of - capabilities returned from the CAPABILITY command. - -10. LDAP - -10.1 SASL based authentication mechanisms - - Currently the LDAP module only supports ldap_simple_bind_s() in order to bind - to an LDAP server. However, this function sends username and password details - using the simple authentication mechanism (as clear text). However, it should - be possible to use ldap_bind_s() instead specifying the security context - information ourselves. - -10.2 CURLOPT_SSL_CTX_FUNCTION for LDAPS - - CURLOPT_SSL_CTX_FUNCTION works perfectly for HTTPS and email protocols, but - it has no effect for LDAPS connections. - - https://github.com/curl/curl/issues/4108 - -10.3 Paged searches on LDAP server - - https://github.com/curl/curl/issues/4452 - -11. SMB - -11.1 File listing support - - Add support for listing the contents of a SMB share. The output should - probably be the same as/similar to FTP. - -11.2 Honor file timestamps - - The timestamp of the transferred file should reflect that of the original - file. - -11.3 Use NTLMv2 - - Currently the SMB authentication uses NTLMv1. - -11.4 Create remote directories - - Support for creating remote directories when uploading a file to a directory - that does not exist on the server, just like --ftp-create-dirs. - - -12. FILE - -12.1 Directory listing for FILE: - - Add support for listing the contents of a directory accessed with FILE. The - output should probably be the same as/similar to FTP. - - -13. TLS - -13.1 TLS-PSK with OpenSSL - - Transport Layer Security pre-shared key ciphersuites (TLS-PSK) is a set of - cryptographic protocols that provide secure communication based on pre-shared - keys (PSKs). These pre-shared keys are symmetric keys shared in advance among - the communicating parties. - - https://github.com/curl/curl/issues/5081 - -13.2 Provide mutex locking API - - Provide a libcurl API for setting mutex callbacks in the underlying SSL - library, so that the same application code can use mutex-locking - independently of OpenSSL or GnutTLS being used. - -13.3 Defeat TLS fingerprinting - - By changing the order of TLS extensions provided in the TLS handshake, it is - sometimes possible to circumvent TLS fingerprinting by servers. The TLS - extension order is of course not the only way to fingerprint a client. - - See https://github.com/curl/curl/issues/8119 - -13.4 Cache/share OpenSSL contexts - - "Look at SSL cafile - quick traces look to me like these are done on every - request as well, when they should only be necessary once per SSL context (or - once per handle)". The major improvement we can rather easily do is to make - sure we do not create and kill a new SSL "context" for every request, but - instead make one for every connection and re-use that SSL context in the same - style connections are re-used. It will make us use slightly more memory but - it will libcurl do less creations and deletions of SSL contexts. - - Technically, the "caching" is probably best implemented by getting added to - the share interface so that easy handles who want to and can reuse the - context specify that by sharing with the right properties set. - - https://github.com/curl/curl/issues/1110 - -13.5 Export session ids - - Add an interface to libcurl that enables "session IDs" to get - exported/imported. Cris Bailiff said: "OpenSSL has functions which can - serialise the current SSL state to a buffer of your choice, and recover/reset - the state from such a buffer at a later date - this is used by mod_ssl for - apache to implement and SSL session ID cache". - -13.6 Provide callback for cert verification - - OpenSSL supports a callback for customised verification of the peer - certificate, but this does not seem to be exposed in the libcurl APIs. Could - it be? There's so much that could be done if it were. - -13.7 Less memory massaging with Schannel - - The Schannel backend does a lot of custom memory management we would rather - avoid: the repeated alloc + free in sends and the custom memory + realloc - system for encrypted and decrypted data. That should be avoided and reduced - for 1) efficiency and 2) safety. - -13.8 Support DANE - - DNS-Based Authentication of Named Entities (DANE) is a way to provide SSL - keys and certs over DNS using DNSSEC as an alternative to the CA model. - https://www.rfc-editor.org/rfc/rfc6698.txt - - An initial patch was posted by Suresh Krishnaswamy on March 7th 2013 - (https://curl.se/mail/lib-2013-03/0075.html) but it was a too simple - approach. See Daniel's comments: - https://curl.se/mail/lib-2013-03/0103.html . libunbound may be the - correct library to base this development on. - - Björn Stenberg wrote a separate initial take on DANE that was never - completed. - -13.9 TLS record padding - - TLS (1.3) offers optional record padding and OpenSSL provides an API for it. - I could make sense for libcurl to offer this ability to applications to make - traffic patterns harder to figure out by network traffic observers. - - See https://github.com/curl/curl/issues/5398 - -13.10 Support Authority Information Access certificate extension (AIA) - - AIA can provide various things like CRLs but more importantly information - about intermediate CA certificates that can allow validation path to be - fulfilled when the HTTPS server does not itself provide them. - - Since AIA is about downloading certs on demand to complete a TLS handshake, - it is probably a bit tricky to get done right. - - See https://github.com/curl/curl/issues/2793 - -13.11 Support intermediate & root pinning for PINNEDPUBLICKEY - - CURLOPT_PINNEDPUBLICKEY does not consider the hashes of intermediate & root - certificates when comparing the pinned keys. Therefore it is not compatible - with "HTTP Public Key Pinning" as there also intermediate and root - certificates can be pinned. This is useful as it prevents webadmins from - "locking themselves out of their servers". - - Adding this feature would make curls pinning 100% compatible to HPKP and - allow more flexible pinning. - -13.13 Make sure we forbid TLS 1.3 post-handshake authentication - - RFC 8740 explains how using HTTP/2 must forbid the use of TLS 1.3 - post-handshake authentication. We should make sure to live up to that. - - See https://github.com/curl/curl/issues/5396 - -13.14 Support the clienthello extension - - Certain stupid networks and middle boxes have a problem with SSL handshake - packets that are within a certain size range because how that sets some bits - that previously (in older TLS version) were not set. The clienthello - extension adds padding to avoid that size range. - - https://datatracker.ietf.org/doc/html/rfc7685 - https://github.com/curl/curl/issues/2299 - -14. GnuTLS - -14.2 check connection - - Add a way to check if the connection seems to be alive, to correspond to the - SSL_peak() way we use with OpenSSL. - -15. Schannel - -15.1 Extend support for client certificate authentication - - The existing support for the -E/--cert and --key options could be - extended by supplying a custom certificate and key in PEM format, see: - - Getting a Certificate for Schannel - https://msdn.microsoft.com/en-us/library/windows/desktop/aa375447.aspx - -15.2 Extend support for the --ciphers option - - The existing support for the --ciphers option could be extended - by mapping the OpenSSL/GnuTLS cipher suites to the Schannel APIs, see - - Specifying Schannel Ciphers and Cipher Strengths - https://msdn.microsoft.com/en-us/library/windows/desktop/aa380161.aspx - -15.4 Add option to allow abrupt server closure - - libcurl w/schannel will error without a known termination point from the - server (such as length of transfer, or SSL "close notify" alert) to prevent - against a truncation attack. Really old servers may neglect to send any - termination point. An option could be added to ignore such abrupt closures. - - https://github.com/curl/curl/issues/4427 - -16. SASL - -16.1 Other authentication mechanisms - - Add support for other authentication mechanisms such as OLP, - GSS-SPNEGO and others. - -16.2 Add QOP support to GSSAPI authentication - - Currently the GSSAPI authentication only supports the default QOP of auth - (Authentication), whilst Kerberos V5 supports both auth-int (Authentication - with integrity protection) and auth-conf (Authentication with integrity and - privacy protection). - - -17. SSH protocols - -17.1 Multiplexing - - SSH is a perfectly fine multiplexed protocols which would allow libcurl to do - multiple parallel transfers from the same host using the same connection, - much in the same spirit as HTTP/2 does. libcurl however does not take - advantage of that ability but will instead always create a new connection for - new transfers even if an existing connection already exists to the host. - - To fix this, libcurl would have to detect an existing connection and "attach" - the new transfer to the existing one. - -17.2 Handle growing SFTP files - - The SFTP code in libcurl checks the file size *before* a transfer starts and - then proceeds to transfer exactly that amount of data. If the remote file - grows while the transfer is in progress libcurl will not notice and will not - adapt. The OpenSSH SFTP command line tool does and libcurl could also just - attempt to download more to see if there is more to get... - - https://github.com/curl/curl/issues/4344 - -17.3 Read keys from ~/.ssh/id_ecdsa, id_ed25519 - - The libssh2 backend in curl is limited to only reading keys from id_rsa and - id_dsa, which makes it fail connecting to servers that use more modern key - types. - - https://github.com/curl/curl/issues/8586 - -17.4 Support CURLOPT_PREQUOTE - - The two other QUOTE options are supported for SFTP, but this was left out for - unknown reasons. - -17.5 SSH over HTTPS proxy with more backends - - The SSH based protocols SFTP and SCP did not work over HTTPS proxy at - all until PR https://github.com/curl/curl/pull/6021 brought the - functionality with the libssh2 backend. Presumably, this support - can/could be added for the other backends as well. - -17.6 SFTP with SCP:// - - OpenSSH 9 switched their 'scp' tool to speak SFTP under the hood. Going - forward it might be worth having curl or libcurl attempt SFTP if SCP fails to - follow suite. - -18. Command line tool - -18.1 sync - - "curl --sync http://example.com/feed[1-100].rss" or - "curl --sync http://example.net/{index,calendar,history}.html" - - Downloads a range or set of URLs using the remote name, but only if the - remote file is newer than the local file. A Last-Modified HTTP date header - should also be used to set the mod date on the downloaded file. - -18.2 glob posts - - Globbing support for -d and -F, as in 'curl -d "name=foo[0-9]" URL'. - This is easily scripted though. - -18.4 --proxycommand - - Allow the user to make curl run a command and use its stdio to make requests - and not do any network connection by itself. Example: - - curl --proxycommand 'ssh pi@raspberrypi.local -W 10.1.1.75 80' \ - http://some/otherwise/unavailable/service.php - - See https://github.com/curl/curl/issues/4941 - -18.5 UTF-8 filenames in Content-Disposition - - RFC 6266 documents how UTF-8 names can be passed to a client in the - Content-Disposition header, and curl does not support this. - - https://github.com/curl/curl/issues/1888 - -18.6 Option to make -Z merge lined based outputs on stdout - - When a user requests multiple lined based files using -Z and sends them to - stdout, curl will not "merge" and send complete lines fine but may send - partial lines from several sources. - - https://github.com/curl/curl/issues/5175 - -18.8 Consider convenience options for JSON and XML? - - Could we add `--xml` or `--json` to add headers needed to call rest API: - - `--xml` adds -H 'Content-Type: application/xml' -H "Accept: application/xml" and - `--json` adds -H 'Content-Type: application/json' -H "Accept: application/json" - - Setting Content-Type when doing a GET or any other method without a body - would be a bit strange I think - so maybe only add CT for requests with body? - Maybe plain `--xml` and ` --json` are a bit too brief and generic. Maybe - `--http-json` etc? - - See https://github.com/curl/curl/issues/5203 - -18.9 Choose the name of file in braces for complex URLs - - When using braces to download a list of URLs and you use complicated names - in the list of alternatives, it could be handy to allow curl to use other - names when saving. - - Consider a way to offer that. Possibly like - {partURL1:name1,partURL2:name2,partURL3:name3} where the name following the - colon is the output name. - - See https://github.com/curl/curl/issues/221 - -18.10 improve how curl works in a windows console window - - If you pull the scrollbar when transferring with curl in a Windows console - window, the transfer is interrupted and can get disconnected. This can - probably be improved. See https://github.com/curl/curl/issues/322 - -18.11 Windows: set attribute 'archive' for completed downloads - - The archive bit (FILE_ATTRIBUTE_ARCHIVE, 0x20) separates files that shall be - backed up from those that are either not ready or have not changed. - - Downloads in progress are neither ready to be backed up, nor should they be - opened by a different process. Only after a download has been completed it's - sensible to include it in any integer snapshot or backup of the system. - - See https://github.com/curl/curl/issues/3354 - -18.12 keep running, read instructions from pipe/socket - - Provide an option that makes curl not exit after the last URL (or even work - without a given URL), and then make it read instructions passed on a pipe or - over a socket to make further instructions so that a second subsequent curl - invoke can talk to the still running instance and ask for transfers to get - done, and thus maintain its connection pool, DNS cache and more. - -18.13 Ratelimit or wait between serial requests - - Consider a command line option that can make curl do multiple serial requests - slow, potentially with a (random) wait between transfers. There's also a - proposed set of standard HTTP headers to let servers let the client adapt to - its rate limits: - https://www.ietf.org/id/draft-polli-ratelimit-headers-02.html - - See https://github.com/curl/curl/issues/5406 - -18.14 --dry-run - - A command line option that makes curl show exactly what it would do and send - if it would run for real. - - See https://github.com/curl/curl/issues/5426 - -18.15 --retry should resume - - When --retry is used and curl actually retries transfer, it should use the - already transferred data and do a resumed transfer for the rest (when - possible) so that it does not have to transfer the same data again that was - already transferred before the retry. - - See https://github.com/curl/curl/issues/1084 - -18.16 send only part of --data - - When the user only wants to send a small piece of the data provided with - --data or --data-binary, like when that data is a huge file, consider a way - to specify that curl should only send a piece of that. One suggested syntax - would be: "--data-binary @largefile.zip!1073741823-2147483647". - - See https://github.com/curl/curl/issues/1200 - -18.17 consider file name from the redirected URL with -O ? - - When a user gives a URL and uses -O, and curl follows a redirect to a new - URL, the file name is not extracted and used from the newly redirected-to URL - even if the new URL may have a much more sensible file name. - - This is clearly documented and helps for security since there's no surprise - to users which file name that might get overwritten. But maybe a new option - could allow for this or maybe -J should imply such a treatment as well as -J - already allows for the server to decide what file name to use so it already - provides the "may overwrite any file" risk. - - This is extra tricky if the original URL has no file name part at all since - then the current code path will error out with an error message, and we cannot - *know* already at that point if curl will be redirected to a URL that has a - file name... - - See https://github.com/curl/curl/issues/1241 - -18.18 retry on network is unreachable - - The --retry option retries transfers on "transient failures". We later added - --retry-connrefused to also retry for "connection refused" errors. - - Suggestions have been brought to also allow retry on "network is unreachable" - errors and while totally reasonable, maybe we should consider a way to make - this more configurable than to add a new option for every new error people - want to retry for? - - https://github.com/curl/curl/issues/1603 - -18.19 expand ~/ in config files - - For example .curlrc could benefit from being able to do this. - - See https://github.com/curl/curl/issues/2317 - -18.20 host name sections in config files - - config files would be more powerful if they could set different - configurations depending on used URLs, host name or possibly origin. Then a - default .curlrc could a specific user-agent only when doing requests against - a certain site. - -18.21 retry on the redirected-to URL - - When curl is told to --retry a failed transfer and follows redirects, it - might get an HTTP 429 response from the redirected-to URL and not the - original one, which then could make curl decide to rather retry the transfer - on that URL only instead of the original operation to the original URL. - - Perhaps extra emphasized if the original transfer is a large POST that - redirects to a separate GET, and that GET is what gets the 529 - - See https://github.com/curl/curl/issues/5462 - -18.23 Set the modification date on an uploaded file - - For SFTP and possibly FTP, curl could offer an option to set the - modification time for the uploaded file. - - See https://github.com/curl/curl/issues/5768 - -18.24 Use multiple parallel transfers for a single download - - To enhance transfer speed, downloading a single URL can be split up into - multiple separate range downloads that get combined into a single final - result. - - An ideal implementation would not use a specified number of parallel - transfers, but curl could: - - First start getting the full file as transfer A - - If after N seconds have passed and the transfer is expected to continue for - M seconds or more, add a new transfer (B) that asks for the second half of - A's content (and stop A at the middle). - - If splitting up the work improves the transfer rate, it could then be done - again. Then again, etc up to a limit. - - This way, if transfer B fails (because Range: is not supported) it will let - transfer A remain the single one. N and M could be set to some sensible - defaults. - - See https://github.com/curl/curl/issues/5774 - -18.25 Prevent terminal injection when writing to terminal - - curl could offer an option to make escape sequence either non-functional or - avoid cursor moves or similar to reduce the risk of a user getting tricked by - clever tricks. - - See https://github.com/curl/curl/issues/6150 - -18.26 Custom progress meter update interval - - Users who are for example doing large downloads in CI or remote setups might - want the occasional progress meter update to see that the transfer is - progressing and has not stuck, but they may not appreciate the - many-times-a-second frequency curl can end up doing it with now. - -19. Build - -19.1 roffit - - Consider extending 'roffit' to produce decent ASCII output, and use that - instead of (g)nroff when building src/tool_hugehelp.c - -19.2 Enable PIE and RELRO by default - - Especially when having programs that execute curl via the command line, PIE - renders the exploitation of memory corruption vulnerabilities a lot more - difficult. This can be attributed to the additional information leaks being - required to conduct a successful attack. RELRO, on the other hand, masks - different binary sections like the GOT as read-only and thus kills a handful - of techniques that come in handy when attackers are able to arbitrarily - overwrite memory. A few tests showed that enabling these features had close - to no impact, neither on the performance nor on the general functionality of - curl. - -19.3 Do not use GNU libtool on OpenBSD - When compiling curl on OpenBSD with "--enable-debug" it will give linking - errors when you use GNU libtool. This can be fixed by using the libtool - provided by OpenBSD itself. However for this the user always needs to invoke - make with "LIBTOOL=/usr/bin/libtool". It would be nice if the script could - have some magic to detect if this system is an OpenBSD host and then use the - OpenBSD libtool instead. - - See https://github.com/curl/curl/issues/5862 - -19.4 Package curl for Windows in a signed installer - - See https://github.com/curl/curl/issues/5424 - -19.5 make configure use --cache-file more and better - - The configure script can be improved to cache more values so that repeated - invokes run much faster. - - See https://github.com/curl/curl/issues/7753 - -20. Test suite - -20.1 SSL tunnel - - Make our own version of stunnel for simple port forwarding to enable HTTPS - and FTP-SSL tests without the stunnel dependency, and it could allow us to - provide test tools built with either OpenSSL or GnuTLS - -20.2 nicer lacking perl message - - If perl was not found by the configure script, do not attempt to run the tests - but explain something nice why it does not. - -20.3 more protocols supported - - Extend the test suite to include more protocols. The telnet could just do FTP - or http operations (for which we have test servers). - -20.4 more platforms supported - - Make the test suite work on more platforms. OpenBSD and Mac OS. Remove - fork()s and it should become even more portable. - -20.5 Add support for concurrent connections - - Tests 836, 882 and 938 were designed to verify that separate connections - are not used when using different login credentials in protocols that - should not re-use a connection under such circumstances. - - Unfortunately, ftpserver.pl does not appear to support multiple concurrent - connections. The read while() loop seems to loop until it receives a - disconnect from the client, where it then enters the waiting for connections - loop. When the client opens a second connection to the server, the first - connection has not been dropped (unless it has been forced - which we - should not do in these tests) and thus the wait for connections loop is never - entered to receive the second connection. - -20.6 Use the RFC6265 test suite - - A test suite made for HTTP cookies (RFC 6265) by Adam Barth is available at - https://github.com/abarth/http-state/tree/master/tests - - It'd be really awesome if someone would write a script/setup that would run - curl with that test suite and detect deviances. Ideally, that would even be - incorporated into our regular test suite. - -20.7 Support LD_PRELOAD on macOS - - LD_RELOAD does not work on macOS, but there are tests which require it to run - properly. Look into making the preload support in runtests.pl portable such - that it uses DYLD_INSERT_LIBRARIES on macOS. - -20.8 Run web-platform-tests URL tests - - Run web-platform-tests URL tests and compare results with browsers on wpt.fyi - - It would help us find issues to fix and help us document where our parser - differs from the WHATWG URL spec parsers. - - See https://github.com/curl/curl/issues/4477 - -21. MQTT - -21.1 Support rate-limiting - - The rate-limiting logic is done in the PERFORMING state in multi.c but MQTT - is not (yet) implemented to use that. diff --git a/Engine/lib/curl/docs/TheArtOfHttpScripting.md b/Engine/lib/curl/docs/TheArtOfHttpScripting.md deleted file mode 100644 index 78dbd7a8f..000000000 --- a/Engine/lib/curl/docs/TheArtOfHttpScripting.md +++ /dev/null @@ -1,700 +0,0 @@ -# The Art Of Scripting HTTP Requests Using Curl - -## Background - - This document assumes that you are familiar with HTML and general networking. - - The increasing amount of applications moving to the web has made "HTTP - Scripting" more frequently requested and wanted. To be able to automatically - extract information from the web, to fake users, to post or upload data to - web servers are all important tasks today. - - Curl is a command line tool for doing all sorts of URL manipulations and - transfers, but this particular document will focus on how to use it when - doing HTTP requests for fun and profit. I will assume that you know how to - invoke `curl --help` or `curl --manual` to get basic information about it. - - Curl is not written to do everything for you. It makes the requests, it gets - the data, it sends data and it retrieves the information. You probably need - to glue everything together using some kind of script language or repeated - manual invokes. - -## The HTTP Protocol - - HTTP is the protocol used to fetch data from web servers. It is a simple - protocol that is built upon TCP/IP. The protocol also allows information to - get sent to the server from the client using a few different methods, as will - be shown here. - - HTTP is plain ASCII text lines being sent by the client to a server to - request a particular action, and then the server replies a few text lines - before the actual requested content is sent to the client. - - The client, curl, sends an HTTP request. The request contains a method (like - GET, POST, HEAD etc), a number of request headers and sometimes a request - body. The HTTP server responds with a status line (indicating if things went - well), response headers and most often also a response body. The "body" part - is the plain data you requested, like the actual HTML or the image etc. - -## See the Protocol - - Using curl's option [`--verbose`](https://curl.se/docs/manpage.html#-v) - (`-v` as a short option) will display what kind of commands curl sends to the - server, as well as a few other informational texts. - - `--verbose` is the single most useful option when it comes to debug or even - understand the curl<->server interaction. - - Sometimes even `--verbose` is not enough. Then - [`--trace`](https://curl.se/docs/manpage.html#-trace) and - [`--trace-ascii`](https://curl.se/docs/manpage.html#--trace-ascii) - offer even more details as they show **everything** curl sends and - receives. Use it like this: - - curl --trace-ascii debugdump.txt http://www.example.com/ - -## See the Timing - - Many times you may wonder what exactly is taking all the time, or you just - want to know the amount of milliseconds between two points in a transfer. For - those, and other similar situations, the - [`--trace-time`](https://curl.se/docs/manpage.html#--trace-time) option - is what you need. It will prepend the time to each trace output line: - - curl --trace-ascii d.txt --trace-time http://example.com/ - -## See the Response - - By default curl sends the response to stdout. You need to redirect it - somewhere to avoid that, most often that is done with ` -o` or `-O`. - -# URL - -## Spec - - The Uniform Resource Locator format is how you specify the address of a - particular resource on the Internet. You know these, you have seen URLs like - https://curl.se or https://yourbank.com a million times. RFC 3986 is the - canonical spec. And yeah, the formal name is not URL, it is URI. - -## Host - - The host name is usually resolved using DNS or your /etc/hosts file to an IP - address and that is what curl will communicate with. Alternatively you specify - the IP address directly in the URL instead of a name. - - For development and other trying out situations, you can point to a different - IP address for a host name than what would otherwise be used, by using curl's - [`--resolve`](https://curl.se/docs/manpage.html#--resolve) option: - - curl --resolve www.example.org:80:127.0.0.1 http://www.example.org/ - -## Port number - - Each protocol curl supports operates on a default port number, be it over TCP - or in some cases UDP. Normally you do not have to take that into - consideration, but at times you run test servers on other ports or - similar. Then you can specify the port number in the URL with a colon and a - number immediately following the host name. Like when doing HTTP to port - 1234: - - curl http://www.example.org:1234/ - - The port number you specify in the URL is the number that the server uses to - offer its services. Sometimes you may use a proxy, and then you may - need to specify that proxy's port number separately from what curl needs to - connect to the server. Like when using an HTTP proxy on port 4321: - - curl --proxy http://proxy.example.org:4321 http://remote.example.org/ - -## User name and password - - Some services are setup to require HTTP authentication and then you need to - provide name and password which is then transferred to the remote site in - various ways depending on the exact authentication protocol used. - - You can opt to either insert the user and password in the URL or you can - provide them separately: - - curl http://user:password@example.org/ - - or - - curl -u user:password http://example.org/ - - You need to pay attention that this kind of HTTP authentication is not what - is usually done and requested by user-oriented websites these days. They tend - to use forms and cookies instead. - -## Path part - - The path part is just sent off to the server to request that it sends back - the associated response. The path is what is to the right side of the slash - that follows the host name and possibly port number. - -# Fetch a page - -## GET - - The simplest and most common request/operation made using HTTP is to GET a - URL. The URL could itself refer to a web page, an image or a file. The client - issues a GET request to the server and receives the document it asked for. - If you issue the command line - - curl https://curl.se - - you get a web page returned in your terminal window. The entire HTML document - that that URL holds. - - All HTTP replies contain a set of response headers that are normally hidden, - use curl's [`--include`](https://curl.se/docs/manpage.html#-i) (`-i`) - option to display them as well as the rest of the document. - -## HEAD - - You can ask the remote server for ONLY the headers by using the - [`--head`](https://curl.se/docs/manpage.html#-I) (`-I`) option which - will make curl issue a HEAD request. In some special cases servers deny the - HEAD method while others still work, which is a particular kind of annoyance. - - The HEAD method is defined and made so that the server returns the headers - exactly the way it would do for a GET, but without a body. It means that you - may see a `Content-Length:` in the response headers, but there must not be an - actual body in the HEAD response. - -## Multiple URLs in a single command line - - A single curl command line may involve one or many URLs. The most common case - is probably to just use one, but you can specify any amount of URLs. Yes - any. No limits. You will then get requests repeated over and over for all the - given URLs. - - Example, send two GETs: - - curl http://url1.example.com http://url2.example.com - - If you use [`--data`](https://curl.se/docs/manpage.html#-d) to POST to - the URL, using multiple URLs means that you send that same POST to all the - given URLs. - - Example, send two POSTs: - - curl --data name=curl http://url1.example.com http://url2.example.com - - -## Multiple HTTP methods in a single command line - - Sometimes you need to operate on several URLs in a single command line and do - different HTTP methods on each. For this, you will enjoy the - [`--next`](https://curl.se/docs/manpage.html#-:) option. It is basically - a separator that separates a bunch of options from the next. All the URLs - before `--next` will get the same method and will get all the POST data - merged into one. - - When curl reaches the `--next` on the command line, it will sort of reset the - method and the POST data and allow a new set. - - Perhaps this is best shown with a few examples. To send first a HEAD and then - a GET: - - curl -I http://example.com --next http://example.com - - To first send a POST and then a GET: - - curl -d score=10 http://example.com/post.cgi --next http://example.com/results.html - -# HTML forms - -## Forms explained - - Forms are the general way a website can present an HTML page with fields for - the user to enter data in, and then press some kind of 'OK' or 'Submit' - button to get that data sent to the server. The server then typically uses - the posted data to decide how to act. Like using the entered words to search - in a database, or to add the info in a bug tracking system, display the - entered address on a map or using the info as a login-prompt verifying that - the user is allowed to see what it is about to see. - - Of course there has to be some kind of program on the server end to receive - the data you send. You cannot just invent something out of the air. - -## GET - - A GET-form uses the method GET, as specified in HTML like: - -```html -
- - -
-``` - - In your favorite browser, this form will appear with a text box to fill in - and a press-button labeled "OK". If you fill in '1905' and press the OK - button, your browser will then create a new URL to get for you. The URL will - get `junk.cgi?birthyear=1905&press=OK` appended to the path part of the - previous URL. - - If the original form was seen on the page `www.example.com/when/birth.html`, - the second page you will get will become - `www.example.com/when/junk.cgi?birthyear=1905&press=OK`. - - Most search engines work this way. - - To make curl do the GET form post for you, just enter the expected created - URL: - - curl "http://www.example.com/when/junk.cgi?birthyear=1905&press=OK" - -## POST - - The GET method makes all input field names get displayed in the URL field of - your browser. That is generally a good thing when you want to be able to - bookmark that page with your given data, but it is an obvious disadvantage if - you entered secret information in one of the fields or if there are a large - amount of fields creating a long and unreadable URL. - - The HTTP protocol then offers the POST method. This way the client sends the - data separated from the URL and thus you will not see any of it in the URL - address field. - - The form would look similar to the previous one: - -```html -
- - -
-``` - - And to use curl to post this form with the same data filled in as before, we - could do it like: - - curl --data "birthyear=1905&press=%20OK%20" http://www.example.com/when/junk.cgi - - This kind of POST will use the Content-Type - `application/x-www-form-urlencoded` and is the most widely used POST kind. - - The data you send to the server MUST already be properly encoded, curl will - not do that for you. For example, if you want the data to contain a space, - you need to replace that space with `%20`, etc. Failing to comply with this will - most likely cause your data to be received wrongly and messed up. - - Recent curl versions can in fact url-encode POST data for you, like this: - - curl --data-urlencode "name=I am Daniel" http://www.example.com - - If you repeat `--data` several times on the command line, curl will - concatenate all the given data pieces - and put a `&` symbol between each - data segment. - -## File Upload POST - - Back in late 1995 they defined an additional way to post data over HTTP. It - is documented in the RFC 1867, why this method sometimes is referred to as - RFC1867-posting. - - This method is mainly designed to better support file uploads. A form that - allows a user to upload a file could be written like this in HTML: - -```html -
- - -
-``` - - This clearly shows that the Content-Type about to be sent is - `multipart/form-data`. - - To post to a form like this with curl, you enter a command line like: - - curl --form upload=@localfilename --form press=OK [URL] - -## Hidden Fields - - A common way for HTML based applications to pass state information between - pages is to add hidden fields to the forms. Hidden fields are already filled - in, they are not displayed to the user and they get passed along just as all - the other fields. - - A similar example form with one visible field, one hidden field and one - submit button could look like: - -```html -
- - - -
-``` - - To POST this with curl, you will not have to think about if the fields are - hidden or not. To curl they are all the same: - - curl --data "birthyear=1905&press=OK&person=daniel" [URL] - -## Figure Out What A POST Looks Like - - When you are about to fill in a form and send it to a server by using curl - instead of a browser, you are of course interested in sending a POST exactly - the way your browser does. - - An easy way to get to see this, is to save the HTML page with the form on - your local disk, modify the 'method' to a GET, and press the submit button - (you could also change the action URL if you want to). - - You will then clearly see the data get appended to the URL, separated with a - `?`-letter as GET forms are supposed to. - -# HTTP upload - -## PUT - - Perhaps the best way to upload data to an HTTP server is to use PUT. Then - again, this of course requires that someone put a program or script on the - server end that knows how to receive an HTTP PUT stream. - - Put a file to an HTTP server with curl: - - curl --upload-file uploadfile http://www.example.com/receive.cgi - -# HTTP Authentication - -## Basic Authentication - - HTTP Authentication is the ability to tell the server your username and - password so that it can verify that you are allowed to do the request you are - doing. The Basic authentication used in HTTP (which is the type curl uses by - default) is **plain text** based, which means it sends username and password - only slightly obfuscated, but still fully readable by anyone that sniffs on - the network between you and the remote server. - - To tell curl to use a user and password for authentication: - - curl --user name:password http://www.example.com - -## Other Authentication - - The site might require a different authentication method (check the headers - returned by the server), and then - [`--ntlm`](https://curl.se/docs/manpage.html#--ntlm), - [`--digest`](https://curl.se/docs/manpage.html#--digest), - [`--negotiate`](https://curl.se/docs/manpage.html#--negotiate) or even - [`--anyauth`](https://curl.se/docs/manpage.html#--anyauth) might be - options that suit you. - -## Proxy Authentication - - Sometimes your HTTP access is only available through the use of an HTTP - proxy. This seems to be especially common at various companies. An HTTP proxy - may require its own user and password to allow the client to get through to - the Internet. To specify those with curl, run something like: - - curl --proxy-user proxyuser:proxypassword curl.se - - If your proxy requires the authentication to be done using the NTLM method, - use [`--proxy-ntlm`](https://curl.se/docs/manpage.html#--proxy-ntlm), if - it requires Digest use - [`--proxy-digest`](https://curl.se/docs/manpage.html#--proxy-digest). - - If you use any one of these user+password options but leave out the password - part, curl will prompt for the password interactively. - -## Hiding credentials - - Do note that when a program is run, its parameters might be possible to see - when listing the running processes of the system. Thus, other users may be - able to watch your passwords if you pass them as plain command line - options. There are ways to circumvent this. - - It is worth noting that while this is how HTTP Authentication works, many - websites will not use this concept when they provide logins etc. See the Web - Login chapter further below for more details on that. - -# More HTTP Headers - -## Referer - - An HTTP request may include a 'referer' field (yes it is misspelled), which - can be used to tell from which URL the client got to this particular - resource. Some programs/scripts check the referer field of requests to verify - that this was not arriving from an external site or an unknown page. While - this is a stupid way to check something so easily forged, many scripts still - do it. Using curl, you can put anything you want in the referer-field and - thus more easily be able to fool the server into serving your request. - - Use curl to set the referer field with: - - curl --referer http://www.example.come http://www.example.com - -## User Agent - - Similar to the referer field, all HTTP requests may set the User-Agent - field. It names what user agent (client) that is being used. Many - applications use this information to decide how to display pages. Silly web - programmers try to make different pages for users of different browsers to - make them look the best possible for their particular browsers. They usually - also do different kinds of JavaScript, VBScript etc. - - At times, you will see that getting a page with curl will not return the same - page that you see when getting the page with your browser. Then you know it - is time to set the User Agent field to fool the server into thinking you are - one of those browsers. - - To make curl look like Internet Explorer 5 on a Windows 2000 box: - - curl --user-agent "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" [URL] - - Or why not look like you are using Netscape 4.73 on an old Linux box: - - curl --user-agent "Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)" [URL] - -## Redirects - -## Location header - - When a resource is requested from a server, the reply from the server may - include a hint about where the browser should go next to find this page, or a - new page keeping newly generated output. The header that tells the browser to - redirect is `Location:`. - - Curl does not follow `Location:` headers by default, but will simply display - such pages in the same manner it displays all HTTP replies. It does however - feature an option that will make it attempt to follow the `Location:` - pointers. - - To tell curl to follow a Location: - - curl --location http://www.example.com - - If you use curl to POST to a site that immediately redirects you to another - page, you can safely use - [`--location`](https://curl.se/docs/manpage.html#-L) (`-L`) and - `--data`/`--form` together. Curl will only use POST in the first request, and - then revert to GET in the following operations. - -## Other redirects - - Browsers typically support at least two other ways of redirects that curl - does not: first the html may contain a meta refresh tag that asks the browser - to load a specific URL after a set number of seconds, or it may use - JavaScript to do it. - -# Cookies - -## Cookie Basics - - The way the web browsers do "client side state control" is by using - cookies. Cookies are just names with associated contents. The cookies are - sent to the client by the server. The server tells the client for what path - and host name it wants the cookie sent back, and it also sends an expiration - date and a few more properties. - - When a client communicates with a server with a name and path as previously - specified in a received cookie, the client sends back the cookies and their - contents to the server, unless of course they are expired. - - Many applications and servers use this method to connect a series of requests - into a single logical session. To be able to use curl in such occasions, we - must be able to record and send back cookies the way the web application - expects them. The same way browsers deal with them. - -## Cookie options - - The simplest way to send a few cookies to the server when getting a page with - curl is to add them on the command line like: - - curl --cookie "name=Daniel" http://www.example.com - - Cookies are sent as common HTTP headers. This is practical as it allows curl - to record cookies simply by recording headers. Record cookies with curl by - using the [`--dump-header`](https://curl.se/docs/manpage.html#-D) (`-D`) - option like: - - curl --dump-header headers_and_cookies http://www.example.com - - (Take note that the - [`--cookie-jar`](https://curl.se/docs/manpage.html#-c) option described - below is a better way to store cookies.) - - Curl has a full blown cookie parsing engine built-in that comes in use if you - want to reconnect to a server and use cookies that were stored from a - previous connection (or hand-crafted manually to fool the server into - believing you had a previous connection). To use previously stored cookies, - you run curl like: - - curl --cookie stored_cookies_in_file http://www.example.com - - Curl's "cookie engine" gets enabled when you use the - [`--cookie`](https://curl.se/docs/manpage.html#-b) option. If you only - want curl to understand received cookies, use `--cookie` with a file that - does not exist. Example, if you want to let curl understand cookies from a - page and follow a location (and thus possibly send back cookies it received), - you can invoke it like: - - curl --cookie nada --location http://www.example.com - - Curl has the ability to read and write cookie files that use the same file - format that Netscape and Mozilla once used. It is a convenient way to share - cookies between scripts or invokes. The `--cookie` (`-b`) switch - automatically detects if a given file is such a cookie file and parses it, - and by using the `--cookie-jar` (`-c`) option you will make curl write a new - cookie file at the end of an operation: - - curl --cookie cookies.txt --cookie-jar newcookies.txt \ - http://www.example.com - -# HTTPS - -## HTTPS is HTTP secure - - There are a few ways to do secure HTTP transfers. By far the most common - protocol for doing this is what is generally known as HTTPS, HTTP over - SSL. SSL encrypts all the data that is sent and received over the network and - thus makes it harder for attackers to spy on sensitive information. - - SSL (or TLS as the latest version of the standard is called) offers a - truckload of advanced features to allow all those encryptions and key - infrastructure mechanisms encrypted HTTP requires. - - Curl supports encrypted fetches when built to use a TLS library and it can be - built to use one out of a fairly large set of libraries - `curl -V` will show - which one your curl was built to use (if any!). To get a page from an HTTPS - server, simply run curl like: - - curl https://secure.example.com - -## Certificates - - In the HTTPS world, you use certificates to validate that you are the one - you claim to be, as an addition to normal passwords. Curl supports client- - side certificates. All certificates are locked with a pass phrase, which you - need to enter before the certificate can be used by curl. The pass phrase - can be specified on the command line or if not, entered interactively when - curl queries for it. Use a certificate with curl on an HTTPS server like: - - curl --cert mycert.pem https://secure.example.com - - curl also tries to verify that the server is who it claims to be, by - verifying the server's certificate against a locally stored CA cert - bundle. Failing the verification will cause curl to deny the connection. You - must then use [`--insecure`](https://curl.se/docs/manpage.html#-k) - (`-k`) in case you want to tell curl to ignore that the server cannot be - verified. - - More about server certificate verification and ca cert bundles can be read in - the [SSLCERTS document](https://curl.se/docs/sslcerts.html). - - At times you may end up with your own CA cert store and then you can tell - curl to use that to verify the server's certificate: - - curl --cacert ca-bundle.pem https://example.com/ - -# Custom Request Elements - -## Modify method and headers - - Doing fancy stuff, you may need to add or change elements of a single curl - request. - - For example, you can change the POST request to a PROPFIND and send the data - as `Content-Type: text/xml` (instead of the default Content-Type) like this: - - curl --data "" --header "Content-Type: text/xml" \ - --request PROPFIND example.com - - You can delete a default header by providing one without content. Like you - can ruin the request by chopping off the Host: header: - - curl --header "Host:" http://www.example.com - - You can add headers the same way. Your server may want a `Destination:` - header, and you can add it: - - curl --header "Destination: http://nowhere" http://example.com - -## More on changed methods - - It should be noted that curl selects which methods to use on its own - depending on what action to ask for. `-d` will do POST, `-I` will do HEAD and - so on. If you use the - [`--request`](https://curl.se/docs/manpage.html#-X) / `-X` option you - can change the method keyword curl selects, but you will not modify curl's - behavior. This means that if you for example use -d "data" to do a POST, you - can modify the method to a `PROPFIND` with `-X` and curl will still think it - sends a POST . You can change the normal GET to a POST method by simply - adding `-X POST` in a command line like: - - curl -X POST http://example.org/ - - ... but curl will still think and act as if it sent a GET so it will not send - any request body etc. - -# Web Login - -## Some login tricks - - While not strictly just HTTP related, it still causes a lot of people - problems so here's the executive run-down of how the vast majority of all - login forms work and how to login to them using curl. - - It can also be noted that to do this properly in an automated fashion, you - will most certainly need to script things and do multiple curl invokes etc. - - First, servers mostly use cookies to track the logged-in status of the - client, so you will need to capture the cookies you receive in the - responses. Then, many sites also set a special cookie on the login page (to - make sure you got there through their login page) so you should make a habit - of first getting the login-form page to capture the cookies set there. - - Some web-based login systems feature various amounts of JavaScript, and - sometimes they use such code to set or modify cookie contents. Possibly they - do that to prevent programmed logins, like this manual describes how to... - Anyway, if reading the code is not enough to let you repeat the behavior - manually, capturing the HTTP requests done by your browsers and analyzing the - sent cookies is usually a working method to work out how to shortcut the - JavaScript need. - - In the actual `
` tag for the login, lots of sites fill-in - random/session or otherwise secretly generated hidden tags and you may need - to first capture the HTML code for the login form and extract all the hidden - fields to be able to do a proper login POST. Remember that the contents need - to be URL encoded when sent in a normal POST. - -# Debug - -## Some debug tricks - - Many times when you run curl on a site, you will notice that the site does not - seem to respond the same way to your curl requests as it does to your - browser's. - - Then you need to start making your curl requests more similar to your - browser's requests: - - - Use the `--trace-ascii` option to store fully detailed logs of the requests - for easier analyzing and better understanding - - - Make sure you check for and use cookies when needed (both reading with - `--cookie` and writing with `--cookie-jar`) - - - Set user-agent (with [`-A`](https://curl.se/docs/manpage.html#-A)) to - one like a recent popular browser does - - - Set referer (with [`-E`](https://curl.se/docs/manpage.html#-E)) like - it is set by the browser - - - If you use POST, make sure you send all the fields and in the same order as - the browser does it. - -## Check what the browsers do - - A good helper to make sure you do this right, is the web browsers' developers - tools that let you view all headers you send and receive (even when using - HTTPS). - - A more raw approach is to capture the HTTP traffic on the network with tools - such as Wireshark or tcpdump and check what headers that were sent and - received by the browser. (HTTPS forces you to use `SSLKEYLOGFILE` to do - that.) diff --git a/Engine/lib/curl/docs/URL-SYNTAX.md b/Engine/lib/curl/docs/URL-SYNTAX.md deleted file mode 100644 index 0b452f87f..000000000 --- a/Engine/lib/curl/docs/URL-SYNTAX.md +++ /dev/null @@ -1,388 +0,0 @@ -# URL syntax and their use in curl - -## Specifications - -The official "URL syntax" is primarily defined in these two different -specifications: - - - [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986) (although URL is called - "URI" in there) - - [The WHATWG URL Specification](https://url.spec.whatwg.org/) - -RFC 3986 is the earlier one, and curl has always tried to adhere to that one -(since it shipped in January 2005). - -The WHATWG URL spec was written later, is incompatible with the RFC 3986 and -changes over time. - -## Variations - -URL parsers as implemented in browsers, libraries and tools usually opt to -support one of the mentioned specifications. Bugs, differences in -interpretations and the moving nature of the WHATWG spec does however make it -unlikely that multiple parsers treat URLs the same way. - -## Security - -Due to the inherent differences between URL parser implementations, it is -considered a security risk to mix different implementations and assume the -same behavior! - -For example, if you use one parser to check if a URL uses a good host name or -the correct auth field, and then pass on that same URL to a *second* parser, -there will always be a risk it treats the same URL differently. There is no -right and wrong in URL land, only differences of opinions. - -libcurl offers a separate API to its URL parser for this reason, among others. - -Applications may at times find it convenient to allow users to specify URLs -for various purposes and that string would then end up fed to curl. Getting a -URL from an external untrusted party and using it with curl brings several -security concerns: - -1. If you have an application that runs as or in a server application, getting - an unfiltered URL can trick your application to access a local resource - instead of a remote resource. Protecting yourself against localhost accesses - is hard when accepting user provided URLs. - -2. Such custom URLs can access other ports than you planned as port numbers - are part of the regular URL format. The combination of a local host and a - custom port number can allow external users to play tricks with your local - services. - -3. Such a URL might use other schemes than you thought of or planned for. - -## "RFC3986 plus" - -curl recognizes a URL syntax that we call "RFC 3986 plus". It is grounded on -the well established RFC 3986 to make sure previously written command lines and -curl using scripts will remain working. - -curl's URL parser allows a few deviations from the spec in order to -inter-operate better with URLs that appear in the wild. - -### spaces - -A URL provided to curl cannot contain spaces. They need to be provided URL -encoded to be accepted in a URL by curl. - -An exception to this rule: `Location:` response headers that indicate to a -client where a resource has been redirected to, sometimes contain spaces. This -is a violation of RFC 3986 but is fine in the WHATWG spec. curl handles these -by re-encoding them to `%20`. - -### non-ASCII - -Byte values in a provided URL that are outside of the printable ASCII range -are percent-encoded by curl. - -### multiple slashes - -An absolute URL always starts with a "scheme" followed by a colon. For all the -schemes curl supports, the colon must be followed by two slashes according to -RFC 3986 but not according to the WHATWG spec - which allows one to infinity -amount. - -curl allows one, two or three slashes after the colon to still be considered a -valid URL. - -### "scheme-less" - -curl supports "URLs" that do not start with a scheme. This is not supported by -any of the specifications. This is a shortcut to entering URLs that was -supported by browsers early on and has been mimicked by curl. - -Based on what the host name starts with, curl will "guess" what protocol to -use: - - - `ftp.` means FTP - - `dict.` means DICT - - `ldap.` means LDAP - - `imap.` means IMAP - - `smtp.` means SMTP - - `pop3.` means POP3 - - all other means HTTP - -### globbing letters - -The curl command line tool supports "globbing" of URLs. It means that you can -create ranges and lists using `[N-M]` and `{one,two,three}` sequences. The -letters used for this (`[]{}`) are reserved in RFC 3986 and can therefore not -legitimately be part of such a URL. - -They are however not reserved or special in the WHATWG specification, so -globbing can mess up such URLs. Globbing can be turned off for such occasions -(using `--globoff`). - -# URL syntax details - -A URL may consist of the following components - many of them are optional: - - [scheme][divider][userinfo][hostname][port number][path][query][fragment] - -Each component is separated from the following component with a divider -character or string. - -For example, this could look like: - - http://user:password@www.example.com:80/index.hmtl?foo=bar#top - -## Scheme - -The scheme specifies the protocol to use. A curl build can support a few or -many different schemes. You can limit what schemes curl should accept. - -curl supports the following schemes on URLs specified to transfer. They are -matched case insensitively: - -`dict`, `file`, `ftp`, `ftps`, `gopher`, `gophers`, `http`, `https`, `imap`, -`imaps`, `ldap`, `ldaps`, `mqtt`, `pop3`, `pop3s`, `rtmp`, `rtmpe`, `rtmps`, -`rtmpt`, `rtmpte`, `rtmpts`, `rtsp`, `smb`, `smbs`, `smtp`, `smtps`, `telnet`, -`tftp` - -When the URL is specified to identify a proxy, curl recognizes the following -schemes: - -`http`, `https`, `socks4`, `socks4a`, `socks5`, `socks5h`, `socks` - -## Userinfo - -The userinfo field can be used to set user name and password for -authentication purposes in this transfer. The use of this field is discouraged -since it often means passing around the password in plain text and is thus a -security risk. - -URLs for IMAP, POP3 and SMTP also support *login options* as part of the -userinfo field. They are provided as a semicolon after the password and then -the options. - -## Hostname - -The hostname part of the URL contains the address of the server that you want -to connect to. This can be the fully qualified domain name of the server, the -local network name of the machine on your network or the IP address of the -server or machine represented by either an IPv4 or IPv6 address (within -brackets). For example: - - http://www.example.com/ - - http://hostname/ - - http://192.168.0.1/ - - http://[2001:1890:1112:1::20]/ - -### "localhost" - -Starting in curl 7.77.0, curl uses loopback IP addresses for the name -`localhost`: `127.0.0.1` and `::1`. It does not resolve the name using the -resolver functions. - -This is done to make sure the host accessed is truly the localhost - the local -machine. - -### IDNA - -If curl was built with International Domain Name (IDN) support, it can also -handle host names using non-ASCII characters. - -When built with libidn2, curl uses the IDNA 2008 standard. This is equivalent -to the WHATWG URL spec, but differs from certain browsers that use IDNA 2003 -Transitional Processing. The two standards have a huge overlap but differ -slightly, perhaps most famously in how they deal with the German "double s" -(`ß`). - -When winidn is used, curl uses IDNA 2003 Transitional Processing, like the rest -of Windows. - -## Port number - -If there's a colon after the hostname, that should be followed by the port -number to use. 1 - 65535. curl also supports a blank port number field - but -only if the URL starts with a scheme. - -If the port number is not specified in the URL, curl will used a default port -based on the provide scheme: - -DICT 2628, FTP 21, FTPS 990, GOPHER 70, GOPHERS 70, HTTP 80, HTTPS 443, -IMAP 132, IMAPS 993, LDAP 369, LDAPS 636, MQTT 1883, POP3 110, POP3S 995, -RTMP 1935, RTMPS 443, RTMPT 80, RTSP 554, SCP 22, SFTP 22, SMB 445, SMBS 445, -SMTP 25, SMTPS 465, TELNET 23, TFTP 69 - -# Scheme specific behaviors - -## FTP - -The path part of an FTP request specifies the file to retrieve and from which -directory. If the file part is omitted then libcurl downloads the directory -listing for the directory specified. If the directory is omitted then the -directory listing for the root / home directory will be returned. - -FTP servers typically put the user in its "home directory" after login, which -then differs between users. To explicitly specify the root directory of an FTP -server, start the path with double slash `//` or `/%2f` (2F is the hexadecimal -value of the ascii code for the slash). - -## FILE - -When a `FILE://` URL is accessed on Windows systems, it can be crafted in a -way so that Windows attempts to connect to a (remote) machine when curl wants -to read or write such a path. - -curl only allows the hostname part of a FILE URL to be one out of these three -alternatives: `localhost`, `127.0.0.1` or blank ("", zero characters). -Anything else will make curl fail to parse the URL. - -### Windows-specific FILE details - -curl accepts that the FILE URL's path starts with a "drive letter". That is a -single letter `a` to `z` followed by a colon or a pipe character (`|`). - -The Windows operating system itself will convert some file accesses to perform -network accesses over SMB/CIFS, through several different file path patterns. -This way, a `file://` URL passed to curl *might* be converted into a network -access inadvertently and unknowingly to curl. This is a Windows feature curl -cannot control or disable. - -## IMAP - -The path part of an IMAP request not only specifies the mailbox to list or -select, but can also be used to check the `UIDVALIDITY` of the mailbox, to -specify the `UID`, `SECTION` and `PARTIAL` octets of the message to fetch and -to specify what messages to search for. - -A top level folder list: - - imap://user:password@mail.example.com - -A folder list on the user's inbox: - - imap://user:password@mail.example.com/INBOX - -Select the user's inbox and fetch message with uid = 1: - - imap://user:password@mail.example.com/INBOX/;UID=1 - -Select the user's inbox and fetch the first message in the mail box: - - imap://user:password@mail.example.com/INBOX/;MAILINDEX=1 - -Select the user's inbox, check the `UIDVALIDITY` of the mailbox is 50 and -fetch message 2 if it is: - - imap://user:password@mail.example.com/INBOX;UIDVALIDITY=50/;UID=2 - -Select the user's inbox and fetch the text portion of message 3: - - imap://user:password@mail.example.com/INBOX/;UID=3/;SECTION=TEXT - -Select the user's inbox and fetch the first 1024 octets of message 4: - - imap://user:password@mail.example.com/INBOX/;UID=4/;PARTIAL=0.1024 - -Select the user's inbox and check for NEW messages: - - imap://user:password@mail.example.com/INBOX?NEW - -Select the user's inbox and search for messages containing "shadows" in the -subject line: - - imap://user:password@mail.example.com/INBOX?SUBJECT%20shadows - -Searching via the query part of the URL `?` is a search request for the results -to be returned as message sequence numbers (MAILINDEX). It is possible to make -a search request for results to be returned as unique ID numbers (UID) by using -a custom curl request via `-X`. UID numbers are unique per session (and -multiple sessions when UIDVALIDITY is the same). For example, if you are -searching for `"foo bar"` in header+body (TEXT) and you want the matching -MAILINDEX numbers returned then you could search via URL: - - imap://user:password@mail.example.com/INBOX?TEXT%20%22foo%20bar%22 - -.. but if you wanted matching UID numbers you would have to use a custom request: - - imap://user:password@mail.example.com/INBOX -X "UID SEARCH TEXT \"foo bar\"" - -For more information about IMAP commands please see RFC 9051. For more -information about the individual components of an IMAP URL please see RFC 5092. - -* Note old curl versions would FETCH by message sequence number when UID was -specified in the URL. That was a bug fixed in 7.62.0, which added MAILINDEX to -FETCH by mail sequence number. - -## LDAP - -The path part of a LDAP request can be used to specify the: Distinguished -Name, Attributes, Scope, Filter and Extension for a LDAP search. Each field is -separated by a question mark and when that field is not required an empty -string with the question mark separator should be included. - -Search for the DN as `My Organization`: - - ldap://ldap.example.com/o=My%20Organization - -the same search but will only return postalAddress attributes: - - ldap://ldap.example.com/o=My%20Organization?postalAddress - -Search for an empty DN and request information about the -`rootDomainNamingContext` attribute for an Active Directory server: - - ldap://ldap.example.com/?rootDomainNamingContext - -For more information about the individual components of a LDAP URL please -see [RFC 4516](https://datatracker.ietf.org/doc/html/rfc4516). - -## POP3 - -The path part of a POP3 request specifies the message ID to retrieve. If the -ID is not specified then a list of waiting messages is returned instead. - -## SCP - -The path part of an SCP URL specifies the path and file to retrieve or -upload. The file is taken as an absolute path from the root directory on the -server. - -To specify a path relative to the user's home directory on the server, prepend -`~/` to the path portion. - -## SFTP - -The path part of an SFTP URL specifies the file to retrieve or upload. If the -path ends with a slash (`/`) then a directory listing is returned instead of a -file. If the path is omitted entirely then the directory listing for the root -/ home directory will be returned. - -## SMB -The path part of a SMB request specifies the file to retrieve and from what -share and directory or the share to upload to and as such, may not be omitted. -If the user name is embedded in the URL then it must contain the domain name -and as such, the backslash must be URL encoded as %2f. - -curl supports SMB version 1 (only) - -## SMTP - -The path part of a SMTP request specifies the host name to present during -communication with the mail server. If the path is omitted, then libcurl will -attempt to resolve the local computer's host name. However, this may not -return the fully qualified domain name that is required by some mail servers -and specifying this path allows you to set an alternative name, such as your -machine's fully qualified domain name, which you might have obtained from an -external function such as gethostname or getaddrinfo. - -The default smtp port is 25. Some servers use port 587 as an alternative. - -## RTMP - -There's no official URL spec for RTMP so libcurl uses the URL syntax supported -by the underlying librtmp library. It has a syntax where it wants a -traditional URL, followed by a space and a series of space-separated -`name=value` pairs. - -While space is not typically a "legal" letter, libcurl accepts them. When a -user wants to pass in a `#` (hash) character it will be treated as a fragment -and get cut off by libcurl if provided literally. You will instead have to -escape it by providing it as backslash and its ASCII value in hexadecimal: -`\23`. diff --git a/Engine/lib/curl/docs/VERSIONS.md b/Engine/lib/curl/docs/VERSIONS.md deleted file mode 100644 index de0b0d4f8..000000000 --- a/Engine/lib/curl/docs/VERSIONS.md +++ /dev/null @@ -1,57 +0,0 @@ -Version Numbers and Releases -============================ - - Curl is not only curl. Curl is also libcurl. they are actually individually - versioned, but they usually follow each other closely. - - The version numbering is always built up using the same system: - - X.Y.Z - - - X is main version number - - Y is release number - - Z is patch number - -## Bumping numbers - - One of these numbers will get bumped in each new release. The numbers to the - right of a bumped number will be reset to zero. - - The main version number will get bumped when *really* big, world colliding - changes are made. The release number is bumped when changes are performed or - things/features are added. The patch number is bumped when the changes are - mere bugfixes. - - It means that after release 1.2.3, we can release 2.0.0 if something really - big has been made, 1.3.0 if not that big changes were made or 1.2.4 if only - bugs were fixed. - - Bumping, as in increasing the number with 1, is unconditionally only - affecting one of the numbers (except the ones to the right of it, that may be - set to zero). 1 becomes 2, 3 becomes 4, 9 becomes 10, 88 becomes 89 and 99 - becomes 100. So, after 1.2.9 comes 1.2.10. After 3.99.3, 3.100.0 might come. - - All original curl source release archives are named according to the libcurl - version (not according to the curl client version that, as said before, might - differ). - - As a service to any application that might want to support new libcurl - features while still being able to build with older versions, all releases - have the libcurl version stored in the curl/curlver.h file using a static - numbering scheme that can be used for comparison. The version number is - defined as: - -```c -#define LIBCURL_VERSION_NUM 0xXXYYZZ -``` - - Where XX, YY and ZZ are the main version, release and patch numbers in - hexadecimal. All three number fields are always represented using two digits - (eight bits each). 1.2 would appear as "0x010200" while version 9.11.7 - appears as "0x090b07". - - This 6-digit hexadecimal number is always a greater number in a more recent - release. It makes comparisons with greater than and less than work. - - This number is also available as three separate defines: - `LIBCURL_VERSION_MAJOR`, `LIBCURL_VERSION_MINOR` and `LIBCURL_VERSION_PATCH`. diff --git a/Engine/lib/curl/docs/cmdline-opts/CMakeLists.txt b/Engine/lib/curl/docs/cmdline-opts/CMakeLists.txt deleted file mode 100644 index fe7870f5d..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/CMakeLists.txt +++ /dev/null @@ -1,35 +0,0 @@ -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### -set(MANPAGE "${CURL_BINARY_DIR}/docs/curl.1") - -# Load DPAGES and OTHERPAGES from shared file -transform_makefile_inc("Makefile.inc" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake") -include("${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake") - -add_custom_command(OUTPUT "${MANPAGE}" - COMMAND "${PERL_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/gen.pl" mainpage "${CMAKE_CURRENT_SOURCE_DIR}" > "${MANPAGE}" - DEPENDS ${DPAGES} ${OTHERPAGES} - VERBATIM -) -add_custom_target(generate-curl.1 DEPENDS "${MANPAGE}") diff --git a/Engine/lib/curl/docs/cmdline-opts/MANPAGE.md b/Engine/lib/curl/docs/cmdline-opts/MANPAGE.md deleted file mode 100644 index e35c826cd..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/MANPAGE.md +++ /dev/null @@ -1,70 +0,0 @@ - - -# curl man page generator - -This is the curl man page generator. It generates a single nroff man page -output from the set of sources files in this directory. - -There is one source file for each supported command line option. The output -gets `page-header` prepended and `page-footer` appended. The format is -described below. - -## Option files - -Each command line option is described in a file named `.d`, where -option name is written without any prefixing dashes. Like the file name for -the -v, --verbose option is named `verbose.d`. - -Each file has a set of meta-data and a body of text. - -### Meta-data - - Short: (single letter, without dash) - Long: (long form name, without dashes) - Arg: (the argument the option takes) - Magic: (description of "magic" options) - Tags: (space separated list) - Protocols: (space separated list for which protocols this option works) - Added: (version number in which this was added) - Mutexed: (space separated list of options this overrides, no dashes) - Requires: (space separated list of features this requires, no dashes) - See-also: (space separated list of related options, no dashes) - Help: (short text for the --help output for this option) - Example: (example command line, without "curl" and can use `$URL`) - c: (copyright line) - SPDX-License-Identifier: curl - --- (end of meta-data) - -### Body - -The body of the description. Only refer to options with their long form option -version, like `--verbose`. The output generator will replace such with the -correct markup that shows both short and long version. - -Text written within `*asterisks*` will get shown using italics. Text within -two `**asterisks**` will get shown using bold. - -Text that is prefixed with a space will be treated like an "example" and will -be output in monospace. - -## Header and footer - -`page-header` is the file that will be output before the generated options -output for the master man page. - -`page-footer` is appended after all the individual options. - -## Generate - -`./gen.pl mainpage` - -This command outputs a single huge nroff file, meant to become `curl.1`. The -full curl man page. - -`./gen.pl listhelp` - -Generates a full `curl --help` output for all known command line options. diff --git a/Engine/lib/curl/docs/cmdline-opts/Makefile.am b/Engine/lib/curl/docs/cmdline-opts/Makefile.am deleted file mode 100644 index df38e192a..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/Makefile.am +++ /dev/null @@ -1,37 +0,0 @@ -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### - -AUTOMAKE_OPTIONS = foreign no-dependencies - -MANPAGE = $(top_builddir)/docs/curl.1 - -include Makefile.inc - -EXTRA_DIST = $(DPAGES) MANPAGE.md gen.pl $(OTHERPAGES) CMakeLists.txt - -all: $(MANPAGE) - -$(MANPAGE): $(DPAGES) $(OTHERPAGES) Makefile.inc - @echo "generate $(MANPAGE)" - @(cd $(srcdir) && @PERL@ ./gen.pl mainpage $(DPAGES)) > $(MANPAGE) diff --git a/Engine/lib/curl/docs/cmdline-opts/Makefile.in b/Engine/lib/curl/docs/cmdline-opts/Makefile.in deleted file mode 100644 index 4c8ece300..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/Makefile.in +++ /dev/null @@ -1,870 +0,0 @@ -# Makefile.in generated by automake 1.16.5 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994-2021 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@ - -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### - -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### -# Shared between Makefile.am and CMakeLists.txt -VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = docs/cmdline-opts -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/curl-amissl.m4 \ - $(top_srcdir)/m4/curl-bearssl.m4 \ - $(top_srcdir)/m4/curl-compilers.m4 \ - $(top_srcdir)/m4/curl-confopts.m4 \ - $(top_srcdir)/m4/curl-functions.m4 \ - $(top_srcdir)/m4/curl-gnutls.m4 \ - $(top_srcdir)/m4/curl-mbedtls.m4 $(top_srcdir)/m4/curl-nss.m4 \ - $(top_srcdir)/m4/curl-openssl.m4 \ - $(top_srcdir)/m4/curl-override.m4 \ - $(top_srcdir)/m4/curl-reentrant.m4 \ - $(top_srcdir)/m4/curl-rustls.m4 \ - $(top_srcdir)/m4/curl-schannel.m4 \ - $(top_srcdir)/m4/curl-sectransp.m4 \ - $(top_srcdir)/m4/curl-sysconfig.m4 \ - $(top_srcdir)/m4/curl-wolfssl.m4 $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/m4/xc-am-iface.m4 \ - $(top_srcdir)/m4/xc-cc-check.m4 \ - $(top_srcdir)/m4/xc-lt-iface.m4 \ - $(top_srcdir)/m4/xc-translit.m4 \ - $(top_srcdir)/m4/xc-val-flgs.m4 \ - $(top_srcdir)/m4/zz40-xc-ovr.m4 \ - $(top_srcdir)/m4/zz50-xc-ovr.m4 \ - $(top_srcdir)/m4/zz60-xc-ovr.m4 $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/lib/curl_config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -depcomp = -am__maybe_remake_depfiles = -SOURCES = -DIST_SOURCES = -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.inc -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AR_FLAGS = @AR_FLAGS@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -BLANK_AT_MAKETIME = @BLANK_AT_MAKETIME@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CFLAG_CURL_SYMBOL_HIDING = @CFLAG_CURL_SYMBOL_HIDING@ -CONFIGURE_OPTIONS = @CONFIGURE_OPTIONS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CPPFLAG_CURL_STATICLIB = @CPPFLAG_CURL_STATICLIB@ -CSCOPE = @CSCOPE@ -CTAGS = @CTAGS@ -CURLVERSION = @CURLVERSION@ -CURL_CA_BUNDLE = @CURL_CA_BUNDLE@ -CURL_CFLAG_EXTRAS = @CURL_CFLAG_EXTRAS@ -CURL_DISABLE_DICT = @CURL_DISABLE_DICT@ -CURL_DISABLE_FILE = @CURL_DISABLE_FILE@ -CURL_DISABLE_FTP = @CURL_DISABLE_FTP@ -CURL_DISABLE_GOPHER = @CURL_DISABLE_GOPHER@ -CURL_DISABLE_HTTP = @CURL_DISABLE_HTTP@ -CURL_DISABLE_IMAP = @CURL_DISABLE_IMAP@ -CURL_DISABLE_LDAP = @CURL_DISABLE_LDAP@ -CURL_DISABLE_LDAPS = @CURL_DISABLE_LDAPS@ -CURL_DISABLE_MQTT = @CURL_DISABLE_MQTT@ -CURL_DISABLE_POP3 = @CURL_DISABLE_POP3@ -CURL_DISABLE_PROXY = @CURL_DISABLE_PROXY@ -CURL_DISABLE_RTSP = @CURL_DISABLE_RTSP@ -CURL_DISABLE_SMB = @CURL_DISABLE_SMB@ -CURL_DISABLE_SMTP = @CURL_DISABLE_SMTP@ -CURL_DISABLE_TELNET = @CURL_DISABLE_TELNET@ -CURL_DISABLE_TFTP = @CURL_DISABLE_TFTP@ -CURL_LT_SHLIB_VERSIONED_FLAVOUR = @CURL_LT_SHLIB_VERSIONED_FLAVOUR@ -CURL_NETWORK_AND_TIME_LIBS = @CURL_NETWORK_AND_TIME_LIBS@ -CURL_NETWORK_LIBS = @CURL_NETWORK_LIBS@ -CURL_PLIST_VERSION = @CURL_PLIST_VERSION@ -CURL_WITH_MULTI_SSL = @CURL_WITH_MULTI_SSL@ -CYGPATH_W = @CYGPATH_W@ -DEFAULT_SSL_BACKEND = @DEFAULT_SSL_BACKEND@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -ENABLE_SHARED = @ENABLE_SHARED@ -ENABLE_STATIC = @ENABLE_STATIC@ -ETAGS = @ETAGS@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -FILECMD = @FILECMD@ -FISH_FUNCTIONS_DIR = @FISH_FUNCTIONS_DIR@ -GCOV = @GCOV@ -GREP = @GREP@ -HAVE_BROTLI = @HAVE_BROTLI@ -HAVE_GNUTLS_SRP = @HAVE_GNUTLS_SRP@ -HAVE_LDAP_SSL = @HAVE_LDAP_SSL@ -HAVE_LIBZ = @HAVE_LIBZ@ -HAVE_OPENSSL_SRP = @HAVE_OPENSSL_SRP@ -HAVE_PROTO_BSDSOCKET_H = @HAVE_PROTO_BSDSOCKET_H@ -HAVE_ZSTD = @HAVE_ZSTD@ -IDN_ENABLED = @IDN_ENABLED@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -IPV6_ENABLED = @IPV6_ENABLED@ -LCOV = @LCOV@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBCURL_LIBS = @LIBCURL_LIBS@ -LIBCURL_NO_SHARED = @LIBCURL_NO_SHARED@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MANOPT = @MANOPT@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -NROFF = @NROFF@ -NSS_LIBS = @NSS_LIBS@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PERL = @PERL@ -PKGADD_NAME = @PKGADD_NAME@ -PKGADD_PKG = @PKGADD_PKG@ -PKGADD_VENDOR = @PKGADD_VENDOR@ -PKGCONFIG = @PKGCONFIG@ -RANDOM_FILE = @RANDOM_FILE@ -RANLIB = @RANLIB@ -REQUIRE_LIB_DEPS = @REQUIRE_LIB_DEPS@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -SSL_BACKENDS = @SSL_BACKENDS@ -SSL_ENABLED = @SSL_ENABLED@ -SSL_LIBS = @SSL_LIBS@ -STRIP = @STRIP@ -SUPPORT_FEATURES = @SUPPORT_FEATURES@ -SUPPORT_PROTOCOLS = @SUPPORT_PROTOCOLS@ -USE_ARES = @USE_ARES@ -USE_BEARSSL = @USE_BEARSSL@ -USE_GNUTLS = @USE_GNUTLS@ -USE_HYPER = @USE_HYPER@ -USE_LIBRTMP = @USE_LIBRTMP@ -USE_LIBSSH = @USE_LIBSSH@ -USE_LIBSSH2 = @USE_LIBSSH2@ -USE_MBEDTLS = @USE_MBEDTLS@ -USE_MSH3 = @USE_MSH3@ -USE_NGHTTP2 = @USE_NGHTTP2@ -USE_NGHTTP3 = @USE_NGHTTP3@ -USE_NGTCP2 = @USE_NGTCP2@ -USE_NGTCP2_CRYPTO_GNUTLS = @USE_NGTCP2_CRYPTO_GNUTLS@ -USE_NGTCP2_CRYPTO_OPENSSL = @USE_NGTCP2_CRYPTO_OPENSSL@ -USE_NGTCP2_CRYPTO_WOLFSSL = @USE_NGTCP2_CRYPTO_WOLFSSL@ -USE_NSS = @USE_NSS@ -USE_OPENLDAP = @USE_OPENLDAP@ -USE_QUICHE = @USE_QUICHE@ -USE_RUSTLS = @USE_RUSTLS@ -USE_SCHANNEL = @USE_SCHANNEL@ -USE_SECTRANSP = @USE_SECTRANSP@ -USE_UNIX_SOCKETS = @USE_UNIX_SOCKETS@ -USE_WIN32_CRYPTO = @USE_WIN32_CRYPTO@ -USE_WIN32_LARGE_FILES = @USE_WIN32_LARGE_FILES@ -USE_WIN32_SMALL_FILES = @USE_WIN32_SMALL_FILES@ -USE_WINDOWS_SSPI = @USE_WINDOWS_SSPI@ -USE_WOLFSSH = @USE_WOLFSSH@ -USE_WOLFSSL = @USE_WOLFSSL@ -VERSION = @VERSION@ -VERSIONNUM = @VERSIONNUM@ -ZLIB_LIBS = @ZLIB_LIBS@ -ZSH_FUNCTIONS_DIR = @ZSH_FUNCTIONS_DIR@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -libext = @libext@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -runstatedir = @runstatedir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -AUTOMAKE_OPTIONS = foreign no-dependencies -MANPAGE = $(top_builddir)/docs/curl.1 -DPAGES = \ - abstract-unix-socket.d \ - alt-svc.d \ - anyauth.d \ - append.d \ - aws-sigv4.d \ - basic.d \ - cacert.d \ - capath.d \ - cert-status.d \ - cert-type.d \ - cert.d \ - ciphers.d \ - compressed-ssh.d \ - compressed.d \ - config.d \ - connect-timeout.d \ - connect-to.d \ - continue-at.d \ - cookie-jar.d \ - cookie.d \ - create-dirs.d \ - create-file-mode.d \ - crlf.d \ - crlfile.d \ - curves.d \ - data-ascii.d \ - data-binary.d \ - data-raw.d \ - data-urlencode.d \ - data.d \ - delegation.d \ - digest.d \ - disable-eprt.d \ - disable-epsv.d \ - disable.d \ - disallow-username-in-url.d \ - dns-interface.d \ - dns-ipv4-addr.d \ - dns-ipv6-addr.d \ - dns-servers.d \ - doh-cert-status.d \ - doh-insecure.d \ - doh-url.d \ - dump-header.d \ - egd-file.d \ - engine.d \ - etag-compare.d \ - etag-save.d \ - expect100-timeout.d \ - fail-early.d \ - fail-with-body.d \ - fail.d \ - false-start.d \ - form-escape.d \ - form-string.d \ - form.d \ - ftp-account.d \ - ftp-alternative-to-user.d \ - ftp-create-dirs.d \ - ftp-method.d \ - ftp-pasv.d \ - ftp-port.d \ - ftp-pret.d \ - ftp-skip-pasv-ip.d \ - ftp-ssl-ccc-mode.d \ - ftp-ssl-ccc.d \ - ftp-ssl-control.d \ - get.d \ - globoff.d \ - happy-eyeballs-timeout-ms.d \ - haproxy-protocol.d \ - head.d \ - header.d \ - help.d \ - hostpubmd5.d \ - hostpubsha256.d \ - hsts.d \ - http0.9.d \ - http1.0.d \ - http1.1.d \ - http2-prior-knowledge.d \ - http2.d \ - http3.d \ - ignore-content-length.d \ - include.d \ - insecure.d \ - interface.d \ - ipv4.d \ - ipv6.d \ - json.d \ - junk-session-cookies.d \ - keepalive-time.d \ - key-type.d \ - key.d \ - krb.d \ - libcurl.d \ - limit-rate.d \ - list-only.d \ - local-port.d \ - location-trusted.d \ - location.d \ - login-options.d \ - mail-auth.d \ - mail-from.d \ - mail-rcpt-allowfails.d \ - mail-rcpt.d \ - manual.d \ - max-filesize.d \ - max-redirs.d \ - max-time.d \ - metalink.d \ - negotiate.d \ - netrc-file.d \ - netrc-optional.d \ - netrc.d \ - next.d \ - no-alpn.d \ - no-buffer.d \ - no-clobber.d \ - no-keepalive.d \ - no-npn.d \ - no-progress-meter.d \ - no-sessionid.d \ - noproxy.d \ - ntlm-wb.d \ - ntlm.d \ - oauth2-bearer.d \ - output-dir.d \ - output.d \ - parallel-immediate.d \ - parallel-max.d \ - parallel.d \ - pass.d \ - path-as-is.d \ - pinnedpubkey.d \ - post301.d \ - post302.d \ - post303.d \ - preproxy.d \ - progress-bar.d \ - proto-default.d \ - proto-redir.d \ - proto.d \ - proxy-anyauth.d \ - proxy-basic.d \ - proxy-cacert.d \ - proxy-capath.d \ - proxy-cert-type.d \ - proxy-cert.d \ - proxy-ciphers.d \ - proxy-crlfile.d \ - proxy-digest.d \ - proxy-header.d \ - proxy-insecure.d \ - proxy-key-type.d \ - proxy-key.d \ - proxy-negotiate.d \ - proxy-ntlm.d \ - proxy-pass.d \ - proxy-pinnedpubkey.d \ - proxy-service-name.d \ - proxy-ssl-allow-beast.d \ - proxy-ssl-auto-client-cert.d \ - proxy-tls13-ciphers.d \ - proxy-tlsauthtype.d \ - proxy-tlspassword.d \ - proxy-tlsuser.d \ - proxy-tlsv1.d \ - proxy-user.d \ - proxy.d \ - proxy1.0.d \ - proxytunnel.d \ - pubkey.d \ - quote.d \ - random-file.d \ - range.d \ - rate.d \ - raw.d \ - referer.d \ - remote-header-name.d \ - remote-name-all.d \ - remote-name.d \ - remote-time.d \ - remove-on-error.d \ - request-target.d \ - request.d \ - resolve.d \ - retry-all-errors.d \ - retry-connrefused.d \ - retry-delay.d \ - retry-max-time.d \ - retry.d \ - sasl-authzid.d \ - sasl-ir.d \ - service-name.d \ - show-error.d \ - silent.d \ - socks4.d \ - socks4a.d \ - socks5-basic.d \ - socks5-gssapi-nec.d \ - socks5-gssapi-service.d \ - socks5-gssapi.d \ - socks5-hostname.d \ - socks5.d \ - speed-limit.d \ - speed-time.d \ - ssl-allow-beast.d \ - ssl-auto-client-cert.d \ - ssl-no-revoke.d \ - ssl-reqd.d \ - ssl-revoke-best-effort.d \ - ssl.d \ - sslv2.d \ - sslv3.d \ - stderr.d \ - styled-output.d \ - suppress-connect-headers.d \ - tcp-fastopen.d \ - tcp-nodelay.d \ - telnet-option.d \ - tftp-blksize.d \ - tftp-no-options.d \ - time-cond.d \ - tls-max.d \ - tls13-ciphers.d \ - tlsauthtype.d \ - tlspassword.d \ - tlsuser.d \ - tlsv1.0.d \ - tlsv1.1.d \ - tlsv1.2.d \ - tlsv1.3.d \ - tlsv1.d \ - tr-encoding.d \ - trace-ascii.d \ - trace-time.d \ - trace.d \ - unix-socket.d \ - upload-file.d \ - url.d \ - use-ascii.d \ - user-agent.d \ - user.d \ - verbose.d \ - version.d \ - write-out.d \ - xattr.d - -OTHERPAGES = page-footer page-header -EXTRA_DIST = $(DPAGES) MANPAGE.md gen.pl $(OTHERPAGES) CMakeLists.txt -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/Makefile.inc $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign docs/cmdline-opts/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign docs/cmdline-opts/Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ - esac; -$(srcdir)/Makefile.inc $(am__empty): - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -tags TAGS: - -ctags CTAGS: - -cscope cscopelist: - -distdir: $(BUILT_SOURCES) - $(MAKE) $(AM_MAKEFLAGS) distdir-am - -distdir-am: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$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: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -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 clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: all all-am check check-am clean clean-generic clean-libtool \ - cscopelist-am ctags-am distclean distclean-generic \ - distclean-libtool distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags-am uninstall uninstall-am - -.PRECIOUS: Makefile - - -all: $(MANPAGE) - -$(MANPAGE): $(DPAGES) $(OTHERPAGES) Makefile.inc - @echo "generate $(MANPAGE)" - @(cd $(srcdir) && @PERL@ ./gen.pl mainpage $(DPAGES)) > $(MANPAGE) - -# 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/Engine/lib/curl/docs/cmdline-opts/Makefile.inc b/Engine/lib/curl/docs/cmdline-opts/Makefile.inc deleted file mode 100644 index 350fa9fa7..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/Makefile.inc +++ /dev/null @@ -1,276 +0,0 @@ -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### -# Shared between Makefile.am and CMakeLists.txt - -DPAGES = \ - abstract-unix-socket.d \ - alt-svc.d \ - anyauth.d \ - append.d \ - aws-sigv4.d \ - basic.d \ - cacert.d \ - capath.d \ - cert-status.d \ - cert-type.d \ - cert.d \ - ciphers.d \ - compressed-ssh.d \ - compressed.d \ - config.d \ - connect-timeout.d \ - connect-to.d \ - continue-at.d \ - cookie-jar.d \ - cookie.d \ - create-dirs.d \ - create-file-mode.d \ - crlf.d \ - crlfile.d \ - curves.d \ - data-ascii.d \ - data-binary.d \ - data-raw.d \ - data-urlencode.d \ - data.d \ - delegation.d \ - digest.d \ - disable-eprt.d \ - disable-epsv.d \ - disable.d \ - disallow-username-in-url.d \ - dns-interface.d \ - dns-ipv4-addr.d \ - dns-ipv6-addr.d \ - dns-servers.d \ - doh-cert-status.d \ - doh-insecure.d \ - doh-url.d \ - dump-header.d \ - egd-file.d \ - engine.d \ - etag-compare.d \ - etag-save.d \ - expect100-timeout.d \ - fail-early.d \ - fail-with-body.d \ - fail.d \ - false-start.d \ - form-escape.d \ - form-string.d \ - form.d \ - ftp-account.d \ - ftp-alternative-to-user.d \ - ftp-create-dirs.d \ - ftp-method.d \ - ftp-pasv.d \ - ftp-port.d \ - ftp-pret.d \ - ftp-skip-pasv-ip.d \ - ftp-ssl-ccc-mode.d \ - ftp-ssl-ccc.d \ - ftp-ssl-control.d \ - get.d \ - globoff.d \ - happy-eyeballs-timeout-ms.d \ - haproxy-protocol.d \ - head.d \ - header.d \ - help.d \ - hostpubmd5.d \ - hostpubsha256.d \ - hsts.d \ - http0.9.d \ - http1.0.d \ - http1.1.d \ - http2-prior-knowledge.d \ - http2.d \ - http3.d \ - ignore-content-length.d \ - include.d \ - insecure.d \ - interface.d \ - ipv4.d \ - ipv6.d \ - json.d \ - junk-session-cookies.d \ - keepalive-time.d \ - key-type.d \ - key.d \ - krb.d \ - libcurl.d \ - limit-rate.d \ - list-only.d \ - local-port.d \ - location-trusted.d \ - location.d \ - login-options.d \ - mail-auth.d \ - mail-from.d \ - mail-rcpt-allowfails.d \ - mail-rcpt.d \ - manual.d \ - max-filesize.d \ - max-redirs.d \ - max-time.d \ - metalink.d \ - negotiate.d \ - netrc-file.d \ - netrc-optional.d \ - netrc.d \ - next.d \ - no-alpn.d \ - no-buffer.d \ - no-clobber.d \ - no-keepalive.d \ - no-npn.d \ - no-progress-meter.d \ - no-sessionid.d \ - noproxy.d \ - ntlm-wb.d \ - ntlm.d \ - oauth2-bearer.d \ - output-dir.d \ - output.d \ - parallel-immediate.d \ - parallel-max.d \ - parallel.d \ - pass.d \ - path-as-is.d \ - pinnedpubkey.d \ - post301.d \ - post302.d \ - post303.d \ - preproxy.d \ - progress-bar.d \ - proto-default.d \ - proto-redir.d \ - proto.d \ - proxy-anyauth.d \ - proxy-basic.d \ - proxy-cacert.d \ - proxy-capath.d \ - proxy-cert-type.d \ - proxy-cert.d \ - proxy-ciphers.d \ - proxy-crlfile.d \ - proxy-digest.d \ - proxy-header.d \ - proxy-insecure.d \ - proxy-key-type.d \ - proxy-key.d \ - proxy-negotiate.d \ - proxy-ntlm.d \ - proxy-pass.d \ - proxy-pinnedpubkey.d \ - proxy-service-name.d \ - proxy-ssl-allow-beast.d \ - proxy-ssl-auto-client-cert.d \ - proxy-tls13-ciphers.d \ - proxy-tlsauthtype.d \ - proxy-tlspassword.d \ - proxy-tlsuser.d \ - proxy-tlsv1.d \ - proxy-user.d \ - proxy.d \ - proxy1.0.d \ - proxytunnel.d \ - pubkey.d \ - quote.d \ - random-file.d \ - range.d \ - rate.d \ - raw.d \ - referer.d \ - remote-header-name.d \ - remote-name-all.d \ - remote-name.d \ - remote-time.d \ - remove-on-error.d \ - request-target.d \ - request.d \ - resolve.d \ - retry-all-errors.d \ - retry-connrefused.d \ - retry-delay.d \ - retry-max-time.d \ - retry.d \ - sasl-authzid.d \ - sasl-ir.d \ - service-name.d \ - show-error.d \ - silent.d \ - socks4.d \ - socks4a.d \ - socks5-basic.d \ - socks5-gssapi-nec.d \ - socks5-gssapi-service.d \ - socks5-gssapi.d \ - socks5-hostname.d \ - socks5.d \ - speed-limit.d \ - speed-time.d \ - ssl-allow-beast.d \ - ssl-auto-client-cert.d \ - ssl-no-revoke.d \ - ssl-reqd.d \ - ssl-revoke-best-effort.d \ - ssl.d \ - sslv2.d \ - sslv3.d \ - stderr.d \ - styled-output.d \ - suppress-connect-headers.d \ - tcp-fastopen.d \ - tcp-nodelay.d \ - telnet-option.d \ - tftp-blksize.d \ - tftp-no-options.d \ - time-cond.d \ - tls-max.d \ - tls13-ciphers.d \ - tlsauthtype.d \ - tlspassword.d \ - tlsuser.d \ - tlsv1.0.d \ - tlsv1.1.d \ - tlsv1.2.d \ - tlsv1.3.d \ - tlsv1.d \ - tr-encoding.d \ - trace-ascii.d \ - trace-time.d \ - trace.d \ - unix-socket.d \ - upload-file.d \ - url.d \ - use-ascii.d \ - user-agent.d \ - user.d \ - verbose.d \ - version.d \ - write-out.d \ - xattr.d - -OTHERPAGES = page-footer page-header diff --git a/Engine/lib/curl/docs/cmdline-opts/abstract-unix-socket.d b/Engine/lib/curl/docs/cmdline-opts/abstract-unix-socket.d deleted file mode 100644 index 820dd16c3..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/abstract-unix-socket.d +++ /dev/null @@ -1,14 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: abstract-unix-socket -Arg: -Help: Connect via abstract Unix domain socket -Added: 7.53.0 -Protocols: HTTP -Category: connection -See-also: unix-socket -Example: --abstract-unix-socket socketpath $URL ---- -Connect through an abstract Unix domain socket, instead of using the network. -Note: netstat shows the path of an abstract socket prefixed with '@', however -the argument should not have this leading character. diff --git a/Engine/lib/curl/docs/cmdline-opts/alt-svc.d b/Engine/lib/curl/docs/cmdline-opts/alt-svc.d deleted file mode 100644 index c1dcd2bdc..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/alt-svc.d +++ /dev/null @@ -1,20 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: alt-svc -Arg: -Protocols: HTTPS -Help: Enable alt-svc with this cache file -Added: 7.64.1 -Category: http -See-also: resolve connect-to -Example: --alt-svc svc.txt $URL ---- -This option enables the alt-svc parser in curl. If the file name points to an -existing alt-svc cache file, that will be used. After a completed transfer, -the cache will be saved to the file name again if it has been modified. - -Specify a "" file name (zero length) to avoid loading/saving and make curl -just handle the cache in memory. - -If this option is used several times, curl will load contents from all the -files but the last one will be used for saving. diff --git a/Engine/lib/curl/docs/cmdline-opts/anyauth.d b/Engine/lib/curl/docs/cmdline-opts/anyauth.d deleted file mode 100644 index 8641904cf..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/anyauth.d +++ /dev/null @@ -1,22 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: anyauth -Help: Pick any authentication method -Protocols: HTTP -See-also: proxy-anyauth basic digest -Category: http proxy auth -Example: --anyauth --user me:pwd $URL -Added: 7.10.6 ---- -Tells curl to figure out authentication method by itself, and use the most -secure one the remote site claims to support. This is done by first doing a -request and checking the response-headers, thus possibly inducing an extra -network round-trip. This is used instead of setting a specific authentication -method, which you can do with --basic, --digest, --ntlm, and --negotiate. - -Using --anyauth is not recommended if you do uploads from stdin, since it may -require data to be sent twice and then the client must be able to rewind. If -the need should arise when uploading from stdin, the upload operation will -fail. - -Used together with --user. diff --git a/Engine/lib/curl/docs/cmdline-opts/append.d b/Engine/lib/curl/docs/cmdline-opts/append.d deleted file mode 100644 index e6e6ef231..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/append.d +++ /dev/null @@ -1,14 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Short: a -Long: append -Help: Append to target file when uploading -Protocols: FTP SFTP -Category: ftp sftp -See-also: range continue-at -Example: --upload-file local --append ftp://example.com/ -Added: 4.8 ---- -When used in an upload, this makes curl append to the target file instead of -overwriting it. If the remote file does not exist, it will be created. Note -that this flag is ignored by some SFTP servers (including OpenSSH). diff --git a/Engine/lib/curl/docs/cmdline-opts/aws-sigv4.d b/Engine/lib/curl/docs/cmdline-opts/aws-sigv4.d deleted file mode 100644 index 985972269..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/aws-sigv4.d +++ /dev/null @@ -1,21 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: aws-sigv4 -Arg: -Help: Use AWS V4 signature authentication -Category: auth http -Added: 7.75.0 -See-also: basic user -Example: --aws-sigv4 "aws:amz:east-2:es" --user "key:secret" $URL ---- -Use AWS V4 signature authentication in the transfer. - -The provider argument is a string that is used by the algorithm when creating -outgoing authentication headers. - -The region argument is a string that points to a geographic area of -a resources collection (region-code) when the region name is omitted from -the endpoint. - -The service argument is a string that points to a function provided by a cloud -(service-code) when the service name is omitted from the endpoint. diff --git a/Engine/lib/curl/docs/cmdline-opts/basic.d b/Engine/lib/curl/docs/cmdline-opts/basic.d deleted file mode 100644 index 4def3cddc..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/basic.d +++ /dev/null @@ -1,16 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: basic -Help: Use HTTP Basic Authentication -See-also: proxy-basic -Protocols: HTTP -Category: auth -Example: -u name:password --basic $URL -Added: 7.10.6 ---- -Tells curl to use HTTP Basic authentication with the remote host. This is the -default and this option is usually pointless, unless you use it to override a -previously set option that sets a different authentication method (such as ---ntlm, --digest, or --negotiate). - -Used together with --user. diff --git a/Engine/lib/curl/docs/cmdline-opts/cacert.d b/Engine/lib/curl/docs/cmdline-opts/cacert.d deleted file mode 100644 index f950b6c7f..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/cacert.d +++ /dev/null @@ -1,39 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: cacert -Arg: -Help: CA certificate to verify peer against -Protocols: TLS -Category: tls -See-also: capath insecure -Example: --cacert CA-file.txt $URL -Added: 7.5 ---- -Tells curl to use the specified certificate file to verify the peer. The file -may contain multiple CA certificates. The certificate(s) must be in PEM -format. Normally curl is built to use a default file for this, so this option -is typically used to alter that default file. - -curl recognizes the environment variable named 'CURL_CA_BUNDLE' if it is -set, and uses the given path as a path to a CA cert bundle. This option -overrides that variable. - -The windows version of curl will automatically look for a CA certs file named -'curl-ca-bundle.crt', either in the same directory as curl.exe, or in the -Current Working Directory, or in any folder along your PATH. - -If curl is built against the NSS SSL library, the NSS PEM PKCS#11 module -(libnsspem.so) needs to be available for this option to work properly. - -(iOS and macOS only) If curl is built against Secure Transport, then this -option is supported for backward compatibility with other SSL engines, but it -should not be set. If the option is not set, then curl will use the -certificates in the system and user Keychain to verify the peer, which is the -preferred method of verifying the peer's certificate chain. - -(Schannel only) This option is supported for Schannel in Windows 7 or later -with libcurl 7.60 or later. This option is supported for backward -compatibility with other SSL engines; instead it is recommended to use -Windows' store of root certificates (the default for Schannel). - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/capath.d b/Engine/lib/curl/docs/cmdline-opts/capath.d deleted file mode 100644 index eb8cd9f63..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/capath.d +++ /dev/null @@ -1,21 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: capath -Arg: -Help: CA directory to verify peer against -Protocols: TLS -Category: tls -See-also: cacert insecure -Example: --capath /local/directory $URL -Added: 7.9.8 ---- -Tells curl to use the specified certificate directory to verify the -peer. Multiple paths can be provided by separating them with ":" (e.g. -"path1:path2:path3"). The certificates must be in PEM format, and if curl is -built against OpenSSL, the directory must have been processed using the -c_rehash utility supplied with OpenSSL. Using --capath can allow -OpenSSL-powered curl to make SSL-connections much more efficiently than using ---cacert if the --cacert file contains many CA certificates. - -If this option is set, the default capath value will be ignored, and if it is -used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/cert-status.d b/Engine/lib/curl/docs/cmdline-opts/cert-status.d deleted file mode 100644 index 73e82525b..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/cert-status.d +++ /dev/null @@ -1,18 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: cert-status -Protocols: TLS -Added: 7.41.0 -Help: Verify the status of the server cert via OCSP-staple -Category: tls -See-also: pinnedpubkey -Example: --cert-status $URL ---- -Tells curl to verify the status of the server certificate by using the -Certificate Status Request (aka. OCSP stapling) TLS extension. - -If this option is enabled and the server sends an invalid (e.g. expired) -response, if the response suggests that the server certificate has been revoked, -or no response at all is received, the verification fails. - -This is currently only implemented in the OpenSSL, GnuTLS and NSS backends. diff --git a/Engine/lib/curl/docs/cmdline-opts/cert-type.d b/Engine/lib/curl/docs/cmdline-opts/cert-type.d deleted file mode 100644 index 8dd767ad7..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/cert-type.d +++ /dev/null @@ -1,19 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: cert-type -Protocols: TLS -Arg: -Help: Certificate type (DER/PEM/ENG/P12) -See-also: cert key key-type -Category: tls -Example: --cert-type PEM --cert file $URL -Added: 7.9.3 ---- -Tells curl what type the provided client certificate is using. PEM, DER, ENG -and P12 are recognized types. - -The default type depends on the TLS backend and is usually PEM, however for -Secure Transport and Schannel it is P12. If --cert is a pkcs11: URI then ENG is -the default type. - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/cert.d b/Engine/lib/curl/docs/cmdline-opts/cert.d deleted file mode 100644 index 27690eb97..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/cert.d +++ /dev/null @@ -1,59 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Short: E -Long: cert -Arg: -Help: Client certificate file and password -Protocols: TLS -See-also: cert-type key key-type -Category: tls -Example: --cert certfile --key keyfile $URL -Added: 5.0 ---- -Tells curl to use the specified client certificate file when getting a file -with HTTPS, FTPS or another SSL-based protocol. The certificate must be in -PKCS#12 format if using Secure Transport, or PEM format if using any other -engine. If the optional password is not specified, it will be queried for on -the terminal. Note that this option assumes a certificate file that is the -private key and the client certificate concatenated. See --cert and --key to -specify them independently. - -In the portion of the argument, you must escape the character ":" -as "\\:" so that it is not recognized as the password delimiter. Similarly, you -must escape the character "\\" as "\\\\" so that it is not recognized as an -escape character. - -If curl is built against the NSS SSL library then this option can tell -curl the nickname of the certificate to use within the NSS database defined -by the environment variable SSL_DIR (or by default /etc/pki/nssdb). If the -NSS PEM PKCS#11 module (libnsspem.so) is available then PEM files may be -loaded. - -If you provide a path relative to the current directory, you must prefix the -path with "./" in order to avoid confusion with an NSS database nickname. - -If curl is built against OpenSSL library, and the engine pkcs11 is available, -then a PKCS#11 URI (RFC 7512) can be used to specify a certificate located in -a PKCS#11 device. A string beginning with "pkcs11:" will be interpreted as a -PKCS#11 URI. If a PKCS#11 URI is provided, then the --engine option will be set -as "pkcs11" if none was provided and the --cert-type option will be set as -"ENG" if none was provided. - -(iOS and macOS only) If curl is built against Secure Transport, then the -certificate string can either be the name of a certificate/private key in the -system or user keychain, or the path to a PKCS#12-encoded certificate and -private key. If you want to use a file from the current directory, please -precede it with "./" prefix, in order to avoid confusion with a nickname. - -(Schannel only) Client certificates must be specified by a path -expression to a certificate store. (Loading PFX is not supported; you can -import it to a store first). You can use -"\\\\" to refer to a certificate -in the system certificates store, for example, -"CurrentUser\\MY\\934a7ac6f8a5d579285a74fa61e19f23ddfe8d7a". Thumbprint is -usually a SHA-1 hex string which you can see in certificate details. Following -store locations are supported: CurrentUser, LocalMachine, CurrentService, -Services, CurrentUserGroupPolicy, LocalMachineGroupPolicy, -LocalMachineEnterprise. - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/ciphers.d b/Engine/lib/curl/docs/cmdline-opts/ciphers.d deleted file mode 100644 index a5bc90738..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/ciphers.d +++ /dev/null @@ -1,17 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: ciphers -Arg: -Help: SSL ciphers to use -Protocols: TLS -Category: tls -See-also: tlsv1.3 -Example: --ciphers ECDHE-ECDSA-AES256-CCM8 $URL -Added: 7.9 ---- -Specifies which ciphers to use in the connection. The list of ciphers must -specify valid ciphers. Read up on SSL cipher list details on this URL: - - https://curl.se/docs/ssl-ciphers.html - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/compressed-ssh.d b/Engine/lib/curl/docs/cmdline-opts/compressed-ssh.d deleted file mode 100644 index 5aa2310f2..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/compressed-ssh.d +++ /dev/null @@ -1,12 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: compressed-ssh -Help: Enable SSH compression -Protocols: SCP SFTP -Added: 7.56.0 -Category: scp ssh -See-also: compressed -Example: --compressed-ssh sftp://example.com/ ---- -Enables built-in SSH compression. -This is a request, not an order; the server may or may not do it. diff --git a/Engine/lib/curl/docs/cmdline-opts/compressed.d b/Engine/lib/curl/docs/cmdline-opts/compressed.d deleted file mode 100644 index c7e2ff9dd..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/compressed.d +++ /dev/null @@ -1,16 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: compressed -Help: Request compressed response -Protocols: HTTP -Category: http -Example: --compressed $URL -See-also: compressed-ssh -Added: 7.10 ---- -Request a compressed response using one of the algorithms curl supports, and -automatically decompress the content. Headers are not modified. - -If this option is used and the server sends an unsupported encoding, curl will -report an error. This is a request, not an order; the server may or may not -deliver data compressed. diff --git a/Engine/lib/curl/docs/cmdline-opts/config.d b/Engine/lib/curl/docs/cmdline-opts/config.d deleted file mode 100644 index 5ca71a586..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/config.d +++ /dev/null @@ -1,77 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: config -Arg: -Help: Read config from a file -Short: K -Category: curl -Example: --config file.txt $URL -Added: 4.10 -See-also: disable ---- -Specify a text file to read curl arguments from. The command line arguments -found in the text file will be used as if they were provided on the command -line. - -Options and their parameters must be specified on the same line in the file, -separated by whitespace, colon, or the equals sign. Long option names can -optionally be given in the config file without the initial double dashes and -if so, the colon or equals characters can be used as separators. If the option -is specified with one or two dashes, there can be no colon or equals character -between the option and its parameter. - -If the parameter contains whitespace (or starts with : or =), the parameter -must be enclosed within quotes. Within double quotes, the following escape -sequences are available: \\\\, \\", \\t, \\n, \\r and \\v. A backslash -preceding any other letter is ignored. - -If the first column of a config line is a '#' character, the rest of the line -will be treated as a comment. - -Only write one option per physical line in the config file. - -Specify the filename to --config as '-' to make curl read the file from stdin. - -Note that to be able to specify a URL in the config file, you need to specify -it using the --url option, and not by simply writing the URL on its own -line. So, it could look similar to this: - -url = "https://curl.se/docs/" - - # --- Example file --- - # this is a comment - url = "example.com" - output = "curlhere.html" - user-agent = "superagent/1.0" - - # and fetch another URL too - url = "example.com/docs/manpage.html" - -O - referer = "http://nowhereatall.example.com/" - # --- End of example file --- - -When curl is invoked, it (unless --disable is used) checks for a default -config file and uses it if found, even when --config is used. The default -config file is checked for in the following places in this order: - -1) "$CURL_HOME/.curlrc" - -2) "$XDG_CONFIG_HOME/.curlrc" (Added in 7.73.0) - -3) "$HOME/.curlrc" - -4) Windows: "%USERPROFILE%\\.curlrc" - -5) Windows: "%APPDATA%\\.curlrc" - -6) Windows: "%USERPROFILE%\\Application Data\\.curlrc" - -7) Non-Windows: use getpwuid to find the home directory - -8) On Windows, if it finds no .curlrc file in the sequence described above, it -checks for one in the same dir the curl executable is placed. - -On Windows two filenames are checked per location: .curlrc and _curlrc, -preferring the former. Older versions on Windows checked for _curlrc only. - -This option can be used multiple times to load multiple config files. diff --git a/Engine/lib/curl/docs/cmdline-opts/connect-timeout.d b/Engine/lib/curl/docs/cmdline-opts/connect-timeout.d deleted file mode 100644 index f33fc4858..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/connect-timeout.d +++ /dev/null @@ -1,17 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: connect-timeout -Arg: -Help: Maximum time allowed for connection -See-also: max-time -Category: connection -Example: --connect-timeout 20 $URL -Example: --connect-timeout 3.14 $URL -Added: 7.7 ---- -Maximum time in seconds that you allow curl's connection to take. This only -limits the connection phase, so if curl connects within the given period it -will continue - if not it will exit. Since version 7.32.0, this option -accepts decimal values. - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/connect-to.d b/Engine/lib/curl/docs/cmdline-opts/connect-to.d deleted file mode 100644 index eded7ed10..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/connect-to.d +++ /dev/null @@ -1,25 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: connect-to -Arg: -Help: Connect to host -Added: 7.49.0 -See-also: resolve header -Category: connection -Example: --connect-to example.com:443:example.net:8443 $URL ---- - -For a request to the given HOST1:PORT1 pair, connect to HOST2:PORT2 instead. -This option is suitable to direct requests at a specific server, e.g. at a -specific cluster node in a cluster of servers. This option is only used to -establish the network connection. It does NOT affect the hostname/port that is -used for TLS/SSL (e.g. SNI, certificate verification) or for the application -protocols. "HOST1" and "PORT1" may be the empty string, meaning "any -host/port". "HOST2" and "PORT2" may also be the empty string, meaning "use the -request's original host/port". - -A "host" specified to this option is compared as a string, so it needs to -match the name used in request URL. It can be either numerical such as -"127.0.0.1" or the full host name such as "example.org". - -This option can be used many times to add many connect rules. diff --git a/Engine/lib/curl/docs/cmdline-opts/continue-at.d b/Engine/lib/curl/docs/cmdline-opts/continue-at.d deleted file mode 100644 index 3217f55f5..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/continue-at.d +++ /dev/null @@ -1,21 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Short: C -Long: continue-at -Arg: -Help: Resumed transfer offset -See-also: range -Category: connection -Example: -C - $URL -Example: -C 400 $URL -Added: 4.8 ---- -Continue/Resume a previous file transfer at the given offset. The given offset -is the exact number of bytes that will be skipped, counting from the beginning -of the source file before it is transferred to the destination. If used with -uploads, the FTP server command SIZE will not be used by curl. - -Use "-C -" to tell curl to automatically find out where/how to resume the -transfer. It then uses the given output/input files to figure that out. - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/cookie-jar.d b/Engine/lib/curl/docs/cmdline-opts/cookie-jar.d deleted file mode 100644 index 3c7759c87..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/cookie-jar.d +++ /dev/null @@ -1,31 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Short: c -Long: cookie-jar -Arg: -Protocols: HTTP -Help: Write cookies to after operation -Category: http -Example: -c store-here.txt $URL -Example: -c store-here.txt -b read-these $URL -Added: 7.9 -See-also: cookie ---- -Specify to which file you want curl to write all cookies after a completed -operation. Curl writes all cookies from its in-memory cookie storage to the -given file at the end of operations. If no cookies are known, no data will be -written. The file will be written using the Netscape cookie file format. If -you set the file name to a single dash, "-", the cookies will be written to -stdout. - -This command line option will activate the cookie engine that makes curl -record and use cookies. Another way to activate it is to use the --cookie -option. - -If the cookie jar cannot be created or written to, the whole curl operation -will not fail or even report an error clearly. Using --verbose will get a -warning displayed, but that is the only visible feedback you get about this -possibly lethal situation. - -If this option is used several times, the last specified file name will be -used. diff --git a/Engine/lib/curl/docs/cmdline-opts/cookie.d b/Engine/lib/curl/docs/cmdline-opts/cookie.d deleted file mode 100644 index b05a0c7d5..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/cookie.d +++ /dev/null @@ -1,43 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Short: b -Long: cookie -Arg: -Protocols: HTTP -Help: Send cookies from string/file -Category: http -Example: -b cookiefile $URL -Example: -b cookiefile -c cookiefile $URL -See-also: cookie-jar junk-session-cookies -Added: 4.9 ---- -Pass the data to the HTTP server in the Cookie header. It is supposedly the -data previously received from the server in a "Set-Cookie:" line. The data -should be in the format "NAME1=VALUE1; NAME2=VALUE2". This makes curl use the -cookie header with this content explicitly in all outgoing request(s). If -multiple requests are done due to authentication, followed redirects or -similar, they will all get this cookie passed on. - -If no '=' symbol is used in the argument, it is instead treated as a filename -to read previously stored cookie from. This option also activates the cookie -engine which will make curl record incoming cookies, which may be handy if -you are using this in combination with the --location option or do multiple URL -transfers on the same invoke. If the file name is exactly a minus ("-"), curl -will instead read the contents from stdin. - -The file format of the file to read cookies from should be plain HTTP headers -(Set-Cookie style) or the Netscape/Mozilla cookie file format. - -The file specified with --cookie is only used as input. No cookies will be -written to the file. To store cookies, use the --cookie-jar option. - -If you use the Set-Cookie file format and do not specify a domain then the -cookie is not sent since the domain will never match. To address this, set a -domain in Set-Cookie line (doing that will include sub-domains) or preferably: -use the Netscape format. - -This option can be used multiple times. - -Users often want to both read cookies from a file and write updated cookies -back to a file, so using both --cookie and --cookie-jar in the same command -line is common. diff --git a/Engine/lib/curl/docs/cmdline-opts/create-dirs.d b/Engine/lib/curl/docs/cmdline-opts/create-dirs.d deleted file mode 100644 index 211d4bd8c..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/create-dirs.d +++ /dev/null @@ -1,18 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: create-dirs -Help: Create necessary local directory hierarchy -Category: curl -Example: --create-dirs --output local/dir/file $URL -Added: 7.10.3 -See-also: ftp-create-dirs output-dir ---- -When used in conjunction with the --output option, curl will create the -necessary local directory hierarchy as needed. This option creates the -directories mentioned with the --output option, nothing else. If the --output -file name uses no directory, or if the directories it mentions already exist, -no directories will be created. - -Created dirs are made with mode 0750 on unix style file systems. - -To create remote directories when using FTP or SFTP, try --ftp-create-dirs. diff --git a/Engine/lib/curl/docs/cmdline-opts/create-file-mode.d b/Engine/lib/curl/docs/cmdline-opts/create-file-mode.d deleted file mode 100644 index c2bb496c7..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/create-file-mode.d +++ /dev/null @@ -1,18 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: create-file-mode -Arg: -Help: File mode for created files -Protocols: SFTP SCP FILE -Category: sftp scp file upload -See-also: ftp-create-dirs -Added: 7.75.0 -Example: --create-file-mode 0777 -T localfile sftp://example.com/new ---- -When curl is used to create files remotely using one of the supported -protocols, this option allows the user to set which 'mode' to set on the file -at creation time, instead of the default 0644. - -This option takes an octal number as argument. - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/crlf.d b/Engine/lib/curl/docs/cmdline-opts/crlf.d deleted file mode 100644 index f440af696..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/crlf.d +++ /dev/null @@ -1,13 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: crlf -Help: Convert LF to CRLF in upload -Protocols: FTP SMTP -Category: ftp smtp -Example: --crlf -T file ftp://example.com/ -Added: 5.7 -See-also: use-ascii ---- -Convert LF to CRLF in upload. Useful for MVS (OS/390). - -(SMTP added in 7.40.0) diff --git a/Engine/lib/curl/docs/cmdline-opts/crlfile.d b/Engine/lib/curl/docs/cmdline-opts/crlfile.d deleted file mode 100644 index 9f8ee8231..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/crlfile.d +++ /dev/null @@ -1,15 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: crlfile -Arg: -Protocols: TLS -Help: Use this CRL list -Added: 7.19.7 -Category: tls -Example: --crlfile rejects.txt $URL -See-also: cacert capath ---- -Provide a file using PEM format with a Certificate Revocation List that may -specify peer certificates that are to be considered revoked. - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/curves.d b/Engine/lib/curl/docs/cmdline-opts/curves.d deleted file mode 100644 index 2a353be18..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/curves.d +++ /dev/null @@ -1,22 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: curves -Arg: -Help: (EC) TLS key exchange algorithm(s) to request -Protocols: TLS -Added: 7.73.0 -Category: tls -Example: --curves X25519 $URL -See-also: ciphers ---- -Tells curl to request specific curves to use during SSL session establishment -according to RFC 8422, 5.1. Multiple algorithms can be provided by separating -them with ":" (e.g. "X25519:P-521"). The parameter is available identically -in the "openssl s_client/s_server" utilities. - ---curves allows a OpenSSL powered curl to make SSL-connections with exactly -the (EC) curve requested by the client, avoiding nontransparent client/server -negotiations. - -If this option is set, the default curves list built into openssl will be -ignored. diff --git a/Engine/lib/curl/docs/cmdline-opts/data-ascii.d b/Engine/lib/curl/docs/cmdline-opts/data-ascii.d deleted file mode 100644 index 72887e710..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/data-ascii.d +++ /dev/null @@ -1,12 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: data-ascii -Arg: -Help: HTTP POST ASCII data -Protocols: HTTP -Category: http post upload -Example: --data-ascii @file $URL -Added: 7.2 -See-also: data-binary data-raw data-urlencode ---- -This is just an alias for --data. diff --git a/Engine/lib/curl/docs/cmdline-opts/data-binary.d b/Engine/lib/curl/docs/cmdline-opts/data-binary.d deleted file mode 100644 index 117a6d8ac..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/data-binary.d +++ /dev/null @@ -1,24 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: data-binary -Arg: -Help: HTTP POST binary data -Protocols: HTTP -Category: http post upload -Example: --data-binary @filename $URL -Added: 7.2 -See-also: data-ascii ---- -This posts data exactly as specified with no extra processing whatsoever. - -If you start the data with the letter @, the rest should be a filename. Data -is posted in a similar manner as --data does, except that newlines and -carriage returns are preserved and conversions are never done. - -Like --data the default content-type sent to the server is -application/x-www-form-urlencoded. If you want the data to be treated as -arbitrary binary data by the server then set the content-type to octet-stream: --H "Content-Type: application/octet-stream". - -If this option is used several times, the ones following the first will append -data as described in --data. diff --git a/Engine/lib/curl/docs/cmdline-opts/data-raw.d b/Engine/lib/curl/docs/cmdline-opts/data-raw.d deleted file mode 100644 index 462832bf0..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/data-raw.d +++ /dev/null @@ -1,14 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: data-raw -Arg: -Protocols: HTTP -Help: HTTP POST data, '@' allowed -Added: 7.43.0 -See-also: data -Category: http post upload -Example: --data-raw "hello" $URL -Example: --data-raw "@at@at@" $URL ---- -This posts data similarly to --data but without the special -interpretation of the @ character. diff --git a/Engine/lib/curl/docs/cmdline-opts/data-urlencode.d b/Engine/lib/curl/docs/cmdline-opts/data-urlencode.d deleted file mode 100644 index 93a2325e4..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/data-urlencode.d +++ /dev/null @@ -1,40 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: data-urlencode -Arg: -Help: HTTP POST data URL encoded -Protocols: HTTP -See-also: data data-raw -Added: 7.18.0 -Category: http post upload -Example: --data-urlencode name=val $URL -Example: --data-urlencode =encodethis $URL -Example: --data-urlencode name@file $URL -Example: --data-urlencode @fileonly $URL ---- -This posts data, similar to the other --data options with the exception -that this performs URL-encoding. - -To be CGI-compliant, the part should begin with a *name* followed -by a separator and a content specification. The part can be passed to -curl using one of the following syntaxes: -.RS -.IP "content" -This will make curl URL-encode the content and pass that on. Just be careful -so that the content does not contain any = or @ symbols, as that will then make -the syntax match one of the other cases below! -.IP "=content" -This will make curl URL-encode the content and pass that on. The preceding = -symbol is not included in the data. -.IP "name=content" -This will make curl URL-encode the content part and pass that on. Note that -the name part is expected to be URL-encoded already. -.IP "@filename" -This will make curl load data from the given file (including any newlines), -URL-encode that data and pass it on in the POST. -.IP "name@filename" -This will make curl load data from the given file (including any newlines), -URL-encode that data and pass it on in the POST. The name part gets an equal -sign appended, resulting in *name=urlencoded-file-content*. Note that the -name is expected to be URL-encoded already. -.RE diff --git a/Engine/lib/curl/docs/cmdline-opts/data.d b/Engine/lib/curl/docs/cmdline-opts/data.d deleted file mode 100644 index bf8525ba7..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/data.d +++ /dev/null @@ -1,36 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: data -Short: d -Arg: -Help: HTTP POST data -Protocols: HTTP MQTT -See-also: data-binary data-urlencode data-raw -Mutexed: form head upload-file -Category: important http post upload -Example: -d "name=curl" $URL -Example: -d "name=curl" -d "tool=cmdline" $URL -Example: -d @filename $URL -Added: 4.0 ---- -Sends the specified data in a POST request to the HTTP server, in the same way -that a browser does when a user has filled in an HTML form and presses the -submit button. This will cause curl to pass the data to the server using the -content-type application/x-www-form-urlencoded. Compare to --form. - ---data-raw is almost the same but does not have a special interpretation of -the @ character. To post data purely binary, you should instead use the ---data-binary option. To URL-encode the value of a form field you may use ---data-urlencode. - -If any of these options is used more than once on the same command line, the -data pieces specified will be merged with a separating &-symbol. Thus, using -'-d name=daniel -d skill=lousy' would generate a post chunk that looks like -'name=daniel&skill=lousy'. - -If you start the data with the letter @, the rest should be a file name to -read the data from, or - if you want curl to read the data from stdin. Posting -data from a file named 'foobar' would thus be done with --data @foobar. When ---data is told to read from a file like that, carriage returns and newlines -will be stripped out. If you do not want the @ character to have a special -interpretation use --data-raw instead. diff --git a/Engine/lib/curl/docs/cmdline-opts/delegation.d b/Engine/lib/curl/docs/cmdline-opts/delegation.d deleted file mode 100644 index aa37ceb5b..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/delegation.d +++ /dev/null @@ -1,24 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: delegation -Arg: -Help: GSS-API delegation permission -Protocols: GSS/kerberos -Category: auth -Example: --delegation "none" $URL -Added: 7.22.0 -See-also: insecure ssl ---- -Set LEVEL to tell the server what it is allowed to delegate when it -comes to user credentials. -.RS -.IP "none" -Do not allow any delegation. -.IP "policy" -Delegates if and only if the OK-AS-DELEGATE flag is set in the Kerberos -service ticket, which is a matter of realm policy. -.IP "always" -Unconditionally allow the server to delegate. -.RE - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/digest.d b/Engine/lib/curl/docs/cmdline-opts/digest.d deleted file mode 100644 index ca60c06a7..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/digest.d +++ /dev/null @@ -1,16 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: digest -Help: Use HTTP Digest Authentication -Protocols: HTTP -Mutexed: basic ntlm negotiate -See-also: user proxy-digest anyauth -Category: proxy auth http -Example: -u name:password --digest $URL -Added: 7.10.6 ---- -Enables HTTP Digest authentication. This is an authentication scheme that -prevents the password from being sent over the wire in clear text. Use this in -combination with the normal --user option to set user name and password. - -If this option is used several times, only the first one is used. diff --git a/Engine/lib/curl/docs/cmdline-opts/disable-eprt.d b/Engine/lib/curl/docs/cmdline-opts/disable-eprt.d deleted file mode 100644 index 021d2152a..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/disable-eprt.d +++ /dev/null @@ -1,25 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: disable-eprt -Help: Inhibit using EPRT or LPRT -Protocols: FTP -Category: ftp -Example: --disable-eprt ftp://example.com/ -Added: 7.10.5 -See-also: disable-epsv ftp-port ---- -Tell curl to disable the use of the EPRT and LPRT commands when doing active -FTP transfers. Curl will normally always first attempt to use EPRT, then LPRT -before using PORT, but with this option, it will use PORT right away. EPRT and -LPRT are extensions to the original FTP protocol, and may not work on all -servers, but they enable more functionality in a better way than the -traditional PORT command. - ---eprt can be used to explicitly enable EPRT again and --no-eprt is an alias -for --disable-eprt. - -If the server is accessed using IPv6, this option will have no effect as EPRT -is necessary then. - -Disabling EPRT only changes the active behavior. If you want to switch to -passive mode you need to not use --ftp-port or force it with --ftp-pasv. diff --git a/Engine/lib/curl/docs/cmdline-opts/disable-epsv.d b/Engine/lib/curl/docs/cmdline-opts/disable-epsv.d deleted file mode 100644 index 092b99ebb..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/disable-epsv.d +++ /dev/null @@ -1,22 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: disable-epsv -Help: Inhibit using EPSV -Protocols: FTP -Category: ftp -Example: --disable-epsv ftp://example.com/ -Added: 7.9.2 -See-also: disable-eprt ftp-port ---- -Tell curl to disable the use of the EPSV command when doing passive FTP -transfers. Curl will normally always first attempt to use EPSV before -PASV, but with this option, it will not try using EPSV. - ---epsv can be used to explicitly enable EPSV again and --no-epsv is an alias -for --disable-epsv. - -If the server is an IPv6 host, this option will have no effect as EPSV is -necessary then. - -Disabling EPSV only changes the passive behavior. If you want to switch to -active mode you need to use --ftp-port. diff --git a/Engine/lib/curl/docs/cmdline-opts/disable.d b/Engine/lib/curl/docs/cmdline-opts/disable.d deleted file mode 100644 index 2577c0f52..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/disable.d +++ /dev/null @@ -1,13 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: disable -Short: q -Help: Disable .curlrc -Category: curl -Example: -q $URL -Added: 5.0 -See-also: config ---- -If used as the first parameter on the command line, the *curlrc* config -file will not be read and used. See the --config for details on the default -config file search path. diff --git a/Engine/lib/curl/docs/cmdline-opts/disallow-username-in-url.d b/Engine/lib/curl/docs/cmdline-opts/disallow-username-in-url.d deleted file mode 100644 index 0cf6e7571..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/disallow-username-in-url.d +++ /dev/null @@ -1,12 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: disallow-username-in-url -Help: Disallow username in URL -Protocols: HTTP -Added: 7.61.0 -See-also: proto -Category: curl http -Example: --disallow-username-in-url $URL ---- -This tells curl to exit if passed a URL containing a username. This is probably -most useful when the URL is being provided at runtime or similar. diff --git a/Engine/lib/curl/docs/cmdline-opts/dns-interface.d b/Engine/lib/curl/docs/cmdline-opts/dns-interface.d deleted file mode 100644 index 0b07f85cc..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/dns-interface.d +++ /dev/null @@ -1,15 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: dns-interface -Arg: -Help: Interface to use for DNS requests -Protocols: DNS -See-also: dns-ipv4-addr dns-ipv6-addr -Added: 7.33.0 -Requires: c-ares -Category: dns -Example: --dns-interface eth0 $URL ---- -Tell curl to send outgoing DNS requests through . This option is a -counterpart to --interface (which does not affect DNS). The supplied string -must be an interface name (not an address). diff --git a/Engine/lib/curl/docs/cmdline-opts/dns-ipv4-addr.d b/Engine/lib/curl/docs/cmdline-opts/dns-ipv4-addr.d deleted file mode 100644 index 31ec5632b..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/dns-ipv4-addr.d +++ /dev/null @@ -1,17 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: dns-ipv4-addr -Arg:
-Help: IPv4 address to use for DNS requests -Protocols: DNS -See-also: dns-interface dns-ipv6-addr -Added: 7.33.0 -Requires: c-ares -Category: dns -Example: --dns-ipv4-addr 10.1.2.3 $URL ---- -Tell curl to bind to when making IPv4 DNS requests, so that -the DNS requests originate from this address. The argument should be a -single IPv4 address. - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/dns-ipv6-addr.d b/Engine/lib/curl/docs/cmdline-opts/dns-ipv6-addr.d deleted file mode 100644 index 719f4b2a5..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/dns-ipv6-addr.d +++ /dev/null @@ -1,17 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: dns-ipv6-addr -Arg:
-Help: IPv6 address to use for DNS requests -Protocols: DNS -See-also: dns-interface dns-ipv4-addr -Added: 7.33.0 -Requires: c-ares -Category: dns -Example: --dns-ipv6-addr 2a04:4e42::561 $URL ---- -Tell curl to bind to when making IPv6 DNS requests, so that -the DNS requests originate from this address. The argument should be a -single IPv6 address. - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/dns-servers.d b/Engine/lib/curl/docs/cmdline-opts/dns-servers.d deleted file mode 100644 index eea78a776..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/dns-servers.d +++ /dev/null @@ -1,17 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: dns-servers -Arg: -Help: DNS server addrs to use -Requires: c-ares -Added: 7.33.0 -Category: dns -Example: --dns-servers 192.168.0.1,192.168.0.2 $URL -See-also: dns-interface dns-ipv4-addr ---- -Set the list of DNS servers to be used instead of the system default. -The list of IP addresses should be separated with commas. Port numbers -may also optionally be given as *:* after each IP -address. - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/doh-cert-status.d b/Engine/lib/curl/docs/cmdline-opts/doh-cert-status.d deleted file mode 100644 index 4d62d6864..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/doh-cert-status.d +++ /dev/null @@ -1,10 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: doh-cert-status -Help: Verify the status of the DoH server cert via OCSP-staple -Added: 7.76.0 -Category: dns tls -Example: --doh-cert-status --doh-url https://doh.example $URL -See-also: doh-insecure ---- -Same as --cert-status but used for DoH (DNS-over-HTTPS). diff --git a/Engine/lib/curl/docs/cmdline-opts/doh-insecure.d b/Engine/lib/curl/docs/cmdline-opts/doh-insecure.d deleted file mode 100644 index 1b7a5939e..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/doh-insecure.d +++ /dev/null @@ -1,10 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: doh-insecure -Help: Allow insecure DoH server connections -Added: 7.76.0 -Category: dns tls -Example: --doh-insecure --doh-url https://doh.example $URL -See-also: doh-url ---- -Same as --insecure but used for DoH (DNS-over-HTTPS). diff --git a/Engine/lib/curl/docs/cmdline-opts/doh-url.d b/Engine/lib/curl/docs/cmdline-opts/doh-url.d deleted file mode 100644 index 746623ff4..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/doh-url.d +++ /dev/null @@ -1,22 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: doh-url -Arg: -Help: Resolve host names over DoH -Added: 7.62.0 -Category: dns -Example: --doh-url https://doh.example $URL -See-also: doh-insecure ---- -Specifies which DNS-over-HTTPS (DoH) server to use to resolve hostnames, -instead of using the default name resolver mechanism. The URL must be HTTPS. - -Some SSL options that you set for your transfer will apply to DoH since the -name lookups take place over SSL. However, the certificate verification -settings are not inherited and can be controlled separately via ---doh-insecure and --doh-cert-status. - -This option is unset if an empty string "" is used as the URL. (Added in -7.85.0) - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/dump-header.d b/Engine/lib/curl/docs/cmdline-opts/dump-header.d deleted file mode 100644 index 8fc1e2d5e..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/dump-header.d +++ /dev/null @@ -1,19 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: dump-header -Short: D -Arg: -Help: Write the received headers to -Protocols: HTTP FTP -See-also: output -Category: http ftp -Example: --dump-header store.txt $URL -Added: 5.7 ---- -Write the received protocol headers to the specified file. If no headers are -received, the use of this option will create an empty file. - -When used in FTP, the FTP server response lines are considered being "headers" -and thus are saved there. - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/egd-file.d b/Engine/lib/curl/docs/cmdline-opts/egd-file.d deleted file mode 100644 index a46a638bc..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/egd-file.d +++ /dev/null @@ -1,16 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: egd-file -Arg: -Help: EGD socket path for random data -Protocols: TLS -See-also: random-file -Category: tls -Example: --egd-file /random/here $URL -Added: 7.7 ---- -Deprecated option. This option is ignored by curl since 7.84.0. Prior to that -it only had an effect on curl if built to use old versions of OpenSSL. - -Specify the path name to the Entropy Gathering Daemon socket. The socket is -used to seed the random engine for SSL connections. diff --git a/Engine/lib/curl/docs/cmdline-opts/engine.d b/Engine/lib/curl/docs/cmdline-opts/engine.d deleted file mode 100644 index 9e193d6f4..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/engine.d +++ /dev/null @@ -1,14 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: engine -Arg: -Help: Crypto engine to use -Protocols: TLS -Category: tls -Example: --engine flavor $URL -Added: 7.9.3 -See-also: ciphers curves ---- -Select the OpenSSL crypto engine to use for cipher operations. Use --engine -list to print a list of build-time supported engines. Note that not all (and -possibly none) of the engines may be available at runtime. diff --git a/Engine/lib/curl/docs/cmdline-opts/etag-compare.d b/Engine/lib/curl/docs/cmdline-opts/etag-compare.d deleted file mode 100644 index 598a4638a..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/etag-compare.d +++ /dev/null @@ -1,22 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: etag-compare -Arg: -Help: Pass an ETag from a file as a custom header -Protocols: HTTP -Added: 7.68.0 -Category: http -Example: --etag-compare etag.txt $URL -See-also: etag-save time-cond ---- -This option makes a conditional HTTP request for the specific ETag read -from the given file by sending a custom If-None-Match header using the -stored ETag. - -For correct results, make sure that the specified file contains only a -single line with the desired ETag. An empty file is parsed as an empty -ETag. - -Use the option --etag-save to first save the ETag from a response, and -then use this option to compare against the saved ETag in a subsequent -request. diff --git a/Engine/lib/curl/docs/cmdline-opts/etag-save.d b/Engine/lib/curl/docs/cmdline-opts/etag-save.d deleted file mode 100644 index 221e90e0f..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/etag-save.d +++ /dev/null @@ -1,15 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: etag-save -Arg: -Help: Parse ETag from a request and save it to a file -Protocols: HTTP -Added: 7.68.0 -Category: http -Example: --etag-save storetag.txt $URL -See-also: etag-compare ---- -This option saves an HTTP ETag to the specified file. An ETag is a -caching related header, usually returned in a response. - -If no ETag is sent by the server, an empty file is created. diff --git a/Engine/lib/curl/docs/cmdline-opts/expect100-timeout.d b/Engine/lib/curl/docs/cmdline-opts/expect100-timeout.d deleted file mode 100644 index 523bc7ab6..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/expect100-timeout.d +++ /dev/null @@ -1,15 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: expect100-timeout -Arg: -Help: How long to wait for 100-continue -Protocols: HTTP -Added: 7.47.0 -See-also: connect-timeout -Category: http -Example: --expect100-timeout 2.5 -T file $URL ---- -Maximum time in seconds that you allow curl to wait for a 100-continue -response when curl emits an Expects: 100-continue header in its request. By -default curl will wait one second. This option accepts decimal values! When -curl stops waiting, it will continue as if the response has been received. diff --git a/Engine/lib/curl/docs/cmdline-opts/fail-early.d b/Engine/lib/curl/docs/cmdline-opts/fail-early.d deleted file mode 100644 index c8a78b971..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/fail-early.d +++ /dev/null @@ -1,26 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: fail-early -Help: Fail on first transfer error, do not continue -Added: 7.52.0 -Category: curl -Example: --fail-early $URL https://two.example -See-also: fail fail-with-body ---- -Fail and exit on the first detected transfer error. - -When curl is used to do multiple transfers on the command line, it will -attempt to operate on each given URL, one by one. By default, it will ignore -errors if there are more URLs given and the last URL's success will determine -the error code curl returns. So early failures will be "hidden" by subsequent -successful transfers. - -Using this option, curl will instead return an error on the first transfer -that fails, independent of the amount of URLs that are given on the command -line. This way, no transfer failures go undetected by scripts and similar. - -This option is global and does not need to be specified for each use of --next. - -This option does not imply --fail, which causes transfers to fail due to the -server's HTTP status code. You can combine the two options, however note --fail -is not global and is therefore contained by --next. diff --git a/Engine/lib/curl/docs/cmdline-opts/fail-with-body.d b/Engine/lib/curl/docs/cmdline-opts/fail-with-body.d deleted file mode 100644 index c77fb9814..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/fail-with-body.d +++ /dev/null @@ -1,19 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: fail-with-body -Protocols: HTTP -Help: Fail on HTTP errors but save the body -Category: http output -Added: 7.76.0 -See-also: fail -Mutexed: fail -Example: --fail-with-body $URL ---- -Return an error on server errors where the HTTP response code is 400 or -greater). In normal cases when an HTTP server fails to deliver a document, it -returns an HTML document stating so (which often also describes why and -more). This flag will still allow curl to output and save that content but -also to return error 22. - -This is an alternative option to --fail which makes curl fail for the same -circumstances but without saving the content. diff --git a/Engine/lib/curl/docs/cmdline-opts/fail.d b/Engine/lib/curl/docs/cmdline-opts/fail.d deleted file mode 100644 index d37869752..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/fail.d +++ /dev/null @@ -1,21 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: fail -Short: f -Protocols: HTTP -Help: Fail fast with no output on HTTP errors -See-also: fail-with-body -Category: important http -Example: --fail $URL -Mutexed: fail-with-body -Added: 4.0 ---- -Fail fast with no output at all on server errors. This is useful to enable -scripts and users to better deal with failed attempts. In normal cases when an -HTTP server fails to deliver a document, it returns an HTML document stating -so (which often also describes why and more). This flag will prevent curl from -outputting that and return error 22. - -This method is not fail-safe and there are occasions where non-successful -response codes will slip through, especially when authentication is involved -(response codes 401 and 407). diff --git a/Engine/lib/curl/docs/cmdline-opts/false-start.d b/Engine/lib/curl/docs/cmdline-opts/false-start.d deleted file mode 100644 index 72ff1390c..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/false-start.d +++ /dev/null @@ -1,17 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: false-start -Help: Enable TLS False Start -Protocols: TLS -Added: 7.42.0 -Category: tls -Example: --false-start $URL -See-also: tcp-fastopen ---- -Tells curl to use false start during the TLS handshake. False start is a mode -where a TLS client will start sending application data before verifying the -server's Finished message, thus saving a round trip when performing a full -handshake. - -This is currently only implemented in the NSS and Secure Transport (on iOS 7.0 -or later, or OS X 10.9 or later) backends. diff --git a/Engine/lib/curl/docs/cmdline-opts/form-escape.d b/Engine/lib/curl/docs/cmdline-opts/form-escape.d deleted file mode 100644 index a7fb189f8..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/form-escape.d +++ /dev/null @@ -1,12 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: form-escape -Help: Escape multipart form field/file names using backslash -Protocols: HTTP -See-also: form -Added: 7.81.0 -Category: http upload -Example: --form-escape -F 'field\\name=curl' -F 'file=@load"this' $URL ---- -Tells curl to pass on names of multipart form fields and files using -backslash-escaping instead of percent-encoding. diff --git a/Engine/lib/curl/docs/cmdline-opts/form-string.d b/Engine/lib/curl/docs/cmdline-opts/form-string.d deleted file mode 100644 index f669bbbc7..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/form-string.d +++ /dev/null @@ -1,16 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: form-string -Help: Specify multipart MIME data -Protocols: HTTP SMTP IMAP -Arg: -See-also: form -Category: http upload -Example: --form-string "data" $URL -Added: 7.13.2 ---- -Similar to --form except that the value string for the named parameter is used -literally. Leading '@' and '<' characters, and the ';type=' string in -the value have no special meaning. Use this in preference to --form if -there's any possibility that the string value may accidentally trigger the -'@' or '<' features of --form. diff --git a/Engine/lib/curl/docs/cmdline-opts/form.d b/Engine/lib/curl/docs/cmdline-opts/form.d deleted file mode 100644 index 1e1c41d4d..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/form.d +++ /dev/null @@ -1,136 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: form -Short: F -Arg: -Help: Specify multipart MIME data -Protocols: HTTP SMTP IMAP -Mutexed: data head upload-file -Category: http upload -Example: --form "name=curl" --form "file=@loadthis" $URL -Added: 5.0 -See-also: data form-string form-escape ---- -For HTTP protocol family, this lets curl emulate a filled-in form in which a -user has pressed the submit button. This causes curl to POST data using the -Content-Type multipart/form-data according to RFC 2388. - -For SMTP and IMAP protocols, this is the means to compose a multipart mail -message to transmit. - -This enables uploading of binary files etc. To force the 'content' part to be -a file, prefix the file name with an @ sign. To just get the content part from -a file, prefix the file name with the symbol <. The difference between @ and < -is then that @ makes a file get attached in the post as a file upload, while -the < makes a text field and just get the contents for that text field from a -file. - -Tell curl to read content from stdin instead of a file by using - as -filename. This goes for both @ and < constructs. When stdin is used, the -contents is buffered in memory first by curl to determine its size and allow a -possible resend. Defining a part's data from a named non-regular file (such -as a named pipe or similar) is unfortunately not subject to buffering and will -be effectively read at transmission time; since the full size is unknown -before the transfer starts, such data is sent as chunks by HTTP and rejected -by IMAP. - -Example: send an image to an HTTP server, where 'profile' is the name of the -form-field to which the file portrait.jpg will be the input: - - curl -F profile=@portrait.jpg https://example.com/upload.cgi - -Example: send your name and shoe size in two text fields to the server: - - curl -F name=John -F shoesize=11 https://example.com/ - -Example: send your essay in a text field to the server. Send it as a plain -text field, but get the contents for it from a local file: - - curl -F "story=HTML message;type=text/html' \\ - -F '=)' -F '=@textfile.txt' ... smtp://example.com - -Data can be encoded for transfer using encoder=. Available encodings are -*binary* and *8bit* that do nothing else than adding the corresponding -Content-Transfer-Encoding header, *7bit* that only rejects 8-bit characters -with a transfer error, *quoted-printable* and *base64* that encodes data -according to the corresponding schemes, limiting lines length to 76 -characters. - -Example: send multipart mail with a quoted-printable text message and a -base64 attached file: - - curl -F '=text message;encoder=quoted-printable' \\ - -F '=@localfile;encoder=base64' ... smtp://example.com - -See further examples and details in the MANUAL. - -This option can be used multiple times. diff --git a/Engine/lib/curl/docs/cmdline-opts/ftp-account.d b/Engine/lib/curl/docs/cmdline-opts/ftp-account.d deleted file mode 100644 index 97be878a9..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/ftp-account.d +++ /dev/null @@ -1,15 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: ftp-account -Arg: -Help: Account data string -Protocols: FTP -Added: 7.13.0 -Category: ftp auth -Example: --ftp-account "mr.robot" ftp://example.com/ -See-also: user ---- -When an FTP server asks for "account data" after user name and password has -been provided, this data is sent off using the ACCT command. - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/ftp-alternative-to-user.d b/Engine/lib/curl/docs/cmdline-opts/ftp-alternative-to-user.d deleted file mode 100644 index 132ef07fe..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/ftp-alternative-to-user.d +++ /dev/null @@ -1,15 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: ftp-alternative-to-user -Arg: -Help: String to replace USER [name] -Protocols: FTP -Added: 7.15.5 -Category: ftp -Example: --ftp-alternative-to-user "U53r" ftp://example.com -See-also: ftp-account user ---- -If authenticating with the USER and PASS commands fails, send this command. -When connecting to Tumbleweed's Secure Transport server over FTPS using a -client certificate, using "SITE AUTH" will tell the server to retrieve the -username from the certificate. diff --git a/Engine/lib/curl/docs/cmdline-opts/ftp-create-dirs.d b/Engine/lib/curl/docs/cmdline-opts/ftp-create-dirs.d deleted file mode 100644 index de61bbec5..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/ftp-create-dirs.d +++ /dev/null @@ -1,13 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: ftp-create-dirs -Protocols: FTP SFTP -Help: Create the remote dirs if not present -See-also: create-dirs -Category: ftp sftp curl -Example: --ftp-create-dirs -T file ftp://example.com/remote/path/file -Added: 7.10.7 ---- -When an FTP or SFTP URL/operation uses a path that does not currently exist on -the server, the standard behavior of curl is to fail. Using this option, curl -will instead attempt to create missing directories. diff --git a/Engine/lib/curl/docs/cmdline-opts/ftp-method.d b/Engine/lib/curl/docs/cmdline-opts/ftp-method.d deleted file mode 100644 index 93f3868df..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/ftp-method.d +++ /dev/null @@ -1,28 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: ftp-method -Arg: -Help: Control CWD usage -Protocols: FTP -Added: 7.15.1 -Category: ftp -Example: --ftp-method multicwd ftp://example.com/dir1/dir2/file -Example: --ftp-method nocwd ftp://example.com/dir1/dir2/file -Example: --ftp-method singlecwd ftp://example.com/dir1/dir2/file -See-also: list-only ---- -Control what method curl should use to reach a file on an FTP(S) -server. The method argument should be one of the following alternatives: -.RS -.IP multicwd -curl does a single CWD operation for each path part in the given URL. For deep -hierarchies this means many commands. This is how RFC 1738 says it should -be done. This is the default but the slowest behavior. -.IP nocwd -curl does no CWD at all. curl will do SIZE, RETR, STOR etc and give a full -path to the server for all these commands. This is the fastest behavior. -.IP singlecwd -curl does one CWD with the full target directory and then operates on the file -"normally" (like in the multicwd case). This is somewhat more standards -compliant than 'nocwd' but without the full penalty of 'multicwd'. -.RE diff --git a/Engine/lib/curl/docs/cmdline-opts/ftp-pasv.d b/Engine/lib/curl/docs/cmdline-opts/ftp-pasv.d deleted file mode 100644 index a38fe0ef2..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/ftp-pasv.d +++ /dev/null @@ -1,20 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: ftp-pasv -Help: Use PASV/EPSV instead of PORT -Protocols: FTP -Added: 7.11.0 -See-also: disable-epsv -Category: ftp -Example: --ftp-pasv ftp://example.com/ ---- -Use passive mode for the data connection. Passive is the internal default -behavior, but using this option can be used to override a previous --ftp-port -option. - -If this option is used several times, only the first one is used. Undoing an -enforced passive really is not doable but you must then instead enforce the -correct --ftp-port again. - -Passive mode means that curl will try the EPSV command first and then PASV, -unless --disable-epsv is used. diff --git a/Engine/lib/curl/docs/cmdline-opts/ftp-port.d b/Engine/lib/curl/docs/cmdline-opts/ftp-port.d deleted file mode 100644 index e55052b85..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/ftp-port.d +++ /dev/null @@ -1,40 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: ftp-port -Arg:
-Help: Use PORT instead of PASV -Short: P -Protocols: FTP -See-also: ftp-pasv disable-eprt -Category: ftp -Example: -P - ftp:/example.com -Example: -P eth0 ftp:/example.com -Example: -P 192.168.0.2 ftp:/example.com -Added: 4.0 ---- -Reverses the default initiator/listener roles when connecting with FTP. This -option makes curl use active mode. curl then tells the server to connect back -to the client's specified address and port, while passive mode asks the server -to setup an IP address and port for it to connect to.
should be one -of: -.RS -.IP interface -e.g. "eth0" to specify which interface's IP address you want to use (Unix only) -.IP "IP address" -e.g. "192.168.10.1" to specify the exact IP address -.IP "host name" -e.g. "my.host.domain" to specify the machine -.IP "-" -make curl pick the same IP address that is already used for the control -connection -.RE - -If this option is used several times, the last one will be used. Disable the -use of PORT with --ftp-pasv. Disable the attempt to use the EPRT command -instead of PORT by using --disable-eprt. EPRT is really PORT++. - -You can also append ":[start]-[end]\&" to the right of the address, to tell -curl what TCP port range to use. That means you specify a port range, from a -lower to a higher number. A single number works as well, but do note that it -increases the risk of failure since the port may not be available. -(Added in 7.19.5) diff --git a/Engine/lib/curl/docs/cmdline-opts/ftp-pret.d b/Engine/lib/curl/docs/cmdline-opts/ftp-pret.d deleted file mode 100644 index 16053f6ac..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/ftp-pret.d +++ /dev/null @@ -1,13 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: ftp-pret -Help: Send PRET before PASV -Protocols: FTP -Added: 7.20.0 -Category: ftp -Example: --ftp-pret ftp://example.com/ -See-also: ftp-port ftp-pasv ---- -Tell curl to send a PRET command before PASV (and EPSV). Certain FTP servers, -mainly drftpd, require this non-standard command for directory listings as -well as up and downloads in PASV mode. diff --git a/Engine/lib/curl/docs/cmdline-opts/ftp-skip-pasv-ip.d b/Engine/lib/curl/docs/cmdline-opts/ftp-skip-pasv-ip.d deleted file mode 100644 index 89e7e5781..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/ftp-skip-pasv-ip.d +++ /dev/null @@ -1,18 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: ftp-skip-pasv-ip -Help: Skip the IP address for PASV -Protocols: FTP -Added: 7.14.2 -See-also: ftp-pasv -Category: ftp -Example: --ftp-skip-pasv-ip ftp://example.com/ ---- -Tell curl to not use the IP address the server suggests in its response -to curl's PASV command when curl connects the data connection. Instead curl -will re-use the same IP address it already uses for the control -connection. - -Since curl 7.74.0 this option is enabled by default. - -This option has no effect if PORT, EPRT or EPSV is used instead of PASV. diff --git a/Engine/lib/curl/docs/cmdline-opts/ftp-ssl-ccc-mode.d b/Engine/lib/curl/docs/cmdline-opts/ftp-ssl-ccc-mode.d deleted file mode 100644 index 39f5ad52d..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/ftp-ssl-ccc-mode.d +++ /dev/null @@ -1,15 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: ftp-ssl-ccc-mode -Arg: -Help: Set CCC mode -Protocols: FTP -Added: 7.16.2 -See-also: ftp-ssl-ccc -Category: ftp tls -Example: --ftp-ssl-ccc-mode active --ftp-ssl-ccc ftps://example.com/ ---- -Sets the CCC mode. The passive mode will not initiate the shutdown, but -instead wait for the server to do it, and will not reply to the shutdown from -the server. The active mode initiates the shutdown and waits for a reply from -the server. diff --git a/Engine/lib/curl/docs/cmdline-opts/ftp-ssl-ccc.d b/Engine/lib/curl/docs/cmdline-opts/ftp-ssl-ccc.d deleted file mode 100644 index ab1d49b1d..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/ftp-ssl-ccc.d +++ /dev/null @@ -1,14 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: ftp-ssl-ccc -Help: Send CCC after authenticating -Protocols: FTP -See-also: ssl ftp-ssl-ccc-mode -Added: 7.16.1 -Category: ftp tls -Example: --ftp-ssl-ccc ftps://example.com/ ---- -Use CCC (Clear Command Channel) Shuts down the SSL/TLS layer after -authenticating. The rest of the control channel communication will be -unencrypted. This allows NAT routers to follow the FTP transaction. The -default mode is passive. diff --git a/Engine/lib/curl/docs/cmdline-opts/ftp-ssl-control.d b/Engine/lib/curl/docs/cmdline-opts/ftp-ssl-control.d deleted file mode 100644 index b531d7abd..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/ftp-ssl-control.d +++ /dev/null @@ -1,13 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: ftp-ssl-control -Help: Require SSL/TLS for FTP login, clear for transfer -Protocols: FTP -Added: 7.16.0 -Category: ftp tls -Example: --ftp-ssl-control ftp://example.com -See-also: ssl ---- -Require SSL/TLS for the FTP login, clear for transfer. Allows secure -authentication, but non-encrypted data transfers for efficiency. Fails the -transfer if the server does not support SSL/TLS. diff --git a/Engine/lib/curl/docs/cmdline-opts/gen.pl b/Engine/lib/curl/docs/cmdline-opts/gen.pl deleted file mode 100755 index 01f9cf61a..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/gen.pl +++ /dev/null @@ -1,633 +0,0 @@ -#!/usr/bin/env perl -#*************************************************************************** -# _ _ ____ _ -# Project ___| | | | _ \| | -# / __| | | | |_) | | -# | (__| |_| | _ <| |___ -# \___|\___/|_| \_\_____| -# -# Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -# -# This software is licensed as described in the file COPYING, which -# you should have received as part of this distribution. The terms -# are also available at https://curl.se/docs/copyright.html. -# -# You may opt to use, copy, modify, merge, publish, distribute and/or sell -# copies of the Software, and permit persons to whom the Software is -# furnished to do so, under the terms of the COPYING file. -# -# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -# KIND, either express or implied. -# -# SPDX-License-Identifier: curl -# -########################################################################### - -=begin comment - -This script generates the manpage. - -Example: gen.pl [files] > curl.1 - -Dev notes: - -We open *input* files in :crlf translation (a no-op on many platforms) in -case we have CRLF line endings in Windows but a perl that defaults to LF. -Unfortunately it seems some perls like msysgit can't handle a global input-only -:crlf so it has to be specified on each file open for text input. - -=end comment -=cut - -my %optshort; -my %optlong; -my %helplong; -my %arglong; -my %redirlong; -my %protolong; -my %catlong; - -use POSIX qw(strftime); -my $date = strftime "%B %d %Y", localtime; -my $year = strftime "%Y", localtime; -my $version = "unknown"; - -open(INC, "<../../include/curl/curlver.h"); -while() { - if($_ =~ /^#define LIBCURL_VERSION \"([0-9.]*)/) { - $version = $1; - last; - } -} -close(INC); - -# get the long name version, return the man page string -sub manpageify { - my ($k)=@_; - my $l; - if($optlong{$k} ne "") { - # both short + long - $l = "\\fI-".$optlong{$k}.", --$k\\fP"; - } - else { - # only long - $l = "\\fI--$k\\fP"; - } - return $l; -} - -sub printdesc { - my @desc = @_; - my $exam = 0; - for my $d (@desc) { - if($d =~ /\(Added in ([0-9.]+)\)/i) { - my $ver = $1; - if(too_old($ver)) { - $d =~ s/ *\(Added in $ver\)//gi; - } - } - if($d !~ /^.\\"/) { - # **bold** - $d =~ s/\*\*([^ ]*)\*\*/\\fB$1\\fP/g; - # *italics* - $d =~ s/\*([^ ]*)\*/\\fI$1\\fP/g; - } - if(!$exam && ($d =~ /^ /)) { - # start of example - $exam = 1; - print ".nf\n"; # no-fill - } - elsif($exam && ($d !~ /^ /)) { - # end of example - $exam = 0; - print ".fi\n"; # fill-in - } - # skip lines starting with space (examples) - if($d =~ /^[^ ]/ && $d =~ /--/) { - for my $k (keys %optlong) { - my $l = manpageify($k); - $d =~ s/--\Q$k\E([^a-z0-9_-])([^a-zA-Z0-9_])/$l$1$2/; - } - } - # quote "bare" minuses in the output - $d =~ s/( |\\fI|^)--/$1\\-\\-/g; - $d =~ s/([ -]|\\fI|^)-/$1\\-/g; - # handle single quotes first on the line - $d =~ s/^(\s*)\'/$1\\(aq/; - # handle double quotes first on the line - $d =~ s/^(\s*)\"/$1\\(dq/; - print $d; - } - if($exam) { - print ".fi\n"; # fill-in - } -} - -sub seealso { - my($standalone, $data)=@_; - if($standalone) { - return sprintf - ".SH \"SEE ALSO\"\n$data\n"; - } - else { - return "See also $data. "; - } -} - -sub overrides { - my ($standalone, $data)=@_; - if($standalone) { - return ".SH \"OVERRIDES\"\n$data\n"; - } - else { - return $data; - } -} - -sub protocols { - my ($standalone, $data)=@_; - if($standalone) { - return ".SH \"PROTOCOLS\"\n$data\n"; - } - else { - return "($data) "; - } -} - -sub too_old { - my ($version)=@_; - my $a = 999999; - if($version =~ /^(\d+)\.(\d+)\.(\d+)/) { - $a = $1 * 1000 + $2 * 10 + $3; - } - elsif($version =~ /^(\d+)\.(\d+)/) { - $a = $1 * 1000 + $2 * 10; - } - if($a < 7300) { - # we consider everything before 7.30.0 to be too old to mention - # specific changes for - return 1; - } - return 0; -} - -sub added { - my ($standalone, $data)=@_; - if(too_old($data)) { - # don't mention ancient additions - return ""; - } - if($standalone) { - return ".SH \"ADDED\"\nAdded in curl version $data\n"; - } - else { - return "Added in $data. "; - } -} - -sub single { - my ($f, $standalone)=@_; - open(F, "<:crlf", "$f") || - return 1; - my $short; - my $long; - my $tags; - my $added; - my $protocols; - my $arg; - my $mutexed; - my $requires; - my $category; - my $seealso; - my $copyright; - my $spdx; - my @examples; # there can be more than one - my $magic; # cmdline special option - my $line; - while() { - $line++; - if(/^Short: *(.)/i) { - $short=$1; - } - elsif(/^Long: *(.*)/i) { - $long=$1; - } - elsif(/^Added: *(.*)/i) { - $added=$1; - } - elsif(/^Tags: *(.*)/i) { - $tags=$1; - } - elsif(/^Arg: *(.*)/i) { - $arg=$1; - } - elsif(/^Magic: *(.*)/i) { - $magic=$1; - } - elsif(/^Mutexed: *(.*)/i) { - $mutexed=$1; - } - elsif(/^Protocols: *(.*)/i) { - $protocols=$1; - } - elsif(/^See-also: *(.*)/i) { - $seealso=$1; - } - elsif(/^Requires: *(.*)/i) { - $requires=$1; - } - elsif(/^Category: *(.*)/i) { - $category=$1; - } - elsif(/^Example: *(.*)/i) { - push @examples, $1; - } - elsif(/^C: (.*)/i) { - $copyright=$1; - } - elsif(/^SPDX-License-Identifier: (.*)/i) { - $spdx=$1; - } - elsif(/^Help: *(.*)/i) { - ; - } - elsif(/^---/) { - if(!$long) { - print STDERR "ERROR: no 'Long:' in $f\n"; - return 1; - } - if(!$category) { - print STDERR "ERROR: no 'Category:' in $f\n"; - return 2; - } - if(!$examples[0]) { - print STDERR "$f:$line:1:ERROR: no 'Example:' present\n"; - return 2; - } - if(!$added) { - print STDERR "$f:$line:1:ERROR: no 'Added:' version present\n"; - return 2; - } - if(!$seealso) { - print STDERR "$f:$line:1:ERROR: no 'See-also:' field present\n"; - return 2; - } - if(!$copyright) { - print STDERR "$f:$line:1:ERROR: no 'C:' field present\n"; - return 2; - } - if(!$spdx) { - print STDERR "$f:$line:1:ERROR: no 'SPDX-License-Identifier:' field present\n"; - return 2; - } - last; - } - else { - chomp; - print STDERR "WARN: unrecognized line in $f, ignoring:\n:'$_';" - } - } - my @desc; - while() { - push @desc, $_; - } - close(F); - my $opt; - if(defined($short) && $long) { - $opt = "-$short, --$long"; - } - elsif($short && !$long) { - $opt = "-$short"; - } - elsif($long && !$short) { - $opt = "--$long"; - } - - if($arg) { - $opt .= " $arg"; - } - - # quote "bare" minuses in opt - $opt =~ s/( |^)--/$1\\-\\-/g; - $opt =~ s/( |^)-/$1\\-/g; - if($standalone) { - print ".TH curl 1 \"30 Nov 2016\" \"curl 7.52.0\" \"curl manual\"\n"; - print ".SH OPTION\n"; - print "curl $opt\n"; - } - else { - print ".IP \"$opt\"\n"; - } - if($protocols) { - print protocols($standalone, $protocols); - } - - if($standalone) { - print ".SH DESCRIPTION\n"; - } - - printdesc(@desc); - undef @desc; - - my @foot; - if($seealso) { - my @m=split(/ /, $seealso); - my $mstr; - my $and = 0; - my $num = scalar(@m); - if($num > 2) { - # use commas up to this point - $and = $num - 1; - } - my $i = 0; - for my $k (@m) { - if(!$helplong{$k}) { - print STDERR "$f:$line:1:WARN: see-also a non-existing option: $k\n"; - } - my $l = manpageify($k); - my $sep = " and"; - if($and && ($i < $and)) { - $sep = ","; - } - $mstr .= sprintf "%s$l", $mstr?"$sep ":""; - $i++; - } - push @foot, seealso($standalone, $mstr); - } - if($requires) { - my $l = manpageify($long); - push @foot, "$l requires that the underlying libcurl". - " was built to support $requires. "; - } - if($mutexed) { - my @m=split(/ /, $mutexed); - my $mstr; - for my $k (@m) { - if(!$helplong{$k}) { - print STDERR "WARN: $f mutexes a non-existing option: $k\n"; - } - my $l = manpageify($k); - $mstr .= sprintf "%s$l", $mstr?" and ":""; - } - push @foot, overrides($standalone, - "This option is mutually exclusive to $mstr. "); - } - if($examples[0]) { - my $s =""; - $s="s" if($examples[1]); - print "\nExample$s:\n.nf\n"; - foreach my $e (@examples) { - $e =~ s!\$URL!https://example.com!g; - print " curl $e\n"; - } - print ".fi\n"; - } - if($added) { - push @foot, added($standalone, $added); - } - if($foot[0]) { - print "\n"; - my $f = join("", @foot); - $f =~ s/ +\z//; # remove trailing space - print "$f\n"; - } - return 0; -} - -sub getshortlong { - my ($f)=@_; - open(F, "<:crlf", "$f"); - my $short; - my $long; - my $help; - my $arg; - my $protocols; - my $category; - while() { - if(/^Short: (.)/i) { - $short=$1; - } - elsif(/^Long: (.*)/i) { - $long=$1; - } - elsif(/^Help: (.*)/i) { - $help=$1; - } - elsif(/^Arg: (.*)/i) { - $arg=$1; - } - elsif(/^Protocols: (.*)/i) { - $protocols=$1; - } - elsif(/^Category: (.*)/i) { - $category=$1; - } - elsif(/^---/) { - last; - } - } - close(F); - if($short) { - $optshort{$short}=$long; - } - if($long) { - $optlong{$long}=$short; - $helplong{$long}=$help; - $arglong{$long}=$arg; - $protolong{$long}=$protocols; - $catlong{$long}=$category; - } -} - -sub indexoptions { - my (@files) = @_; - foreach my $f (@files) { - getshortlong($f); - } -} - -sub header { - my ($f)=@_; - open(F, "<:crlf", "$f"); - my @d; - while() { - s/%DATE/$date/g; - s/%VERSION/$version/g; - push @d, $_; - } - close(F); - printdesc(@d); -} - -sub listhelp { - print <, et al. - * - * This software is licensed as described in the file COPYING, which - * you should have received as part of this distribution. The terms - * are also available at https://curl.se/docs/copyright.html. - * - * You may opt to use, copy, modify, merge, publish, distribute and/or sell - * copies of the Software, and permit persons to whom the Software is - * furnished to do so, under the terms of the COPYING file. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - * SPDX-License-Identifier: curl - * - ***************************************************************************/ -#include "tool_setup.h" -#include "tool_help.h" - -/* - * DO NOT edit tool_listhelp.c manually. - * This source file is generated with the following command: - - cd \$srcroot/docs/cmdline-opts - ./gen.pl listhelp *.d > \$srcroot/src/tool_listhelp.c - */ - -const struct helptxt helptext[] = { -HEAD - ; - foreach my $f (sort keys %helplong) { - my $long = $f; - my $short = $optlong{$long}; - my @categories = split ' ', $catlong{$long}; - my $bitmask; - my $opt; - - if(defined($short) && $long) { - $opt = "-$short, --$long"; - } - elsif($long && !$short) { - $opt = " --$long"; - } - for my $i (0 .. $#categories) { - $bitmask .= 'CURLHELP_' . uc $categories[$i]; - # If not last element, append | - if($i < $#categories) { - $bitmask .= ' | '; - } - } - my $arg = $arglong{$long}; - if($arg) { - $opt .= " $arg"; - } - my $desc = $helplong{$f}; - $desc =~ s/\"/\\\"/g; # escape double quotes - - my $line = sprintf " {\"%s\",\n \"%s\",\n %s},\n", $opt, $desc, $bitmask; - - if(length($opt) > 78) { - print STDERR "WARN: the --$long name is too long\n"; - } - elsif(length($desc) > 78) { - print STDERR "WARN: the --$long description is too long\n"; - } - print $line; - } - print < [files]\n"; -} - -#------------------------------------------------------------------------ - -my $cmd = shift @ARGV; -my @files = @ARGV; # the rest are the files - -# learn all existing options -indexoptions(@files); - -getargs($cmd, @files); diff --git a/Engine/lib/curl/docs/cmdline-opts/get.d b/Engine/lib/curl/docs/cmdline-opts/get.d deleted file mode 100644 index 3e3d680f7..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/get.d +++ /dev/null @@ -1,23 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: get -Short: G -Help: Put the post data in the URL and use GET -Category: http upload -Example: --get $URL -Example: --get -d "tool=curl" -d "age=old" $URL -Example: --get -I -d "tool=curl" $URL -Added: 7.8.1 -See-also: data request ---- -When used, this option will make all data specified with --data, --data-binary -or --data-urlencode to be used in an HTTP GET request instead of the POST -request that otherwise would be used. The data will be appended to the URL -with a '?' separator. - -If used in combination with --head, the POST data will instead be appended to -the URL with a HEAD request. - -If this option is used several times, only the first one is used. This is -because undoing a GET does not make sense, but you should then instead enforce -the alternative method you prefer. diff --git a/Engine/lib/curl/docs/cmdline-opts/globoff.d b/Engine/lib/curl/docs/cmdline-opts/globoff.d deleted file mode 100644 index bf22f3270..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/globoff.d +++ /dev/null @@ -1,14 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: globoff -Short: g -Help: Disable URL sequences and ranges using {} and [] -Category: curl -Example: -g "https://example.com/{[]}}}}" -Added: 7.6 -See-also: config disable ---- -This option switches off the "URL globbing parser". When you set this option, -you can specify URLs that contain the letters {}[] without having curl itself -interpret them. Note that these letters are not normal legal URL contents but -they should be encoded according to the URI standard. diff --git a/Engine/lib/curl/docs/cmdline-opts/happy-eyeballs-timeout-ms.d b/Engine/lib/curl/docs/cmdline-opts/happy-eyeballs-timeout-ms.d deleted file mode 100644 index d631cbe40..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/happy-eyeballs-timeout-ms.d +++ /dev/null @@ -1,22 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: happy-eyeballs-timeout-ms -Arg: -Help: Time for IPv6 before trying IPv4 -Added: 7.59.0 -Category: connection -Example: --happy-eyeballs-timeout-ms 500 $URL -See-also: max-time connect-timeout ---- -Happy Eyeballs is an algorithm that attempts to connect to both IPv4 and IPv6 -addresses for dual-stack hosts, giving IPv6 a head-start of the specified -number of milliseconds. If the IPv6 address cannot be connected to within that -time, then a connection attempt is made to the IPv4 address in parallel. The -first connection to be established is the one that is used. - -The range of suggested useful values is limited. Happy Eyeballs RFC 6555 says -"It is RECOMMENDED that connection attempts be paced 150-250 ms apart to -balance human factors against network load." libcurl currently defaults to -200 ms. Firefox and Chrome currently default to 300 ms. - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/haproxy-protocol.d b/Engine/lib/curl/docs/cmdline-opts/haproxy-protocol.d deleted file mode 100644 index ed8b49f54..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/haproxy-protocol.d +++ /dev/null @@ -1,16 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: haproxy-protocol -Help: Send HAProxy PROXY protocol v1 header -Protocols: HTTP -Added: 7.60.0 -Category: http proxy -Example: --haproxy-protocol $URL -See-also: proxy ---- -Send a HAProxy PROXY protocol v1 header at the beginning of the -connection. This is used by some load balancers and reverse proxies to -indicate the client's true IP address and port. - -This option is primarily useful when sending test requests to a service that -expects this header. diff --git a/Engine/lib/curl/docs/cmdline-opts/head.d b/Engine/lib/curl/docs/cmdline-opts/head.d deleted file mode 100644 index 56fbf7ba6..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/head.d +++ /dev/null @@ -1,14 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: head -Short: I -Help: Show document info only -Protocols: HTTP FTP FILE -Category: http ftp file -Example: -I $URL -Added: 4.0 -See-also: get verbose trace-ascii ---- -Fetch the headers only! HTTP-servers feature the command HEAD which this uses -to get nothing but the header of a document. When used on an FTP or FILE file, -curl displays the file size and last modification time only. diff --git a/Engine/lib/curl/docs/cmdline-opts/header.d b/Engine/lib/curl/docs/cmdline-opts/header.d deleted file mode 100644 index a7841edb3..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/header.d +++ /dev/null @@ -1,46 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: header -Short: H -Arg:
-Help: Pass custom header(s) to server -Protocols: HTTP -Category: http -See-also: user-agent referer -Example: -H "X-First-Name: Joe" $URL -Example: -H "User-Agent: yes-please/2000" $URL -Example: -H "Host:" $URL -Added: 5.0 ---- -Extra header to include in the request when sending HTTP to a server. You may -specify any number of extra headers. Note that if you should add a custom -header that has the same name as one of the internal ones curl would use, your -externally set header will be used instead of the internal one. This allows -you to make even trickier stuff than curl would normally do. You should not -replace internally set headers without knowing perfectly well what you are -doing. Remove an internal header by giving a replacement without content on -the right side of the colon, as in: -H "Host:". If you send the custom -header with no-value then its header must be terminated with a semicolon, such -as \-H "X-Custom-Header;" to send "X-Custom-Header:". - -curl will make sure that each header you add/replace is sent with the proper -end-of-line marker, you should thus **not** add that as a part of the header -content: do not add newlines or carriage returns, they will only mess things -up for you. - -This option can take an argument in @filename style, which then adds a header -for each line in the input file. Using @- will make curl read the header file -from stdin. Added in 7.55.0. - -You need --proxy-header to send custom headers intended for an HTTP -proxy. Added in 7.37.0. - -Passing on a "Transfer-Encoding: chunked" header when doing an HTTP request -with a request body, will make curl send the data using chunked encoding. - -**WARNING**: headers set with this option will be set in all requests - even -after redirects are followed, like when told with --location. This can lead to -the header being sent to other hosts than the original host, so sensitive -headers should be used with caution combined with following redirects. - -This option can be used multiple times to add/replace/remove multiple headers. diff --git a/Engine/lib/curl/docs/cmdline-opts/help.d b/Engine/lib/curl/docs/cmdline-opts/help.d deleted file mode 100644 index d1a794df3..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/help.d +++ /dev/null @@ -1,17 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: help -Arg: -Short: h -Help: Get help for commands -Category: important curl -Example: --help all -Added: 4.0 -See-also: verbose ---- -Usage help. This lists all commands of the . -If no arg was provided, curl will display the most important -command line arguments. -If the argument "all" was provided, curl will display all options available. -If the argument "category" was provided, curl will display all categories and -their meanings. diff --git a/Engine/lib/curl/docs/cmdline-opts/hostpubmd5.d b/Engine/lib/curl/docs/cmdline-opts/hostpubmd5.d deleted file mode 100644 index f0fd9942d..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/hostpubmd5.d +++ /dev/null @@ -1,14 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: hostpubmd5 -Arg: -Help: Acceptable MD5 hash of the host public key -Protocols: SFTP SCP -Added: 7.17.1 -Category: sftp scp -Example: --hostpubmd5 e5c1c49020640a5ab0f2034854c321a8 sftp://example.com/ -See-also: hostpubsha256 ---- -Pass a string containing 32 hexadecimal digits. The string should -be the 128 bit MD5 checksum of the remote host's public key, curl will refuse -the connection with the host unless the md5sums match. diff --git a/Engine/lib/curl/docs/cmdline-opts/hostpubsha256.d b/Engine/lib/curl/docs/cmdline-opts/hostpubsha256.d deleted file mode 100644 index 6742ba511..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/hostpubsha256.d +++ /dev/null @@ -1,14 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: hostpubsha256 -Arg: -Help: Acceptable SHA256 hash of the host public key -Protocols: SFTP SCP -Added: 7.80.0 -Category: sftp scp -Example: --hostpubsha256 NDVkMTQxMGQ1ODdmMjQ3MjczYjAyOTY5MmRkMjVmNDQ= sftp://example.com/ -See-also: hostpubmd5 ---- -Pass a string containing a Base64-encoded SHA256 hash of the remote -host's public key. Curl will refuse the connection with the host -unless the hashes match. diff --git a/Engine/lib/curl/docs/cmdline-opts/hsts.d b/Engine/lib/curl/docs/cmdline-opts/hsts.d deleted file mode 100644 index 1b3fcede3..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/hsts.d +++ /dev/null @@ -1,20 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: hsts -Arg: -Protocols: HTTPS -Help: Enable HSTS with this cache file -Added: 7.74.0 -Category: http -Example: --hsts cache.txt $URL -See-also: proto ---- -This option enables HSTS for the transfer. If the file name points to an -existing HSTS cache file, that will be used. After a completed transfer, the -cache will be saved to the file name again if it has been modified. - -Specify a "" file name (zero length) to avoid loading/saving and make curl -just handle HSTS in memory. - -If this option is used several times, curl will load contents from all the -files but the last one will be used for saving. diff --git a/Engine/lib/curl/docs/cmdline-opts/http0.9.d b/Engine/lib/curl/docs/cmdline-opts/http0.9.d deleted file mode 100644 index 028a43f80..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/http0.9.d +++ /dev/null @@ -1,18 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: http0.9 -Tags: Versions -Protocols: HTTP -Help: Allow HTTP 0.9 responses -Category: http -Example: --http0.9 $URL -Added: 7.64.0 -See-also: http1.1 http2 http3 ---- -Tells curl to be fine with HTTP version 0.9 response. - -HTTP/0.9 is a completely headerless response and therefore you can also -connect with this to non-HTTP servers and still get a response since curl will -simply transparently downgrade - if allowed. - -Since curl 7.66.0, HTTP/0.9 is disabled by default. diff --git a/Engine/lib/curl/docs/cmdline-opts/http1.0.d b/Engine/lib/curl/docs/cmdline-opts/http1.0.d deleted file mode 100644 index 1a8c96a79..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/http1.0.d +++ /dev/null @@ -1,15 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Short: 0 -Long: http1.0 -Tags: Versions -Protocols: HTTP -Added: 7.9.1 -Mutexed: http1.1 http2 http2-prior-knowledge http3 -Help: Use HTTP 1.0 -Category: http -Example: --http1.0 $URL -See-also: http0.9 http1.1 ---- -Tells curl to use HTTP version 1.0 instead of using its internally preferred -HTTP version. diff --git a/Engine/lib/curl/docs/cmdline-opts/http1.1.d b/Engine/lib/curl/docs/cmdline-opts/http1.1.d deleted file mode 100644 index a4f0468f3..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/http1.1.d +++ /dev/null @@ -1,13 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: http1.1 -Tags: Versions -Protocols: HTTP -Added: 7.33.0 -Mutexed: http1.0 http2 http2-prior-knowledge http3 -Help: Use HTTP 1.1 -Category: http -Example: --http1.1 $URL -See-also: http1.0 http0.9 ---- -Tells curl to use HTTP version 1.1. diff --git a/Engine/lib/curl/docs/cmdline-opts/http2-prior-knowledge.d b/Engine/lib/curl/docs/cmdline-opts/http2-prior-knowledge.d deleted file mode 100644 index 77d2d5dbf..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/http2-prior-knowledge.d +++ /dev/null @@ -1,17 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: http2-prior-knowledge -Tags: Versions -Protocols: HTTP -Added: 7.49.0 -Mutexed: http1.1 http1.0 http2 http3 -Requires: HTTP/2 -Help: Use HTTP 2 without HTTP/1.1 Upgrade -Category: http -Example: --http2-prior-knowledge $URL -See-also: http2 http3 ---- -Tells curl to issue its non-TLS HTTP requests using HTTP/2 without HTTP/1.1 -Upgrade. It requires prior knowledge that the server supports HTTP/2 straight -away. HTTPS requests will still do HTTP/2 the standard way with negotiated -protocol version in the TLS handshake. diff --git a/Engine/lib/curl/docs/cmdline-opts/http2.d b/Engine/lib/curl/docs/cmdline-opts/http2.d deleted file mode 100644 index 988cba5be..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/http2.d +++ /dev/null @@ -1,25 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: http2 -Tags: Versions -Protocols: HTTP -Added: 7.33.0 -Mutexed: http1.1 http1.0 http2-prior-knowledge http3 -Requires: HTTP/2 -See-also: no-alpn -Help: Use HTTP 2 -See-also: http1.1 http3 -Category: http -Example: --http2 $URL ---- -Tells curl to use HTTP version 2. - -For HTTPS, this means curl will attempt to negotiate HTTP/2 in the TLS -handshake. curl does this by default. - -For HTTP, this means curl will attempt to upgrade the request to HTTP/2 using -the Upgrade: request header. - -When curl uses HTTP/2 over HTTPS, it does not itself insist on TLS 1.2 or -higher even though that is required by the specification. A user can add this -version requirement with --tlsv1.2. diff --git a/Engine/lib/curl/docs/cmdline-opts/http3.d b/Engine/lib/curl/docs/cmdline-opts/http3.d deleted file mode 100644 index 6df001ce2..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/http3.d +++ /dev/null @@ -1,22 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: http3 -Tags: Versions -Protocols: HTTP -Added: 7.66.0 -Mutexed: http1.1 http1.0 http2 http2-prior-knowledge -Requires: HTTP/3 -Help: Use HTTP v3 -See-also: http1.1 http2 -Category: http -Example: --http3 $URL ---- -**WARNING**: this option is experimental. Do not use in production. - -Tells curl to use HTTP version 3 directly to the host and port number used in -the URL. A normal HTTP/3 transaction will be done to a host and then get -redirected via Alt-Svc, but this option allows a user to circumvent that when -you know that the target speaks HTTP/3 on the given host and port. - -This option will make curl fail if a QUIC connection cannot be established, it -cannot fall back to a lower HTTP version on its own. diff --git a/Engine/lib/curl/docs/cmdline-opts/ignore-content-length.d b/Engine/lib/curl/docs/cmdline-opts/ignore-content-length.d deleted file mode 100644 index 501312175..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/ignore-content-length.d +++ /dev/null @@ -1,18 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: ignore-content-length -Help: Ignore the size of the remote resource -Protocols: FTP HTTP -Category: http ftp -Example: --ignore-content-length $URL -Added: 7.14.1 -See-also: ftp-skip-pasv-ip ---- -For HTTP, Ignore the Content-Length header. This is particularly useful for -servers running Apache 1.x, which will report incorrect Content-Length for -files larger than 2 gigabytes. - -For FTP (since 7.46.0), skip the RETR command to figure out the size before -downloading a file. - -This option does not work for HTTP if libcurl was built to use hyper. diff --git a/Engine/lib/curl/docs/cmdline-opts/include.d b/Engine/lib/curl/docs/cmdline-opts/include.d deleted file mode 100644 index a7888051e..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/include.d +++ /dev/null @@ -1,15 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: include -Short: i -Help: Include protocol response headers in the output -See-also: verbose -Category: important verbose -Example: -i $URL -Added: 4.8 ---- -Include the HTTP response headers in the output. The HTTP response headers can -include things like server name, cookies, date of the document, HTTP version -and more... - -To view the request headers, consider the --verbose option. diff --git a/Engine/lib/curl/docs/cmdline-opts/insecure.d b/Engine/lib/curl/docs/cmdline-opts/insecure.d deleted file mode 100644 index 059fde5dd..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/insecure.d +++ /dev/null @@ -1,27 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: insecure -Short: k -Help: Allow insecure server connections -Protocols: TLS SFTP SCP -See-also: proxy-insecure cacert capath -Category: tls sftp scp -Example: --insecure $URL -Added: 7.10 ---- -By default, every secure connection curl makes is verified to be secure before -the transfer takes place. This option makes curl skip the verification step -and proceed without checking. - -When this option is not used for protocols using TLS, curl verifies the -server's TLS certificate before it continues: that the certificate contains -the right name which matches the host name used in the URL and that the -certificate has been signed by a CA certificate present in the cert store. -See this online resource for further details: - https://curl.se/docs/sslcerts.html - -For SFTP and SCP, this option makes curl skip the *known_hosts* verification. -*known_hosts* is a file normally stored in the user's home directory in the -".ssh" subdirectory, which contains host names and their public keys. - -**WARNING**: using this option makes the transfer insecure. diff --git a/Engine/lib/curl/docs/cmdline-opts/interface.d b/Engine/lib/curl/docs/cmdline-opts/interface.d deleted file mode 100644 index 0273a7086..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/interface.d +++ /dev/null @@ -1,20 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: interface -Arg: -Help: Use network INTERFACE (or address) -See-also: dns-interface -Category: connection -Example: --interface eth0 $URL -Added: 7.3 ---- -Perform an operation using a specified interface. You can enter interface -name, IP address or host name. An example could look like: - - curl --interface eth0:1 https://www.example.com/ - -If this option is used several times, the last one will be used. - -On Linux it can be used to specify a VRF, but the binary needs to either -have CAP_NET_RAW or to be run as root. More information about Linux VRF: -https://www.kernel.org/doc/Documentation/networking/vrf.txt diff --git a/Engine/lib/curl/docs/cmdline-opts/ipv4.d b/Engine/lib/curl/docs/cmdline-opts/ipv4.d deleted file mode 100644 index 133493df2..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/ipv4.d +++ /dev/null @@ -1,16 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Short: 4 -Long: ipv4 -Tags: Versions -Protocols: -Added: 7.10.8 -Mutexed: ipv6 -Requires: -See-also: http1.1 http2 -Help: Resolve names to IPv4 addresses -Category: connection dns -Example: --ipv4 $URL ---- -This option tells curl to use IPv4 addresses only, and not for example try -IPv6. diff --git a/Engine/lib/curl/docs/cmdline-opts/ipv6.d b/Engine/lib/curl/docs/cmdline-opts/ipv6.d deleted file mode 100644 index 55c1ad1c4..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/ipv6.d +++ /dev/null @@ -1,16 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Short: 6 -Long: ipv6 -Tags: Versions -Protocols: -Added: 7.10.8 -Mutexed: ipv4 -Requires: -See-also: http1.1 http2 -Help: Resolve names to IPv6 addresses -Category: connection dns -Example: --ipv6 $URL ---- -This option tells curl to use IPv6 addresses only, and not for example try -IPv4. diff --git a/Engine/lib/curl/docs/cmdline-opts/json.d b/Engine/lib/curl/docs/cmdline-opts/json.d deleted file mode 100644 index 6d7393519..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/json.d +++ /dev/null @@ -1,34 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: json -Arg: -Help: HTTP POST JSON -Protocols: HTTP -See-also: data-binary data-raw -Mutexed: form head upload-file -Category: http post upload -Example: --json '{ "drink": "coffe" }' $URL -Example: --json '{ "drink":' --json ' "coffe" }' $URL -Example: --json @prepared $URL -Example: --json @- $URL < json.txt -Added: 7.82.0 ---- -Sends the specified JSON data in a POST request to the HTTP server. --json -works as a shortcut for passing on these three options: - - --data [arg] - --header "Content-Type: application/json" - --header "Accept: application/json" - -There is **no verification** that the passed in data is actual JSON or that -the syntax is correct. - -If you start the data with the letter @, the rest should be a file name to -read the data from, or a single dash (-) if you want curl to read the data -from stdin. Posting data from a file named 'foobar' would thus be done with ---json @foobar and to instead read the data from stdin, use --json @-. - -If this option is used more than once on the same command line, the additional -data pieces will be concatenated to the previous before sending. - -The headers this option sets can be overridden with --header as usual. diff --git a/Engine/lib/curl/docs/cmdline-opts/junk-session-cookies.d b/Engine/lib/curl/docs/cmdline-opts/junk-session-cookies.d deleted file mode 100644 index 937f84426..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/junk-session-cookies.d +++ /dev/null @@ -1,15 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: junk-session-cookies -Short: j -Help: Ignore session cookies read from file -Protocols: HTTP -See-also: cookie cookie-jar -Category: http -Example: --junk-session-cookies -b cookies.txt $URL -Added: 7.9.7 ---- -When curl is told to read cookies from a given file, this option will make it -discard all "session cookies". This will basically have the same effect as if -a new session is started. Typical browsers always discard session cookies when -they are closed down. diff --git a/Engine/lib/curl/docs/cmdline-opts/keepalive-time.d b/Engine/lib/curl/docs/cmdline-opts/keepalive-time.d deleted file mode 100644 index b135e7462..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/keepalive-time.d +++ /dev/null @@ -1,21 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: keepalive-time -Arg: -Help: Interval time for keepalive probes -Added: 7.18.0 -Category: connection -Example: --keepalive-time 20 $URL -See-also: no-keepalive max-time ---- -This option sets the time a connection needs to remain idle before sending -keepalive probes and the time between individual keepalive probes. It is -currently effective on operating systems offering the TCP_KEEPIDLE and -TCP_KEEPINTVL socket options (meaning Linux, recent AIX, HP-UX and more). -Keepalives are used by the TCP stack to detect broken networks on idle -connections. The number of missed keepalive probes before declaring the -connection down is OS dependent and is commonly 9 or 10. This option has no -effect if --no-keepalive is used. - -If this option is used several times, the last one will be used. If -unspecified, the option defaults to 60 seconds. diff --git a/Engine/lib/curl/docs/cmdline-opts/key-type.d b/Engine/lib/curl/docs/cmdline-opts/key-type.d deleted file mode 100644 index d3ef4e079..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/key-type.d +++ /dev/null @@ -1,15 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: key-type -Arg: -Help: Private key file type (DER/PEM/ENG) -Protocols: TLS -Category: tls -Example: --key-type DER --key here $URL -Added: 7.9.3 -See-also: key ---- -Private key file type. Specify which type your --key provided private key -is. DER, PEM, and ENG are supported. If not specified, PEM is assumed. - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/key.d b/Engine/lib/curl/docs/cmdline-opts/key.d deleted file mode 100644 index 46b7b8fbd..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/key.d +++ /dev/null @@ -1,28 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: key -Arg: -Protocols: TLS SSH -Help: Private key file name -Category: tls ssh -Example: --cert certificate --key here $URL -Added: 7.9.3 -See-also: key-type cert ---- -Private key file name. Allows you to provide your private key in this separate -file. For SSH, if not specified, curl tries the following candidates in order: -'~/.ssh/id_rsa', '~/.ssh/id_dsa', './id_rsa', './id_dsa'. - -If curl is built against OpenSSL library, and the engine pkcs11 is available, -then a PKCS#11 URI (RFC 7512) can be used to specify a private key located in a -PKCS#11 device. A string beginning with "pkcs11:" will be interpreted as a -PKCS#11 URI. If a PKCS#11 URI is provided, then the --engine option will be set -as "pkcs11" if none was provided and the --key-type option will be set as -"ENG" if none was provided. - -If curl is built against Secure Transport or Schannel then this option is -ignored for TLS protocols (HTTPS, etc). Those backends expect the private key -to be already present in the keychain or PKCS#12 file containing the -certificate. - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/krb.d b/Engine/lib/curl/docs/cmdline-opts/krb.d deleted file mode 100644 index 0ba97a790..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/krb.d +++ /dev/null @@ -1,17 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: krb -Arg: -Help: Enable Kerberos with security -Protocols: FTP -Requires: Kerberos -Category: ftp -Example: --krb clear ftp://example.com/ -Added: 7.3 -See-also: delegation ssl ---- -Enable Kerberos authentication and use. The level must be entered and should -be one of 'clear', 'safe', 'confidential', or 'private'. Should you use a -level that is not one of these, 'private' will instead be used. - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/libcurl.d b/Engine/lib/curl/docs/cmdline-opts/libcurl.d deleted file mode 100644 index 24a1b103a..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/libcurl.d +++ /dev/null @@ -1,19 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: libcurl -Arg: -Help: Dump libcurl equivalent code of this command line -Added: 7.16.1 -Category: curl -Example: --libcurl client.c $URL -See-also: verbose ---- -Append this option to any ordinary curl command line, and you will get -libcurl-using C source code written to the file that does the equivalent -of what your command-line operation does! - -This option is global and does not need to be specified for each use of ---next. - -If this option is used several times, the last given file name will be -used. diff --git a/Engine/lib/curl/docs/cmdline-opts/limit-rate.d b/Engine/lib/curl/docs/cmdline-opts/limit-rate.d deleted file mode 100644 index e25f4ac41..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/limit-rate.d +++ /dev/null @@ -1,30 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: limit-rate -Arg: -Help: Limit transfer speed to RATE -Category: connection -Example: --limit-rate 100K $URL -Example: --limit-rate 1000 $URL -Example: --limit-rate 10M $URL -Added: 7.10 -See-also: speed-limit speed-time ---- -Specify the maximum transfer rate you want curl to use - for both downloads -and uploads. This feature is useful if you have a limited pipe and you would like -your transfer not to use your entire bandwidth. To make it slower than it -otherwise would be. - -The given speed is measured in bytes/second, unless a suffix is appended. -Appending 'k' or 'K' will count the number as kilobytes, 'm' or 'M' makes it -megabytes, while 'g' or 'G' makes it gigabytes. The suffixes (k, M, G, T, P) -are 1024 based. For example 1k is 1024. Examples: 200K, 3m and 1G. - -The rate limiting logic works on averaging the transfer speed to no more than -the set threshold over a period of multiple seconds. - -If you also use the --speed-limit option, that option will take precedence and -might cripple the rate-limiting slightly, to help keeping the speed-limit -logic working. - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/list-only.d b/Engine/lib/curl/docs/cmdline-opts/list-only.d deleted file mode 100644 index 74c88e44a..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/list-only.d +++ /dev/null @@ -1,29 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: list-only -Short: l -Protocols: FTP POP3 -Help: List only mode -Added: 4.0 -Category: ftp pop3 -Example: --list-only ftp://example.com/dir/ -See-also: quote request ---- -(FTP) -When listing an FTP directory, this switch forces a name-only view. This is -especially useful if the user wants to machine-parse the contents of an FTP -directory since the normal directory view does not use a standard look or -format. When used like this, the option causes an NLST command to be sent to -the server instead of LIST. - -Note: Some FTP servers list only files in their response to NLST; they do not -include sub-directories and symbolic links. - -(POP3) -When retrieving a specific email from POP3, this switch forces a LIST command -to be performed instead of RETR. This is particularly useful if the user wants -to see if a specific message-id exists on the server and what size it is. - -Note: When combined with --request, this option can be used to send a UIDL -command instead, so the user may use the email's unique identifier rather than -its message-id to make the request. diff --git a/Engine/lib/curl/docs/cmdline-opts/local-port.d b/Engine/lib/curl/docs/cmdline-opts/local-port.d deleted file mode 100644 index 55961f825..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/local-port.d +++ /dev/null @@ -1,14 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: local-port -Arg: -Help: Force use of RANGE for local port numbers -Added: 7.15.2 -Category: connection -Example: --local-port 1000-3000 $URL -See-also: globoff ---- -Set a preferred single number or range (FROM-TO) of local port numbers to use -for the connection(s). Note that port numbers by nature are a scarce resource -that will be busy at times so setting this range to something too narrow might -cause unnecessary connection setup failures. diff --git a/Engine/lib/curl/docs/cmdline-opts/location-trusted.d b/Engine/lib/curl/docs/cmdline-opts/location-trusted.d deleted file mode 100644 index cd920f42c..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/location-trusted.d +++ /dev/null @@ -1,14 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: location-trusted -Help: Like --location, and send auth to other hosts -Protocols: HTTP -See-also: user -Category: http auth -Example: --location-trusted -u user:password $URL -Added: 7.10.4 ---- -Like --location, but will allow sending the name + password to all hosts that -the site may redirect to. This may or may not introduce a security breach if -the site redirects you to a site to which you will send your authentication -info (which is plaintext in the case of HTTP Basic authentication). diff --git a/Engine/lib/curl/docs/cmdline-opts/location.d b/Engine/lib/curl/docs/cmdline-opts/location.d deleted file mode 100644 index 7b532effa..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/location.d +++ /dev/null @@ -1,31 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: location -Short: L -Help: Follow redirects -Protocols: HTTP -Category: http -Example: -L $URL -Added: 4.9 -See-also: resolve alt-svc ---- -If the server reports that the requested page has moved to a different -location (indicated with a Location: header and a 3XX response code), this -option will make curl redo the request on the new place. If used together with ---include or --head, headers from all requested pages will be shown. When -authentication is used, curl only sends its credentials to the initial -host. If a redirect takes curl to a different host, it will not be able to -intercept the user+password. See also --location-trusted on how to change -this. You can limit the amount of redirects to follow by using the ---max-redirs option. - -When curl follows a redirect and if the request is a POST, it will send the -following request with a GET if the HTTP response was 301, 302, or 303. If the -response code was any other 3xx code, curl will re-send the following request -using the same unmodified method. - -You can tell curl to not change POST requests to GET after a 30x response by -using the dedicated options for that: --post301, --post302 and --post303. - -The method set with --request overrides the method curl would otherwise select -to use. diff --git a/Engine/lib/curl/docs/cmdline-opts/login-options.d b/Engine/lib/curl/docs/cmdline-opts/login-options.d deleted file mode 100644 index 2c244e4c9..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/login-options.d +++ /dev/null @@ -1,19 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: login-options -Arg: -Protocols: IMAP LDAP POP3 SMTP -Help: Server login options -Added: 7.34.0 -Category: imap pop3 smtp auth -Example: --login-options 'AUTH=*' imap://example.com -See-also: user ---- -Specify the login options to use during server authentication. - -You can use login options to specify protocol specific options that may be -used during authentication. At present only IMAP, POP3 and SMTP support -login options. For more information about login options please see RFC -2384, RFC 5092 and IETF draft draft-earhart-url-smtp-00.txt - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/mail-auth.d b/Engine/lib/curl/docs/cmdline-opts/mail-auth.d deleted file mode 100644 index d077a5edd..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/mail-auth.d +++ /dev/null @@ -1,14 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: mail-auth -Arg:
-Protocols: SMTP -Help: Originator address of the original email -Added: 7.25.0 -See-also: mail-rcpt mail-from -Category: smtp -Example: --mail-auth user@example.come -T mail smtp://example.com/ ---- -Specify a single address. This will be used to specify the authentication -address (identity) of a submitted message that is being relayed to another -server. diff --git a/Engine/lib/curl/docs/cmdline-opts/mail-from.d b/Engine/lib/curl/docs/cmdline-opts/mail-from.d deleted file mode 100644 index 266360050..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/mail-from.d +++ /dev/null @@ -1,12 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: mail-from -Arg:
-Help: Mail from this address -Protocols: SMTP -Added: 7.20.0 -See-also: mail-rcpt mail-auth -Category: smtp -Example: --mail-from user@example.com -T mail smtp://example.com/ ---- -Specify a single address that the given mail should get sent from. diff --git a/Engine/lib/curl/docs/cmdline-opts/mail-rcpt-allowfails.d b/Engine/lib/curl/docs/cmdline-opts/mail-rcpt-allowfails.d deleted file mode 100644 index 6e1f6f820..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/mail-rcpt-allowfails.d +++ /dev/null @@ -1,21 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: mail-rcpt-allowfails -Help: Allow RCPT TO command to fail for some recipients -Protocols: SMTP -Added: 7.69.0 -Category: smtp -Example: --mail-rcpt-allowfails --mail-rcpt dest@example.com smtp://example.com -See-also: mail-rcpt ---- -When sending data to multiple recipients, by default curl will abort SMTP -conversation if at least one of the recipients causes RCPT TO command to -return an error. - -The default behavior can be changed by passing --mail-rcpt-allowfails -command-line option which will make curl ignore errors and proceed with the -remaining valid recipients. - -If all recipients trigger RCPT TO failures and this flag is specified, curl -will still abort the SMTP conversation and return the error received from to -the last RCPT TO command. diff --git a/Engine/lib/curl/docs/cmdline-opts/mail-rcpt.d b/Engine/lib/curl/docs/cmdline-opts/mail-rcpt.d deleted file mode 100644 index 1890f901a..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/mail-rcpt.d +++ /dev/null @@ -1,21 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: mail-rcpt -Arg:
-Help: Mail to this address -Protocols: SMTP -Added: 7.20.0 -Category: smtp -Example: --mail-rcpt user@example.net smtp://example.com -See-also: mail-rcpt-allowfails ---- -Specify a single email address, user name or mailing list name. Repeat this -option several times to send to multiple recipients. - -When performing an address verification (VRFY command), the recipient should be -specified as the user name or user name and domain (as per Section 3.5 of -RFC5321). (Added in 7.34.0) - -When performing a mailing list expand (EXPN command), the recipient should be -specified using the mailing list name, such as "Friends" or "London-Office". -(Added in 7.34.0) diff --git a/Engine/lib/curl/docs/cmdline-opts/manual.d b/Engine/lib/curl/docs/cmdline-opts/manual.d deleted file mode 100644 index 7becf1cec..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/manual.d +++ /dev/null @@ -1,11 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: manual -Short: M -Help: Display the full manual -Category: curl -Example: --manual -Added: 5.2 -See-also: verbose libcurl trace ---- -Manual. Display the huge help text. diff --git a/Engine/lib/curl/docs/cmdline-opts/max-filesize.d b/Engine/lib/curl/docs/cmdline-opts/max-filesize.d deleted file mode 100644 index 8ed66e9f7..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/max-filesize.d +++ /dev/null @@ -1,22 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: max-filesize -Arg: -Help: Maximum file size to download -Protocols: FTP HTTP MQTT -See-also: limit-rate -Category: connection -Example: --max-filesize 100K $URL -Added: 7.10.8 ---- -Specify the maximum size (in bytes) of a file to download. If the file -requested is larger than this value, the transfer will not start and curl will -return with exit code 63. - -A size modifier may be used. For example, Appending 'k' or 'K' will count the -number as kilobytes, 'm' or 'M' makes it megabytes, while 'g' or 'G' makes it -gigabytes. Examples: 200K, 3m and 1G. (Added in 7.58.0) - -**NOTE**: The file size is not always known prior to download, and for such -files this option has no effect even if the file transfer ends up being larger -than this given limit. \ No newline at end of file diff --git a/Engine/lib/curl/docs/cmdline-opts/max-redirs.d b/Engine/lib/curl/docs/cmdline-opts/max-redirs.d deleted file mode 100644 index fc5d5c835..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/max-redirs.d +++ /dev/null @@ -1,16 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: max-redirs -Arg: -Help: Maximum number of redirects allowed -Protocols: HTTP -Category: http -Example: --max-redirs 3 --location $URL -Added: 7.5 -See-also: location ---- -Set maximum number of redirections to follow. When --location is used, to -prevent curl from following too many redirects, by default, the limit is -set to 50 redirects. Set this option to -1 to make it unlimited. - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/max-time.d b/Engine/lib/curl/docs/cmdline-opts/max-time.d deleted file mode 100644 index c5362fc5e..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/max-time.d +++ /dev/null @@ -1,23 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: max-time -Short: m -Arg: -Help: Maximum time allowed for transfer -See-also: connect-timeout retry-max-time -Category: connection -Example: --max-time 10 $URL -Example: --max-time 2.92 $URL -Added: 4.0 ---- -Maximum time in seconds that you allow each transfer to take. This is -useful for preventing your batch jobs from hanging for hours due to slow -networks or links going down. Since 7.32.0, this option accepts decimal -values, but the actual timeout will decrease in accuracy as the specified -timeout increases in decimal precision. - -If you enable retrying the transfer (--retry) then the maximum time counter is -reset each time the transfer is retried. You can use --retry-max-time to limit -the retry time. - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/metalink.d b/Engine/lib/curl/docs/cmdline-opts/metalink.d deleted file mode 100644 index c2677f05d..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/metalink.d +++ /dev/null @@ -1,11 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: metalink -Help: Process given URLs as metalink XML file -Added: 7.27.0 -Category: misc -Example: --metalink file $URL -See-also: parallel ---- -This option was previously used to specify a metalink resource. Metalink -support has been disabled in curl since 7.78.0 for security reasons. diff --git a/Engine/lib/curl/docs/cmdline-opts/negotiate.d b/Engine/lib/curl/docs/cmdline-opts/negotiate.d deleted file mode 100644 index c2d5f8a03..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/negotiate.d +++ /dev/null @@ -1,20 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: negotiate -Help: Use HTTP Negotiate (SPNEGO) authentication -Protocols: HTTP -See-also: basic ntlm anyauth proxy-negotiate -Category: auth http -Example: --negotiate -u : $URL -Added: 7.10.6 ---- -Enables Negotiate (SPNEGO) authentication. - -This option requires a library built with GSS-API or SSPI support. Use ---version to see if your curl supports GSS-API/SSPI or SPNEGO. - -When using this option, you must also provide a fake --user option to activate -the authentication code properly. Sending a '-u :' is enough as the user name -and password from the --user option are not actually used. - -If this option is used several times, only the first one is used. diff --git a/Engine/lib/curl/docs/cmdline-opts/netrc-file.d b/Engine/lib/curl/docs/cmdline-opts/netrc-file.d deleted file mode 100644 index 2c9865590..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/netrc-file.d +++ /dev/null @@ -1,17 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: netrc-file -Help: Specify FILE for netrc -Arg: -Added: 7.21.5 -Mutexed: netrc -Category: curl -Example: --netrc-file netrc $URL -See-also: netrc user config ---- -This option is similar to --netrc, except that you provide the path (absolute -or relative) to the netrc file that curl should use. You can only specify one -netrc file per invocation. If several --netrc-file options are provided, -the last one will be used. - -It will abide by --netrc-optional if specified. diff --git a/Engine/lib/curl/docs/cmdline-opts/netrc-optional.d b/Engine/lib/curl/docs/cmdline-opts/netrc-optional.d deleted file mode 100644 index 4c83295a9..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/netrc-optional.d +++ /dev/null @@ -1,12 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: netrc-optional -Help: Use either .netrc or URL -Mutexed: netrc -See-also: netrc-file -Category: curl -Example: --netrc-optional $URL -Added: 7.9.8 ---- -Similar to --netrc, but this option makes the .netrc usage **optional** -and not mandatory as the --netrc option does. diff --git a/Engine/lib/curl/docs/cmdline-opts/netrc.d b/Engine/lib/curl/docs/cmdline-opts/netrc.d deleted file mode 100644 index 3868f6dab..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/netrc.d +++ /dev/null @@ -1,25 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: netrc -Short: n -Help: Must read .netrc for user name and password -Category: curl -Example: --netrc $URL -Added: 4.6 -See-also: netrc-file config user ---- -Makes curl scan the *.netrc* (*_netrc* on Windows) file in the user's home -directory for login name and password. This is typically used for FTP on -Unix. If used with HTTP, curl will enable user authentication. See -*netrc(5)* and *ftp(1)* for details on the file format. Curl will not -complain if that file does not have the right permissions (it should be -neither world- nor group-readable). The environment variable "HOME" is used -to find the home directory. - -A quick and simple example of how to setup a *.netrc* to allow curl to FTP to -the machine host.domain.com with user name 'myself' and password 'secret' -could look similar to: - - machine host.domain.com - login myself - password secret diff --git a/Engine/lib/curl/docs/cmdline-opts/next.d b/Engine/lib/curl/docs/cmdline-opts/next.d deleted file mode 100644 index b4b2a414c..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/next.d +++ /dev/null @@ -1,26 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Short: : -Long: next -Tags: -Protocols: -Added: 7.36.0 -Magic: divider -Help: Make next URL use its separate set of options -Category: curl -Example: $URL --next -d postthis www2.example.com -Example: -I $URL --next https://example.net/ -See-also: parallel config ---- -Tells curl to use a separate operation for the following URL and associated -options. This allows you to send several URL requests, each with their own -specific options, for example, such as different user names or custom requests -for each. - ---next will reset all local options and only global ones will have their -values survive over to the operation following the --next instruction. Global -options include --verbose, --trace, --trace-ascii and --fail-early. - -For example, you can do both a GET and a POST in a single command line: - - curl www1.example.com --next -d postthis www2.example.com diff --git a/Engine/lib/curl/docs/cmdline-opts/no-alpn.d b/Engine/lib/curl/docs/cmdline-opts/no-alpn.d deleted file mode 100644 index 004ececc0..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/no-alpn.d +++ /dev/null @@ -1,15 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: no-alpn -Tags: HTTP/2 -Protocols: HTTPS -Added: 7.36.0 -See-also: no-npn http2 -Requires: TLS -Help: Disable the ALPN TLS extension -Category: tls http -Example: --no-alpn $URL ---- -Disable the ALPN TLS extension. ALPN is enabled by default if libcurl was built -with an SSL library that supports ALPN. ALPN is used by a libcurl that supports -HTTP/2 to negotiate HTTP/2 support with the server during https sessions. diff --git a/Engine/lib/curl/docs/cmdline-opts/no-buffer.d b/Engine/lib/curl/docs/cmdline-opts/no-buffer.d deleted file mode 100644 index ef9d29ca5..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/no-buffer.d +++ /dev/null @@ -1,17 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: no-buffer -Short: N -Help: Disable buffering of the output stream -Category: curl -Example: --no-buffer $URL -Added: 6.5 -See-also: progress-bar ---- -Disables the buffering of the output stream. In normal work situations, curl -will use a standard buffered output stream that will have the effect that it -will output the data in chunks, not necessarily exactly when the data arrives. -Using this option will disable that buffering. - -Note that this is the negated option name documented. You can thus use ---buffer to enforce the buffering. diff --git a/Engine/lib/curl/docs/cmdline-opts/no-clobber.d b/Engine/lib/curl/docs/cmdline-opts/no-clobber.d deleted file mode 100644 index 9cd4036f9..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/no-clobber.d +++ /dev/null @@ -1,18 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: no-clobber -Help: Do not overwrite files that already exist -Category: curl output -Added: 7.83.0 -See-also: output remote-name -Example: --no-clobber --output local/dir/file $URL ---- -When used in conjunction with the --output, --remote-header-name, ---remote-name, or --remote-name-all options, curl avoids overwriting files -that already exist. Instead, a dot and a number gets appended to the name -of the file that would be created, up to filename.100 after which it will not -create any file. - -Note that this is the negated option name documented. You can thus use ---clobber to enforce the clobbering, even if --remote-header-name or -J is -specified. diff --git a/Engine/lib/curl/docs/cmdline-opts/no-keepalive.d b/Engine/lib/curl/docs/cmdline-opts/no-keepalive.d deleted file mode 100644 index a54933336..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/no-keepalive.d +++ /dev/null @@ -1,14 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: no-keepalive -Help: Disable TCP keepalive on the connection -Category: connection -Example: --no-keepalive $URL -Added: 7.18.0 -See-also: keepalive-time ---- -Disables the use of keepalive messages on the TCP connection. curl otherwise -enables them by default. - -Note that this is the negated option name documented. You can thus use ---keepalive to enforce keepalive. diff --git a/Engine/lib/curl/docs/cmdline-opts/no-npn.d b/Engine/lib/curl/docs/cmdline-opts/no-npn.d deleted file mode 100644 index f685502e5..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/no-npn.d +++ /dev/null @@ -1,16 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: no-npn -Tags: Versions HTTP/2 -Protocols: HTTPS -Added: 7.36.0 -Mutexed: -See-also: no-alpn http2 -Requires: TLS -Help: Disable the NPN TLS extension -Category: tls http -Example: --no-npn $URL ---- -Disable the NPN TLS extension. NPN is enabled by default if libcurl was built -with an SSL library that supports NPN. NPN is used by a libcurl that supports -HTTP/2 to negotiate HTTP/2 support with the server during https sessions. diff --git a/Engine/lib/curl/docs/cmdline-opts/no-progress-meter.d b/Engine/lib/curl/docs/cmdline-opts/no-progress-meter.d deleted file mode 100644 index fd57b1369..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/no-progress-meter.d +++ /dev/null @@ -1,14 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: no-progress-meter -Help: Do not show the progress meter -See-also: verbose silent -Added: 7.67.0 -Category: verbose -Example: --no-progress-meter -o store $URL ---- -Option to switch off the progress meter output without muting or otherwise -affecting warning and informational messages like --silent does. - -Note that this is the negated option name documented. You can thus use ---progress-meter to enable the progress meter again. diff --git a/Engine/lib/curl/docs/cmdline-opts/no-sessionid.d b/Engine/lib/curl/docs/cmdline-opts/no-sessionid.d deleted file mode 100644 index 5b86a9511..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/no-sessionid.d +++ /dev/null @@ -1,18 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: no-sessionid -Help: Disable SSL session-ID reusing -Protocols: TLS -Added: 7.16.0 -Category: tls -Example: --no-sessionid $URL -See-also: insecure ---- -Disable curl's use of SSL session-ID caching. By default all transfers are -done using the cache. Note that while nothing should ever get hurt by -attempting to reuse SSL session-IDs, there seem to be broken SSL -implementations in the wild that may require you to disable this in order for -you to succeed. - -Note that this is the negated option name documented. You can thus use ---sessionid to enforce session-ID caching. diff --git a/Engine/lib/curl/docs/cmdline-opts/noproxy.d b/Engine/lib/curl/docs/cmdline-opts/noproxy.d deleted file mode 100644 index a351fdeb6..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/noproxy.d +++ /dev/null @@ -1,20 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: noproxy -Arg: -Help: List of hosts which do not use proxy -Added: 7.19.4 -Category: proxy -Example: --noproxy "www.example" $URL -See-also: proxy ---- -Comma-separated list of hosts for which not to use a proxy, if one is -specified. The only wildcard is a single * character, which matches all hosts, -and effectively disables the proxy. Each name in this list is matched as -either a domain which contains the hostname, or the hostname itself. For -example, local.com would match local.com, local.com:80, and www.local.com, but -not www.notlocal.com. - -Since 7.53.0, This option overrides the environment variables that disable the -proxy ('no_proxy' and 'NO_PROXY'). If there's an environment variable -disabling a proxy, you can set the noproxy list to "" to override it. diff --git a/Engine/lib/curl/docs/cmdline-opts/ntlm-wb.d b/Engine/lib/curl/docs/cmdline-opts/ntlm-wb.d deleted file mode 100644 index 039bd9c09..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/ntlm-wb.d +++ /dev/null @@ -1,12 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: ntlm-wb -Help: Use HTTP NTLM authentication with winbind -Protocols: HTTP -See-also: ntlm proxy-ntlm -Category: auth http -Example: --ntlm-wb -u user:password $URL -Added: 7.22.0 ---- -Enables NTLM much in the style --ntlm does, but hand over the authentication -to the separate binary ntlmauth application that is executed when needed. diff --git a/Engine/lib/curl/docs/cmdline-opts/ntlm.d b/Engine/lib/curl/docs/cmdline-opts/ntlm.d deleted file mode 100644 index 66b513e66..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/ntlm.d +++ /dev/null @@ -1,23 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: ntlm -Help: Use HTTP NTLM authentication -Mutexed: basic negotiate digest anyauth -See-also: proxy-ntlm -Protocols: HTTP -Requires: TLS -Category: auth http -Example: --ntlm -u user:password $URL -Added: 7.10.6 ---- -Enables NTLM authentication. The NTLM authentication method was designed by -Microsoft and is used by IIS web servers. It is a proprietary protocol, -reverse-engineered by clever people and implemented in curl based on their -efforts. This kind of behavior should not be endorsed, you should encourage -everyone who uses NTLM to switch to a public and documented authentication -method instead, such as Digest. - -If you want to enable NTLM for your proxy authentication, then use ---proxy-ntlm. - -If this option is used several times, only the first one is used. diff --git a/Engine/lib/curl/docs/cmdline-opts/oauth2-bearer.d b/Engine/lib/curl/docs/cmdline-opts/oauth2-bearer.d deleted file mode 100644 index e5857b6c6..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/oauth2-bearer.d +++ /dev/null @@ -1,18 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: oauth2-bearer -Help: OAuth 2 Bearer Token -Arg: -Protocols: IMAP LDAP POP3 SMTP HTTP -Category: auth -Example: --oauth2-bearer "mF_9.B5f-4.1JqM" $URL -Added: 7.33.0 -See-also: basic ntlm digest ---- -Specify the Bearer Token for OAUTH 2.0 server authentication. The Bearer Token -is used in conjunction with the user name which can be specified as part of -the --url or --user options. - -The Bearer Token and user name are formatted according to RFC 6750. - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/output-dir.d b/Engine/lib/curl/docs/cmdline-opts/output-dir.d deleted file mode 100644 index 20adf9fdf..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/output-dir.d +++ /dev/null @@ -1,22 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: output-dir -Arg: -Help: Directory to save files in -Added: 7.73.0 -See-also: remote-name remote-header-name -Category: curl -Example: --output-dir "tmp" -O $URL ---- - -This option specifies the directory in which files should be stored, when ---remote-name or --output are used. - -The given output directory is used for all URLs and output options on the -command line, up until the first --next. - -If the specified target directory does not exist, the operation will fail -unless --create-dirs is also used. - -If this option is used multiple times, the last specified directory will be -used. diff --git a/Engine/lib/curl/docs/cmdline-opts/output.d b/Engine/lib/curl/docs/cmdline-opts/output.d deleted file mode 100644 index 543d3e3e9..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/output.d +++ /dev/null @@ -1,48 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: output -Arg: -Short: o -Help: Write to file instead of stdout -See-also: remote-name remote-name-all remote-header-name -Category: important curl -Example: -o file $URL -Example: "http://{one,two}.example.com" -o "file_#1.txt" -Example: "http://{site,host}.host[1-5].com" -o "#1_#2" -Example: -o file $URL -o file2 https://example.net -Added: 4.0 ---- -Write output to instead of stdout. If you are using {} or [] to fetch -multiple documents, you should quote the URL and you can use '#' followed by a -number in the specifier. That variable will be replaced with the current -string for the URL being fetched. Like in: - - curl "http://{one,two}.example.com" -o "file_#1.txt" - -or use several variables like: - - curl "http://{site,host}.host[1-5].com" -o "#1_#2" - -You may use this option as many times as the number of URLs you have. For -example, if you specify two URLs on the same command line, you can use it like -this: - - curl -o aa example.com -o bb example.net - -and the order of the -o options and the URLs does not matter, just that the -first -o is for the first URL and so on, so the above command line can also be -written as - - curl example.com example.net -o aa -o bb - -See also the --create-dirs option to create the local directories -dynamically. Specifying the output as '-' (a single dash) will force the -output to be done to stdout. - -To suppress response bodies, you can redirect output to /dev/null: - - curl example.com -o /dev/null - -Or for Windows use nul: - - curl example.com -o nul diff --git a/Engine/lib/curl/docs/cmdline-opts/page-footer b/Engine/lib/curl/docs/cmdline-opts/page-footer deleted file mode 100644 index c8a65be04..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/page-footer +++ /dev/null @@ -1,315 +0,0 @@ -.SH FILES -.I ~/.curlrc -.RS -Default config file, see --config for details. -.SH ENVIRONMENT -The environment variables can be specified in lower case or upper case. The -lower case version has precedence. http_proxy is an exception as it is only -available in lower case. - -Using an environment variable to set the proxy has the same effect as using -the --proxy option. - -.IP "http_proxy [protocol://][:port]" -Sets the proxy server to use for HTTP. -.IP "HTTPS_PROXY [protocol://][:port]" -Sets the proxy server to use for HTTPS. -.IP "[url-protocol]_PROXY [protocol://][:port]" -Sets the proxy server to use for [url-protocol], where the protocol is a -protocol that curl supports and as specified in a URL. FTP, FTPS, POP3, IMAP, -SMTP, LDAP, etc. -.IP "ALL_PROXY [protocol://][:port]" -Sets the proxy server to use if no protocol-specific proxy is set. -.IP "NO_PROXY " -list of host names that should not go through any proxy. If set to an asterisk -'*' only, it matches all hosts. Each name in this list is matched as either -a domain name which contains the hostname, or the hostname itself. - -This environment variable disables use of the proxy even when specified with -the --proxy option. That is -.B NO_PROXY=direct.example.com curl -x http://proxy.example.com -.B http://direct.example.com -accesses the target URL directly, and -.B NO_PROXY=direct.example.com curl -x http://proxy.example.com -.B http://somewhere.example.com -accesses the target URL through the proxy. - -The list of host names can also be include numerical IP addresses, and IPv6 -versions should then be given without enclosing brackets. - -IPv6 numerical addresses are compared as strings, so they will only match if -the representations are the same: "::1" is the same as "::0:1" but they do not -match. -.IP "APPDATA " -On Windows, this variable is used when trying to find the home directory. If -the primary home variable are all unset. -.IP "COLUMNS " -If set, the specified number of characters will be used as the terminal width -when the alternative progress-bar is shown. If not set, curl will try to -figure it out using other ways. -.IP "CURL_CA_BUNDLE " -If set, will be used as the \fI--cacert\fP value. -.IP "CURL_HOME " -If set, is the first variable curl checks when trying to find its home -directory. If not set, it continues to check \fBXDG_CONFIG_HOME\fP. -.IP "CURL_SSL_BACKEND " -If curl was built with support for "MultiSSL", meaning that it has built-in -support for more than one TLS backend, this environment variable can be set to -the case insensitive name of the particular backend to use when curl is -invoked. Setting a name that is not a built-in alternative will make curl -stay with the default. - -SSL backend names (case-insensitive): bearssl, gnutls, gskit, mbedtls, -nss, openssl, rustls, schannel, secure-transport, wolfssl -.IP "HOME " -If set, this is used to find the home directory when that is needed. Like when -looking for the default .curlrc. \fBCURL_HOME\fP and \fBXDG_CONFIG_HOME\fP -have preference. -.IP "QLOGDIR " -If curl was built with HTTP/3 support, setting this environment variable to a -local directory will make curl produce qlogs in that directory, using file -names named after the destination connection id (in hex). Do note that these -files can become rather large. Works with both QUIC backends. -.IP SHELL -Used on VMS when trying to detect if using a DCL or a "unix" shell. -.IP "SSL_CERT_DIR " -If set, will be used as the \fI--capath\fP value. -.IP "SSL_CERT_FILE " -If set, will be used as the \fI--cacert\fP value. -.IP "SSLKEYLOGFILE " -If you set this environment variable to a file name, curl will store TLS -secrets from its connections in that file when invoked to enable you to -analyze the TLS traffic in real time using network analyzing tools such as -Wireshark. This works with the following TLS backends: OpenSSL, libressl, -BoringSSL, GnuTLS, NSS and wolfSSL. -.IP "USERPROFILE " -On Windows, this variable is used when trying to find the home directory. If -the other, primary, variable are all unset. If set, curl will use the path -"$USERPROFILE\\Application Data". -.IP "XDG_CONFIG_HOME " -If \fBCURL_HOME\fP is not set, this variable is checked when looking for a -default .curlrc file. -.SH "PROXY PROTOCOL PREFIXES" -The proxy string may be specified with a protocol:// prefix to specify -alternative proxy protocols. (Added in 7.21.7) - -If no protocol is specified in the proxy string or if the string does not match -a supported one, the proxy will be treated as an HTTP proxy. - -The supported proxy protocol prefixes are as follows: -.IP "http://" -Makes it use it as an HTTP proxy. The default if no scheme prefix is used. -.IP "https://" -Makes it treated as an **HTTPS** proxy. -.IP "socks4://" -Makes it the equivalent of --socks4 -.IP "socks4a://" -Makes it the equivalent of --socks4a -.IP "socks5://" -Makes it the equivalent of --socks5 -.IP "socks5h://" -Makes it the equivalent of --socks5-hostname -.SH EXIT CODES -There are a bunch of different error codes and their corresponding error -messages that may appear under error conditions. At the time of this writing, -the exit codes are: -.IP 0 -Success. The operation completed successfully according to the instructions. -.IP 1 -Unsupported protocol. This build of curl has no support for this protocol. -.IP 2 -Failed to initialize. -.IP 3 -URL malformed. The syntax was not correct. -.IP 4 -A feature or option that was needed to perform the desired request was not -enabled or was explicitly disabled at build-time. To make curl able to do -this, you probably need another build of libcurl. -.IP 5 -Could not resolve proxy. The given proxy host could not be resolved. -.IP 6 -Could not resolve host. The given remote host could not be resolved. -.IP 7 -Failed to connect to host. -.IP 8 -Weird server reply. The server sent data curl could not parse. -.IP 9 -FTP access denied. The server denied login or denied access to the particular -resource or directory you wanted to reach. Most often you tried to change to a -directory that does not exist on the server. -.IP 10 -FTP accept failed. While waiting for the server to connect back when an active -FTP session is used, an error code was sent over the control connection or -similar. -.IP 11 -FTP weird PASS reply. Curl could not parse the reply sent to the PASS request. -.IP 12 -During an active FTP session while waiting for the server to connect back to -curl, the timeout expired. -.IP 13 -FTP weird PASV reply, Curl could not parse the reply sent to the PASV request. -.IP 14 -FTP weird 227 format. Curl could not parse the 227-line the server sent. -.IP 15 -FTP cannot use host. Could not resolve the host IP we got in the 227-line. -.IP 16 -HTTP/2 error. A problem was detected in the HTTP2 framing layer. This is -somewhat generic and can be one out of several problems, see the error message -for details. -.IP 17 -FTP could not set binary. Could not change transfer method to binary. -.IP 18 -Partial file. Only a part of the file was transferred. -.IP 19 -FTP could not download/access the given file, the RETR (or similar) command -failed. -.IP 21 -FTP quote error. A quote command returned error from the server. -.IP 22 -HTTP page not retrieved. The requested URL was not found or returned another -error with the HTTP error code being 400 or above. This return code only -appears if --fail is used. -.IP 23 -Write error. Curl could not write data to a local filesystem or similar. -.IP 25 -FTP could not STOR file. The server denied the STOR operation, used for FTP -uploading. -.IP 26 -Read error. Various reading problems. -.IP 27 -Out of memory. A memory allocation request failed. -.IP 28 -Operation timeout. The specified time-out period was reached according to the -conditions. -.IP 30 -FTP PORT failed. The PORT command failed. Not all FTP servers support the PORT -command, try doing a transfer using PASV instead! -.IP 31 -FTP could not use REST. The REST command failed. This command is used for -resumed FTP transfers. -.IP 33 -HTTP range error. The range "command" did not work. -.IP 34 -HTTP post error. Internal post-request generation error. -.IP 35 -SSL connect error. The SSL handshaking failed. -.IP 36 -Bad download resume. Could not continue an earlier aborted download. -.IP 37 -FILE could not read file. Failed to open the file. Permissions? -.IP 38 -LDAP cannot bind. LDAP bind operation failed. -.IP 39 -LDAP search failed. -.IP 41 -Function not found. A required LDAP function was not found. -.IP 42 -Aborted by callback. An application told curl to abort the operation. -.IP 43 -Internal error. A function was called with a bad parameter. -.IP 45 -Interface error. A specified outgoing interface could not be used. -.IP 47 -Too many redirects. When following redirects, curl hit the maximum amount. -.IP 48 -Unknown option specified to libcurl. This indicates that you passed a weird -option to curl that was passed on to libcurl and rejected. Read up in the -manual! -.IP 49 -Malformed telnet option. -.IP 52 -The server did not reply anything, which here is considered an error. -.IP 53 -SSL crypto engine not found. -.IP 54 -Cannot set SSL crypto engine as default. -.IP 55 -Failed sending network data. -.IP 56 -Failure in receiving network data. -.IP 58 -Problem with the local certificate. -.IP 59 -Could not use specified SSL cipher. -.IP 60 -Peer certificate cannot be authenticated with known CA certificates. -.IP 61 -Unrecognized transfer encoding. -.IP 63 -Maximum file size exceeded. -.IP 64 -Requested FTP SSL level failed. -.IP 65 -Sending the data requires a rewind that failed. -.IP 66 -Failed to initialise SSL Engine. -.IP 67 -The user name, password, or similar was not accepted and curl failed to log in. -.IP 68 -File not found on TFTP server. -.IP 69 -Permission problem on TFTP server. -.IP 70 -Out of disk space on TFTP server. -.IP 71 -Illegal TFTP operation. -.IP 72 -Unknown TFTP transfer ID. -.IP 73 -File already exists (TFTP). -.IP 74 -No such user (TFTP). -.IP 77 -Problem reading the SSL CA cert (path? access rights?). -.IP 78 -The resource referenced in the URL does not exist. -.IP 79 -An unspecified error occurred during the SSH session. -.IP 80 -Failed to shut down the SSL connection. -.IP 82 -Could not load CRL file, missing or wrong format (added in 7.19.0). -.IP 83 -Issuer check failed (added in 7.19.0). -.IP 84 -The FTP PRET command failed. -.IP 85 -Mismatch of RTSP CSeq numbers. -.IP 86 -Mismatch of RTSP Session Identifiers. -.IP 87 -Unable to parse FTP file list. -.IP 88 -FTP chunk callback reported error. -.IP 89 -No connection available, the session will be queued. -.IP 90 -SSL public key does not matched pinned public key. -.IP 91 -Invalid SSL certificate status. -.IP 92 -Stream error in HTTP/2 framing layer. -.IP 93 -An API function was called from inside a callback. -.IP 94 -An authentication function returned an error. -.IP 95 -A problem was detected in the HTTP/3 layer. This is somewhat generic and can -be one out of several problems, see the error message for details. -.IP 96 -QUIC connection error. This error may be caused by an SSL library error. QUIC -is the protocol used for HTTP/3 transfers. -.IP XX -More error codes will appear here in future releases. The existing ones -are meant to never change. -.SH BUGS -If you experience any problems with curl, submit an issue in the project's bug -tracker on GitHub: https://github.com/curl/curl/issues -.SH AUTHORS / CONTRIBUTORS -Daniel Stenberg is the main author, but the whole list of contributors is -found in the separate THANKS file. -.SH WWW -https://curl.se -.SH "SEE ALSO" -.BR ftp (1), -.BR wget (1) diff --git a/Engine/lib/curl/docs/cmdline-opts/page-header b/Engine/lib/curl/docs/cmdline-opts/page-header deleted file mode 100644 index 84bd39d09..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/page-header +++ /dev/null @@ -1,199 +0,0 @@ -.\" ************************************************************************** -.\" * _ _ ____ _ -.\" * Project ___| | | | _ \| | -.\" * / __| | | | |_) | | -.\" * | (__| |_| | _ <| |___ -.\" * \___|\___/|_| \_\_____| -.\" * -.\" * Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -.\" * -.\" * This software is licensed as described in the file COPYING, which -.\" * you should have received as part of this distribution. The terms -.\" * are also available at https://curl.se/docs/copyright.html. -.\" * -.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell -.\" * copies of the Software, and permit persons to whom the Software is -.\" * furnished to do so, under the terms of the COPYING file. -.\" * -.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY -.\" * KIND, either express or implied. -.\" * -.\" * SPDX-License-Identifier: curl -.\" * -.\" ************************************************************************** -.\" -.\" DO NOT EDIT. Generated by the curl project gen.pl man page generator. -.\" -.TH curl 1 "%DATE" "curl %VERSION" "curl Manual" -.SH NAME -curl \- transfer a URL -.SH SYNOPSIS -.B curl [options / URLs] -.SH DESCRIPTION -**curl** is a tool for transferring data from or to a server. It supports these -protocols: DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, -LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP, -SMTPS, TELNET or TFTP. The command is designed to work without user -interaction. - -curl offers a busload of useful tricks like proxy support, user -authentication, FTP upload, HTTP post, SSL connections, cookies, file transfer -resume and more. As you will see below, the number of features will make your -head spin. - -curl is powered by libcurl for all transfer-related features. See -*libcurl(3)* for details. -.SH URL -The URL syntax is protocol-dependent. You find a detailed description in -RFC 3986. - -You can specify multiple URLs or parts of URLs by writing part sets within -braces and quoting the URL as in: - - "http://site.{one,two,three}.com" - -or you can get sequences of alphanumeric series by using [] as in: - - "ftp://ftp.example.com/file[1-100].txt" - - "ftp://ftp.example.com/file[001-100].txt" (with leading zeros) - - "ftp://ftp.example.com/file[a-z].txt" - -Nested sequences are not supported, but you can use several ones next to each -other: - - "http://example.com/archive[1996-1999]/vol[1-4]/part{a,b,c}.html" - -You can specify any amount of URLs on the command line. They will be fetched -in a sequential manner in the specified order. You can specify command line -options and URLs mixed and in any order on the command line. - -You can specify a step counter for the ranges to get every Nth number or -letter: - - "http://example.com/file[1-100:10].txt" - - "http://example.com/file[a-z:2].txt" - -When using [] or {} sequences when invoked from a command line prompt, you -probably have to put the full URL within double quotes to avoid the shell from -interfering with it. This also goes for other characters treated special, like -for example '&', '?' and '*'. - -Provide the IPv6 zone index in the URL with an escaped percentage sign and the -interface name. Like in - - "http://[fe80::3%25eth0]/" - -If you specify URL without protocol:// prefix, curl will attempt to guess what -protocol you might want. It will then default to HTTP but try other protocols -based on often-used host name prefixes. For example, for host names starting -with "ftp." curl will assume you want to speak FTP. - -curl will do its best to use what you pass to it as a URL. It is not trying to -validate it as a syntactically correct URL by any means but is fairly liberal -with what it accepts. - -curl will attempt to re-use connections for multiple file transfers, so that -getting many files from the same server will not do multiple connects / -handshakes. This improves speed. Of course this is only done on files -specified on a single command line and cannot be used between separate curl -invocations. -.SH OUTPUT -If not told otherwise, curl writes the received data to stdout. It can be -instructed to instead save that data into a local file, using the --output or ---remote-name options. If curl is given multiple URLs to transfer on the -command line, it similarly needs multiple options for where to save them. - -curl does not parse or otherwise "understand" the content it gets or writes as -output. It does no encoding or decoding, unless explicitly asked to with -dedicated command line options. -.SH PROTOCOLS -curl supports numerous protocols, or put in URL terms: schemes. Your -particular build may not support them all. -.IP DICT -Lets you lookup words using online dictionaries. -.IP FILE -Read or write local files. curl does not support accessing file:// URL -remotely, but when running on Microsoft Windows using the native UNC approach -will work. -.IP FTP(S) -curl supports the File Transfer Protocol with a lot of tweaks and levers. With -or without using TLS. -.IP GOPHER(S) -Retrieve files. -.IP HTTP(S) -curl supports HTTP with numerous options and variations. It can speak HTTP -version 0.9, 1.0, 1.1, 2 and 3 depending on build options and the correct -command line options. -.IP IMAP(S) -Using the mail reading protocol, curl can "download" emails for you. With or -without using TLS. -.IP LDAP(S) -curl can do directory lookups for you, with or without TLS. -.IP MQTT -curl supports MQTT version 3. Downloading over MQTT equals "subscribe" to a -topic while uploading/posting equals "publish" on a topic. MQTT over TLS is -not supported (yet). -.IP POP3(S) -Downloading from a pop3 server means getting a mail. With or without using -TLS. -.IP RTMP(S) -The Realtime Messaging Protocol is primarily used to server streaming media -and curl can download it. -.IP RTSP -curl supports RTSP 1.0 downloads. -.IP SCP -curl supports SSH version 2 scp transfers. -.IP SFTP -curl supports SFTP (draft 5) done over SSH version 2. -.IP SMB(S) -curl supports SMB version 1 for upload and download. -.IP SMTP(S) -Uploading contents to an SMTP server means sending an email. With or without -TLS. -.IP TELNET -Telling curl to fetch a telnet URL starts an interactive session where it -sends what it reads on stdin and outputs what the server sends it. -.IP TFTP -curl can do TFTP downloads and uploads. -.SH "PROGRESS METER" -curl normally displays a progress meter during operations, indicating the -amount of transferred data, transfer speeds and estimated time left, etc. The -progress meter displays number of bytes and the speeds are in bytes per -second. The suffixes (k, M, G, T, P) are 1024 based. For example 1k is 1024 -bytes. 1M is 1048576 bytes. - -curl displays this data to the terminal by default, so if you invoke curl to -do an operation and it is about to write data to the terminal, it -*disables* the progress meter as otherwise it would mess up the output -mixing progress meter and response data. - -If you want a progress meter for HTTP POST or PUT requests, you need to -redirect the response output to a file, using shell redirect (>), --output or -similar. - -This does not apply to FTP upload as that operation does not spit out any -response data to the terminal. - -If you prefer a progress "bar" instead of the regular meter, --progress-bar is -your friend. You can also disable the progress meter completely with the ---silent option. -.SH OPTIONS -Options start with one or two dashes. Many of the options require an -additional value next to them. - -The short "single-dash" form of the options, -d for example, may be used with -or without a space between it and its value, although a space is a recommended -separator. The long "double-dash" form, --data for example, requires a space -between it and its value. - -Short version options that do not need any additional values can be used -immediately next to each other, like for example you can specify all the -options -O, -L and -v at once as -OLv. - -In general, all boolean options are enabled with --**option** and yet again -disabled with --**no-**option. That is, you use the same option name but -prefix it with "no-". However, in this list we mostly only list and show the ---option version of them. diff --git a/Engine/lib/curl/docs/cmdline-opts/parallel-immediate.d b/Engine/lib/curl/docs/cmdline-opts/parallel-immediate.d deleted file mode 100644 index 40a8c51e1..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/parallel-immediate.d +++ /dev/null @@ -1,16 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: parallel-immediate -Help: Do not wait for multiplexing (with --parallel) -Added: 7.68.0 -See-also: parallel parallel-max -Category: connection curl -Example: --parallel-immediate -Z $URL -o file1 $URL -o file2 ---- -When doing parallel transfers, this option will instruct curl that it should -rather prefer opening up more connections in parallel at once rather than -waiting to see if new transfers can be added as multiplexed streams on another -connection. - -This option is global and does not need to be specified for each use of ---next. diff --git a/Engine/lib/curl/docs/cmdline-opts/parallel-max.d b/Engine/lib/curl/docs/cmdline-opts/parallel-max.d deleted file mode 100644 index 5e3ad420c..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/parallel-max.d +++ /dev/null @@ -1,17 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: parallel-max -Arg: -Help: Maximum concurrency for parallel transfers -Added: 7.66.0 -See-also: parallel -Category: connection curl -Example: --parallel-max 100 -Z $URL ftp://example.com/ ---- -When asked to do parallel transfers, using --parallel, this option controls -the maximum amount of transfers to do simultaneously. - -This option is global and does not need to be specified for each use of ---next. - -The default is 50. diff --git a/Engine/lib/curl/docs/cmdline-opts/parallel.d b/Engine/lib/curl/docs/cmdline-opts/parallel.d deleted file mode 100644 index d0e9b3219..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/parallel.d +++ /dev/null @@ -1,15 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Short: Z -Long: parallel -Help: Perform transfers in parallel -Added: 7.66.0 -Category: connection curl -Example: --parallel $URL -o file1 $URL -o file2 -See-also: next verbose ---- -Makes curl perform its transfers in parallel as compared to the regular serial -manner. - -This option is global and does not need to be specified for each use of ---next. diff --git a/Engine/lib/curl/docs/cmdline-opts/pass.d b/Engine/lib/curl/docs/cmdline-opts/pass.d deleted file mode 100644 index 127786e11..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/pass.d +++ /dev/null @@ -1,14 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: pass -Arg: -Help: Pass phrase for the private key -Protocols: SSH TLS -Category: ssh tls auth -Example: --pass secret --key file $URL -Added: 7.9.3 -See-also: key user ---- -Passphrase for the private key. - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/path-as-is.d b/Engine/lib/curl/docs/cmdline-opts/path-as-is.d deleted file mode 100644 index e9dc2e88e..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/path-as-is.d +++ /dev/null @@ -1,12 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: path-as-is -Help: Do not squash .. sequences in URL path -Added: 7.42.0 -Category: curl -Example: --path-as-is https://example.com/../../etc/passwd -See-also: request-target ---- -Tell curl to not handle sequences of /../ or /./ in the given URL -path. Normally curl will squash or merge them according to standards but with -this option set you tell it not to do that. diff --git a/Engine/lib/curl/docs/cmdline-opts/pinnedpubkey.d b/Engine/lib/curl/docs/cmdline-opts/pinnedpubkey.d deleted file mode 100644 index 89df109b1..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/pinnedpubkey.d +++ /dev/null @@ -1,39 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: pinnedpubkey -Arg: -Help: FILE/HASHES Public key to verify peer against -Protocols: TLS -Category: tls -Example: --pinnedpubkey keyfile $URL -Example: --pinnedpubkey 'sha256//ce118b51897f4452dc' $URL -Added: 7.39.0 -See-also: hostpubsha256 ---- -Tells curl to use the specified public key file (or hashes) to verify the -peer. This can be a path to a file which contains a single public key in PEM -or DER format, or any number of base64 encoded sha256 hashes preceded by -'sha256//' and separated by ';'. - -When negotiating a TLS or SSL connection, the server sends a certificate -indicating its identity. A public key is extracted from this certificate and -if it does not exactly match the public key provided to this option, curl will -abort the connection before sending or receiving any data. - -PEM/DER support: - -7.39.0: OpenSSL, GnuTLS and GSKit - -7.43.0: NSS and wolfSSL - -7.47.0: mbedtls - -sha256 support: - -7.44.0: OpenSSL, GnuTLS, NSS and wolfSSL - -7.47.0: mbedtls - -Other SSL backends not supported. - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/post301.d b/Engine/lib/curl/docs/cmdline-opts/post301.d deleted file mode 100644 index 2c7a1362a..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/post301.d +++ /dev/null @@ -1,15 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: post301 -Help: Do not switch to GET after following a 301 -Protocols: HTTP -See-also: post302 post303 location -Added: 7.17.1 -Category: http post -Example: --post301 --location -d "data" $URL ---- -Tells curl to respect RFC 7231/6.4.2 and not convert POST requests into GET -requests when following a 301 redirection. The non-RFC behavior is ubiquitous -in web browsers, so curl does the conversion by default to maintain -consistency. However, a server may require a POST to remain a POST after such -a redirection. This option is meaningful only when using --location. diff --git a/Engine/lib/curl/docs/cmdline-opts/post302.d b/Engine/lib/curl/docs/cmdline-opts/post302.d deleted file mode 100644 index 31c13bd3a..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/post302.d +++ /dev/null @@ -1,15 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: post302 -Help: Do not switch to GET after following a 302 -Protocols: HTTP -See-also: post301 post303 location -Added: 7.19.1 -Category: http post -Example: --post302 --location -d "data" $URL ---- -Tells curl to respect RFC 7231/6.4.3 and not convert POST requests into GET -requests when following a 302 redirection. The non-RFC behavior is ubiquitous -in web browsers, so curl does the conversion by default to maintain -consistency. However, a server may require a POST to remain a POST after such -a redirection. This option is meaningful only when using --location. diff --git a/Engine/lib/curl/docs/cmdline-opts/post303.d b/Engine/lib/curl/docs/cmdline-opts/post303.d deleted file mode 100644 index 8d856ea6d..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/post303.d +++ /dev/null @@ -1,14 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: post303 -Help: Do not switch to GET after following a 303 -Protocols: HTTP -See-also: post302 post301 location -Added: 7.26.0 -Category: http post -Example: --post303 --location -d "data" $URL ---- -Tells curl to violate RFC 7231/6.4.4 and not convert POST requests into GET -requests when following 303 redirections. A server may require a POST to -remain a POST after a 303 redirection. This option is meaningful only when -using --location. diff --git a/Engine/lib/curl/docs/cmdline-opts/preproxy.d b/Engine/lib/curl/docs/cmdline-opts/preproxy.d deleted file mode 100644 index 3f10a68e7..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/preproxy.d +++ /dev/null @@ -1,27 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: preproxy -Arg: [protocol://]host[:port] -Help: Use this proxy first -Added: 7.52.0 -Category: proxy -Example: --preproxy socks5://proxy.example -x http://http.example $URL -See-also: proxy socks5 ---- -Use the specified SOCKS proxy before connecting to an HTTP or HTTPS --proxy. In -such a case curl first connects to the SOCKS proxy and then connects (through -SOCKS) to the HTTP or HTTPS proxy. Hence pre proxy. - -The pre proxy string should be specified with a protocol:// prefix to specify -alternative proxy protocols. Use socks4://, socks4a://, socks5:// or -socks5h:// to request the specific SOCKS version to be used. No protocol -specified will make curl default to SOCKS4. - -If the port number is not specified in the proxy string, it is assumed to be -1080. - -User and password that might be provided in the proxy string are URL decoded -by curl. This allows you to pass in special characters such as @ by using %40 -or pass in a colon with %3a. - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/progress-bar.d b/Engine/lib/curl/docs/cmdline-opts/progress-bar.d deleted file mode 100644 index 3a7853087..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/progress-bar.d +++ /dev/null @@ -1,21 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Short: # -Long: progress-bar -Help: Display transfer progress as a bar -Category: verbose -Example: -# -O $URL -Added: 5.10 -See-also: styled-output ---- -Make curl display transfer progress as a simple progress bar instead of the -standard, more informational, meter. - -This progress bar draws a single line of '#' characters across the screen and -shows a percentage if the transfer size is known. For transfers without a -known size, there will be space ship (-=o=-) that moves back and forth but -only while data is being transferred, with a set of flying hash sign symbols on -top. - -This option is global and does not need to be specified for each use of ---next. diff --git a/Engine/lib/curl/docs/cmdline-opts/proto-default.d b/Engine/lib/curl/docs/cmdline-opts/proto-default.d deleted file mode 100644 index f9d4f6d7c..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/proto-default.d +++ /dev/null @@ -1,19 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: proto-default -Help: Use PROTOCOL for any URL missing a scheme -Arg: -Added: 7.45.0 -Category: connection curl -Example: --proto-default https ftp.example.com -See-also: proto proto-redir ---- -Tells curl to use *protocol* for any URL missing a scheme name. - -An unknown or unsupported protocol causes error -*CURLE_UNSUPPORTED_PROTOCOL* (1). - -This option does not change the default proxy protocol (http). - -Without this option set, curl guesses protocol based on the host name, see ---url for details. diff --git a/Engine/lib/curl/docs/cmdline-opts/proto-redir.d b/Engine/lib/curl/docs/cmdline-opts/proto-redir.d deleted file mode 100644 index ea8c7526e..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/proto-redir.d +++ /dev/null @@ -1,21 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: proto-redir -Arg: -Help: Enable/disable PROTOCOLS on redirect -Added: 7.20.2 -Category: connection curl -Example: --proto-redir =http,https $URL -See-also: proto ---- -Tells curl to limit what protocols it may use on redirect. Protocols denied by ---proto are not overridden by this option. See --proto for how protocols are -represented. - -Example, allow only HTTP and HTTPS on redirect: - - curl --proto-redir -all,http,https http://example.com - -By default curl will only allow HTTP, HTTPS, FTP and FTPS on redirect (since -7.65.2). Specifying *all* or *+all* enables all protocols on redirects, which -is not good for security. diff --git a/Engine/lib/curl/docs/cmdline-opts/proto.d b/Engine/lib/curl/docs/cmdline-opts/proto.d deleted file mode 100644 index 9fc564f8c..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/proto.d +++ /dev/null @@ -1,47 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: proto -Arg: -Help: Enable/disable PROTOCOLS -See-also: proto-redir proto-default -Added: 7.20.2 -Category: connection curl -Example: --proto =http,https,sftp $URL ---- -Tells curl to limit what protocols it may use for transfers. Protocols are -evaluated left to right, are comma separated, and are each a protocol name or -'all', optionally prefixed by zero or more modifiers. Available modifiers are: -.RS -.TP 3 -.B + -Permit this protocol in addition to protocols already permitted (this is -the default if no modifier is used). -.TP -.B - -Deny this protocol, removing it from the list of protocols already permitted. -.TP -.B = -Permit only this protocol (ignoring the list already permitted), though -subject to later modification by subsequent entries in the comma separated -list. -.RE -.IP -For example: -.RS -.TP 15 -.B --proto -ftps -uses the default protocols, but disables ftps -.TP -.B --proto -all,https,+http -only enables http and https -.TP -.B --proto =http,https -also only enables http and https -.RE -.IP -Unknown protocols produce a warning. This allows scripts to safely rely on -being able to disable potentially dangerous protocols, without relying upon -support for that protocol being built into curl to avoid an error. - -This option can be used multiple times, in which case the effect is the same -as concatenating the protocols into one instance of the option. diff --git a/Engine/lib/curl/docs/cmdline-opts/proxy-anyauth.d b/Engine/lib/curl/docs/cmdline-opts/proxy-anyauth.d deleted file mode 100644 index c7cdd040c..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/proxy-anyauth.d +++ /dev/null @@ -1,11 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: proxy-anyauth -Help: Pick any proxy authentication method -Added: 7.13.2 -See-also: proxy proxy-basic proxy-digest -Category: proxy auth -Example: --proxy-anyauth --proxy-user user:passwd -x proxy $URL ---- -Tells curl to pick a suitable authentication method when communicating with -the given HTTP proxy. This might cause an extra request/response round-trip. diff --git a/Engine/lib/curl/docs/cmdline-opts/proxy-basic.d b/Engine/lib/curl/docs/cmdline-opts/proxy-basic.d deleted file mode 100644 index 608c9fae2..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/proxy-basic.d +++ /dev/null @@ -1,12 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: proxy-basic -Help: Use Basic authentication on the proxy -See-also: proxy proxy-anyauth proxy-digest -Category: proxy auth -Example: --proxy-basic --proxy-user user:passwd -x proxy $URL -Added: 7.12.0 ---- -Tells curl to use HTTP Basic authentication when communicating with the given -proxy. Use --basic for enabling HTTP Basic with a remote host. Basic is the -default authentication method curl uses with proxies. diff --git a/Engine/lib/curl/docs/cmdline-opts/proxy-cacert.d b/Engine/lib/curl/docs/cmdline-opts/proxy-cacert.d deleted file mode 100644 index c05a03c73..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/proxy-cacert.d +++ /dev/null @@ -1,11 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: proxy-cacert -Help: CA certificate to verify peer against for proxy -Arg: -Added: 7.52.0 -See-also: proxy-capath cacert capath proxy -Category: proxy tls -Example: --proxy-cacert CA-file.txt -x https://proxy $URL ---- -Same as --cacert but used in HTTPS proxy context. diff --git a/Engine/lib/curl/docs/cmdline-opts/proxy-capath.d b/Engine/lib/curl/docs/cmdline-opts/proxy-capath.d deleted file mode 100644 index 600e06ee8..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/proxy-capath.d +++ /dev/null @@ -1,11 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: proxy-capath -Help: CA directory to verify peer against for proxy -Arg: -Added: 7.52.0 -See-also: proxy-cacert proxy capath -Category: proxy tls -Example: --proxy-capath /local/directory -x https://proxy $URL ---- -Same as --capath but used in HTTPS proxy context. diff --git a/Engine/lib/curl/docs/cmdline-opts/proxy-cert-type.d b/Engine/lib/curl/docs/cmdline-opts/proxy-cert-type.d deleted file mode 100644 index 520a2b483..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/proxy-cert-type.d +++ /dev/null @@ -1,11 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: proxy-cert-type -Arg: -Added: 7.52.0 -Help: Client certificate type for HTTPS proxy -Category: proxy tls -Example: --proxy-cert-type PEM --proxy-cert file -x https://proxy $URL -See-also: proxy-cert ---- -Same as --cert-type but used in HTTPS proxy context. diff --git a/Engine/lib/curl/docs/cmdline-opts/proxy-cert.d b/Engine/lib/curl/docs/cmdline-opts/proxy-cert.d deleted file mode 100644 index 684b52cd7..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/proxy-cert.d +++ /dev/null @@ -1,11 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: proxy-cert -Arg: -Help: Set client certificate for proxy -Added: 7.52.0 -Category: proxy tls -Example: --proxy-cert file -x https://proxy $URL -See-also: proxy-cert-type ---- -Same as --cert but used in HTTPS proxy context. diff --git a/Engine/lib/curl/docs/cmdline-opts/proxy-ciphers.d b/Engine/lib/curl/docs/cmdline-opts/proxy-ciphers.d deleted file mode 100644 index 2b5c93601..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/proxy-ciphers.d +++ /dev/null @@ -1,11 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: proxy-ciphers -Arg: -Help: SSL ciphers to use for proxy -Added: 7.52.0 -Category: proxy tls -Example: --proxy-ciphers ECDHE-ECDSA-AES256-CCM8 -x https://proxy $URL -See-also: ciphers curves proxy ---- -Same as --ciphers but used in HTTPS proxy context. diff --git a/Engine/lib/curl/docs/cmdline-opts/proxy-crlfile.d b/Engine/lib/curl/docs/cmdline-opts/proxy-crlfile.d deleted file mode 100644 index 9ece36195..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/proxy-crlfile.d +++ /dev/null @@ -1,11 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: proxy-crlfile -Arg: -Help: Set a CRL list for proxy -Added: 7.52.0 -Category: proxy tls -Example: --proxy-crlfile rejects.txt -x https://proxy $URL -See-also: crlfile proxy ---- -Same as --crlfile but used in HTTPS proxy context. diff --git a/Engine/lib/curl/docs/cmdline-opts/proxy-digest.d b/Engine/lib/curl/docs/cmdline-opts/proxy-digest.d deleted file mode 100644 index 0bcc9f303..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/proxy-digest.d +++ /dev/null @@ -1,11 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: proxy-digest -Help: Use Digest authentication on the proxy -See-also: proxy proxy-anyauth proxy-basic -Category: proxy tls -Example: --proxy-digest --proxy-user user:passwd -x proxy $URL -Added: 7.12.0 ---- -Tells curl to use HTTP Digest authentication when communicating with the given -proxy. Use --digest for enabling HTTP Digest with a remote host. diff --git a/Engine/lib/curl/docs/cmdline-opts/proxy-header.d b/Engine/lib/curl/docs/cmdline-opts/proxy-header.d deleted file mode 100644 index 64980ed2c..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/proxy-header.d +++ /dev/null @@ -1,31 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: proxy-header -Arg:
-Help: Pass custom header(s) to proxy -Protocols: HTTP -Added: 7.37.0 -Category: proxy -Example: --proxy-header "X-First-Name: Joe" -x http://proxy $URL -Example: --proxy-header "User-Agent: surprise" -x http://proxy $URL -Example: --proxy-header "Host:" -x http://proxy $URL -See-also: proxy ---- -Extra header to include in the request when sending HTTP to a proxy. You may -specify any number of extra headers. This is the equivalent option to --header -but is for proxy communication only like in CONNECT requests when you want a -separate header sent to the proxy to what is sent to the actual remote host. - -curl will make sure that each header you add/replace is sent with the proper -end-of-line marker, you should thus **not** add that as a part of the header -content: do not add newlines or carriage returns, they will only mess things -up for you. - -Headers specified with this option will not be included in requests that curl -knows will not be sent to a proxy. - -Starting in 7.55.0, this option can take an argument in @filename style, which -then adds a header for each line in the input file. Using @- will make curl -read the header file from stdin. - -This option can be used multiple times to add/replace/remove multiple headers. diff --git a/Engine/lib/curl/docs/cmdline-opts/proxy-insecure.d b/Engine/lib/curl/docs/cmdline-opts/proxy-insecure.d deleted file mode 100644 index 4579246f3..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/proxy-insecure.d +++ /dev/null @@ -1,10 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: proxy-insecure -Help: Do HTTPS proxy connections without verifying the proxy -Added: 7.52.0 -Category: proxy tls -Example: --proxy-insecure -x https://proxy $URL -See-also: proxy insecure ---- -Same as --insecure but used in HTTPS proxy context. diff --git a/Engine/lib/curl/docs/cmdline-opts/proxy-key-type.d b/Engine/lib/curl/docs/cmdline-opts/proxy-key-type.d deleted file mode 100644 index c7b226dc7..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/proxy-key-type.d +++ /dev/null @@ -1,11 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: proxy-key-type -Arg: -Help: Private key file type for proxy -Added: 7.52.0 -Category: proxy tls -Example: --proxy-key-type DER --proxy-key here -x https://proxy $URL -See-also: proxy-key proxy ---- -Same as --key-type but used in HTTPS proxy context. diff --git a/Engine/lib/curl/docs/cmdline-opts/proxy-key.d b/Engine/lib/curl/docs/cmdline-opts/proxy-key.d deleted file mode 100644 index 044f72e85..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/proxy-key.d +++ /dev/null @@ -1,11 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: proxy-key -Help: Private key for HTTPS proxy -Arg: -Category: proxy tls -Example: --proxy-key here -x https://proxy $URL -Added: 7.52.0 -See-also: proxy-key-type proxy ---- -Same as --key but used in HTTPS proxy context. diff --git a/Engine/lib/curl/docs/cmdline-opts/proxy-negotiate.d b/Engine/lib/curl/docs/cmdline-opts/proxy-negotiate.d deleted file mode 100644 index 340873aef..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/proxy-negotiate.d +++ /dev/null @@ -1,12 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: proxy-negotiate -Help: Use HTTP Negotiate (SPNEGO) authentication on the proxy -Added: 7.17.1 -See-also: proxy-anyauth proxy-basic -Category: proxy auth -Example: --proxy-negotiate --proxy-user user:passwd -x proxy $URL ---- -Tells curl to use HTTP Negotiate (SPNEGO) authentication when communicating -with the given proxy. Use --negotiate for enabling HTTP Negotiate (SPNEGO) -with a remote host. diff --git a/Engine/lib/curl/docs/cmdline-opts/proxy-ntlm.d b/Engine/lib/curl/docs/cmdline-opts/proxy-ntlm.d deleted file mode 100644 index 424dc9ce7..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/proxy-ntlm.d +++ /dev/null @@ -1,11 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: proxy-ntlm -Help: Use NTLM authentication on the proxy -See-also: proxy-negotiate proxy-anyauth -Category: proxy auth -Example: --proxy-ntlm --proxy-user user:passwd -x http://proxy $URL -Added: 7.10.7 ---- -Tells curl to use HTTP NTLM authentication when communicating with the given -proxy. Use --ntlm for enabling NTLM with a remote host. diff --git a/Engine/lib/curl/docs/cmdline-opts/proxy-pass.d b/Engine/lib/curl/docs/cmdline-opts/proxy-pass.d deleted file mode 100644 index dbd977992..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/proxy-pass.d +++ /dev/null @@ -1,11 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: proxy-pass -Arg: -Help: Pass phrase for the private key for HTTPS proxy -Added: 7.52.0 -Category: proxy tls auth -Example: --proxy-pass secret --proxy-key here -x https://proxy $URL -See-also: proxy proxy-key ---- -Same as --pass but used in HTTPS proxy context. diff --git a/Engine/lib/curl/docs/cmdline-opts/proxy-pinnedpubkey.d b/Engine/lib/curl/docs/cmdline-opts/proxy-pinnedpubkey.d deleted file mode 100644 index b6c644b05..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/proxy-pinnedpubkey.d +++ /dev/null @@ -1,23 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: proxy-pinnedpubkey -Arg: -Help: FILE/HASHES public key to verify proxy with -Protocols: TLS -Category: proxy tls -Example: --proxy-pinnedpubkey keyfile $URL -Example: --proxy-pinnedpubkey 'sha256//ce118b51897f4452dc' $URL -Added: 7.59.0 -See-also: pinnedpubkey proxy ---- -Tells curl to use the specified public key file (or hashes) to verify the -proxy. This can be a path to a file which contains a single public key in PEM -or DER format, or any number of base64 encoded sha256 hashes preceded by -'sha256//' and separated by ';'. - -When negotiating a TLS or SSL connection, the server sends a certificate -indicating its identity. A public key is extracted from this certificate and -if it does not exactly match the public key provided to this option, curl will -abort the connection before sending or receiving any data. - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/proxy-service-name.d b/Engine/lib/curl/docs/cmdline-opts/proxy-service-name.d deleted file mode 100644 index 7ab263fd0..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/proxy-service-name.d +++ /dev/null @@ -1,11 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: proxy-service-name -Arg: -Help: SPNEGO proxy service name -Added: 7.43.0 -Category: proxy tls -Example: --proxy-service-name "shrubbery" -x proxy $URL -See-also: service-name proxy ---- -This option allows you to change the service name for proxy negotiation. diff --git a/Engine/lib/curl/docs/cmdline-opts/proxy-ssl-allow-beast.d b/Engine/lib/curl/docs/cmdline-opts/proxy-ssl-allow-beast.d deleted file mode 100644 index 787b50fe2..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/proxy-ssl-allow-beast.d +++ /dev/null @@ -1,10 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: proxy-ssl-allow-beast -Help: Allow security flaw for interop for HTTPS proxy -Added: 7.52.0 -Category: proxy tls -Example: --proxy-ssl-allow-beast -x https://proxy $URL -See-also: ssl-allow-beast proxy ---- -Same as --ssl-allow-beast but used in HTTPS proxy context. diff --git a/Engine/lib/curl/docs/cmdline-opts/proxy-ssl-auto-client-cert.d b/Engine/lib/curl/docs/cmdline-opts/proxy-ssl-auto-client-cert.d deleted file mode 100644 index ab1d898a3..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/proxy-ssl-auto-client-cert.d +++ /dev/null @@ -1,10 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: proxy-ssl-auto-client-cert -Help: Use auto client certificate for proxy (Schannel) -Added: 7.77.0 -Category: proxy tls -Example: --proxy-ssl-auto-client-cert -x https://proxy $URL -See-also: ssl-auto-client-cert proxy ---- -Same as --ssl-auto-client-cert but used in HTTPS proxy context. diff --git a/Engine/lib/curl/docs/cmdline-opts/proxy-tls13-ciphers.d b/Engine/lib/curl/docs/cmdline-opts/proxy-tls13-ciphers.d deleted file mode 100644 index 285e0cbb8..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/proxy-tls13-ciphers.d +++ /dev/null @@ -1,22 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: proxy-tls13-ciphers -Arg: -help: TLS 1.3 proxy cipher suites -Protocols: TLS -Category: proxy tls -Example: --proxy-tls13-ciphers TLS_AES_128_GCM_SHA256 -x proxy $URL -Added: 7.61.0 -See-also: tls13-ciphers curves ---- -Specifies which cipher suites to use in the connection to your HTTPS proxy -when it negotiates TLS 1.3. The list of ciphers suites must specify valid -ciphers. Read up on TLS 1.3 cipher suite details on this URL: - - https://curl.se/docs/ssl-ciphers.html - -This option is currently used only when curl is built to use OpenSSL 1.1.1 or -later. If you are using a different SSL backend you can try setting TLS 1.3 -cipher suites by using the --proxy-ciphers option. - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/proxy-tlsauthtype.d b/Engine/lib/curl/docs/cmdline-opts/proxy-tlsauthtype.d deleted file mode 100644 index fbee25fa3..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/proxy-tlsauthtype.d +++ /dev/null @@ -1,11 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: proxy-tlsauthtype -Arg: -Help: TLS authentication type for HTTPS proxy -Added: 7.52.0 -Category: proxy tls auth -Example: --proxy-tlsauthtype SRP -x https://proxy $URL -See-also: proxy proxy-tlsuser ---- -Same as --tlsauthtype but used in HTTPS proxy context. diff --git a/Engine/lib/curl/docs/cmdline-opts/proxy-tlspassword.d b/Engine/lib/curl/docs/cmdline-opts/proxy-tlspassword.d deleted file mode 100644 index c74400d98..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/proxy-tlspassword.d +++ /dev/null @@ -1,11 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: proxy-tlspassword -Arg: -Help: TLS password for HTTPS proxy -Added: 7.52.0 -Category: proxy tls auth -Example: --proxy-tlspassword passwd -x https://proxy $URL -See-also: proxy proxy-tlsuser ---- -Same as --tlspassword but used in HTTPS proxy context. diff --git a/Engine/lib/curl/docs/cmdline-opts/proxy-tlsuser.d b/Engine/lib/curl/docs/cmdline-opts/proxy-tlsuser.d deleted file mode 100644 index 8e60cb585..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/proxy-tlsuser.d +++ /dev/null @@ -1,11 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: proxy-tlsuser -Arg: -Help: TLS username for HTTPS proxy -Added: 7.52.0 -Category: proxy tls auth -Example: --proxy-tlsuser smith -x https://proxy $URL -See-also: proxy proxy-tlspassword ---- -Same as --tlsuser but used in HTTPS proxy context. diff --git a/Engine/lib/curl/docs/cmdline-opts/proxy-tlsv1.d b/Engine/lib/curl/docs/cmdline-opts/proxy-tlsv1.d deleted file mode 100644 index 65ab3ee25..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/proxy-tlsv1.d +++ /dev/null @@ -1,10 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: proxy-tlsv1 -Help: Use TLSv1 for HTTPS proxy -Added: 7.52.0 -Category: proxy tls auth -Example: --proxy-tlsv1 -x https://proxy $URL -See-also: proxy ---- -Same as --tlsv1 but used in HTTPS proxy context. diff --git a/Engine/lib/curl/docs/cmdline-opts/proxy-user.d b/Engine/lib/curl/docs/cmdline-opts/proxy-user.d deleted file mode 100644 index 13e127a66..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/proxy-user.d +++ /dev/null @@ -1,24 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: proxy-user -Short: U -Arg: -Help: Proxy user and password -Category: proxy auth -Example: --proxy-user name:pwd -x proxy $URL -Added: 4.0 -See-also: proxy-pass ---- -Specify the user name and password to use for proxy authentication. - -If you use a Windows SSPI-enabled curl binary and do either Negotiate or NTLM -authentication then you can tell curl to select the user name and password -from your environment by specifying a single colon with this option: "-U :". - -On systems where it works, curl will hide the given option argument from -process listings. This is not enough to protect credentials from possibly -getting seen by other users on the same system as they will still be visible -for a moment before cleared. Such sensitive data should be retrieved from a -file instead or similar and never used in clear text in a command line. - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/proxy.d b/Engine/lib/curl/docs/cmdline-opts/proxy.d deleted file mode 100644 index 2295abd77..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/proxy.d +++ /dev/null @@ -1,48 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: proxy -Short: x -Arg: [protocol://]host[:port] -Help: Use this proxy -Category: proxy -Example: --proxy http://proxy.example $URL -Added: 4.0 -See-also: socks5 proxy-basic ---- -Use the specified proxy. - -The proxy string can be specified with a protocol:// prefix. No protocol -specified or http:// will be treated as HTTP proxy. Use socks4://, socks4a://, -socks5:// or socks5h:// to request a specific SOCKS version to be used. -(Added in 7.21.7) - -Unix domain sockets are supported for socks proxy. Set localhost for the host -part. e.g. socks5h://localhost/path/to/socket.sock - -HTTPS proxy support via https:// protocol prefix was added in 7.52.0 for -OpenSSL, GnuTLS and NSS. - -Unrecognized and unsupported proxy protocols cause an error since 7.52.0. -Prior versions may ignore the protocol and use http:// instead. - -If the port number is not specified in the proxy string, it is assumed to be -1080. - -This option overrides existing environment variables that set the proxy to -use. If there's an environment variable setting a proxy, you can set proxy to -"" to override it. - -All operations that are performed over an HTTP proxy will transparently be -converted to HTTP. It means that certain protocol specific operations might -not be available. This is not the case if you can tunnel through the proxy, as -one with the --proxytunnel option. - -User and password that might be provided in the proxy string are URL decoded -by curl. This allows you to pass in special characters such as @ by using %40 -or pass in a colon with %3a. - -The proxy host can be specified the same way as the proxy environment -variables, including the protocol prefix (http://) and the embedded user + -password. - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/proxy1.0.d b/Engine/lib/curl/docs/cmdline-opts/proxy1.0.d deleted file mode 100644 index 07b77826b..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/proxy1.0.d +++ /dev/null @@ -1,16 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: proxy1.0 -Arg: -Help: Use HTTP/1.0 proxy on given port -Category: proxy -Example: --proxy1.0 -x http://proxy $URL -Added: 7.19.4 -See-also: proxy socks5 preproxy ---- -Use the specified HTTP 1.0 proxy. If the port number is not specified, it is -assumed at port 1080. - -The only difference between this and the HTTP proxy option --proxy, is that -attempts to use CONNECT through the proxy will specify an HTTP 1.0 protocol -instead of the default HTTP 1.1. diff --git a/Engine/lib/curl/docs/cmdline-opts/proxytunnel.d b/Engine/lib/curl/docs/cmdline-opts/proxytunnel.d deleted file mode 100644 index ec44fd758..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/proxytunnel.d +++ /dev/null @@ -1,17 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: proxytunnel -Short: p -Help: Operate through an HTTP proxy tunnel (using CONNECT) -See-also: proxy -Category: proxy -Example: --proxytunnel -x http://proxy $URL -Added: 7.3 ---- -When an HTTP proxy is used --proxy, this option will make curl tunnel through -the proxy. The tunnel approach is made with the HTTP proxy CONNECT request and -requires that the proxy allows direct connect to the remote port number curl -wants to tunnel through to. - -To suppress proxy CONNECT response headers when curl is set to output headers -use --suppress-connect-headers. diff --git a/Engine/lib/curl/docs/cmdline-opts/pubkey.d b/Engine/lib/curl/docs/cmdline-opts/pubkey.d deleted file mode 100644 index c1dc99a51..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/pubkey.d +++ /dev/null @@ -1,20 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: pubkey -Arg: -Protocols: SFTP SCP -Help: SSH Public key file name -Category: sftp scp auth -Example: --pubkey file.pub sftp://example.com/ -Added: 7.16.2 -See-also: pass ---- -Public key file name. Allows you to provide your public key in this separate -file. - -If this option is used several times, the last one will be used. - -(As of 7.39.0, curl attempts to automatically extract the public key from the -private key file, so passing this option is generally not required. Note that -this public key extraction requires libcurl to be linked against a copy of -libssh2 1.2.8 or higher that is itself linked against OpenSSL.) diff --git a/Engine/lib/curl/docs/cmdline-opts/quote.d b/Engine/lib/curl/docs/cmdline-opts/quote.d deleted file mode 100644 index e410574b7..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/quote.d +++ /dev/null @@ -1,75 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: quote -Arg: -Short: Q -Help: Send command(s) to server before transfer -Protocols: FTP SFTP -Category: ftp sftp -Example: --quote "DELE file" ftp://example.com/foo -Added: 5.3 -See-also: request ---- -Send an arbitrary command to the remote FTP or SFTP server. Quote commands are -sent BEFORE the transfer takes place (just after the initial PWD command in an -FTP transfer, to be exact). To make commands take place after a successful -transfer, prefix them with a dash '-'. - -(FTP only) To make commands be sent after curl has changed the working -directory, just before the file transfer command(s), prefix the command with a -'+'. This is not performed when a directory listing is performed. - -You may specify any number of commands. - -By default curl will stop at first failure. To make curl continue even if the -command fails, prefix the command with an asterisk (*). Otherwise, if the -server returns failure for one of the commands, the entire operation will be -aborted. - -You must send syntactically correct FTP commands as RFC 959 defines to FTP -servers, or one of the commands listed below to SFTP servers. - -This option can be used multiple times. - -SFTP is a binary protocol. Unlike for FTP, curl interprets SFTP quote commands -itself before sending them to the server. File names may be quoted -shell-style to embed spaces or special characters. Following is the list of -all supported SFTP quote commands: -.RS -.IP "atime date file" -The atime command sets the last access time of the file named by the file -operand. The can be all sorts of date strings, see the -*curl_getdate(3)* man page for date expression details. (Added in 7.73.0) -.IP "chgrp group file" -The chgrp command sets the group ID of the file named by the file operand to -the group ID specified by the group operand. The group operand is a decimal -integer group ID. -.IP "chmod mode file" -The chmod command modifies the file mode bits of the specified file. The -mode operand is an octal integer mode number. -.IP "chown user file" -The chown command sets the owner of the file named by the file operand to the -user ID specified by the user operand. The user operand is a decimal -integer user ID. -.IP "ln source_file target_file" -The ln and symlink commands create a symbolic link at the target_file location -pointing to the source_file location. -.IP "mkdir directory_name" -The mkdir command creates the directory named by the directory_name operand. -.IP "mtime date file" -The mtime command sets the last modification time of the file named by the -file operand. The can be all sorts of date strings, see the -*curl_getdate(3)* man page for date expression details. (Added in 7.73.0) -.IP "pwd" -The pwd command returns the absolute pathname of the current working directory. -.IP "rename source target" -The rename command renames the file or directory named by the source -operand to the destination path named by the target operand. -.IP "rm file" -The rm command removes the file specified by the file operand. -.IP "rmdir directory" -The rmdir command removes the directory entry specified by the directory -operand, provided it is empty. -.IP "symlink source_file target_file" -See ln. -.RE diff --git a/Engine/lib/curl/docs/cmdline-opts/random-file.d b/Engine/lib/curl/docs/cmdline-opts/random-file.d deleted file mode 100644 index dea2ec72c..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/random-file.d +++ /dev/null @@ -1,15 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: random-file -Arg: -Help: File for reading random data from -Category: misc -Example: --random-file rubbish $URL -Added: 7.7 -See-also: egd-file ---- -Deprecated option. This option is ignored by curl since 7.84.0. Prior to that -it only had an effect on curl if built to use old versions of OpenSSL. - -Specify the path name to file containing what will be considered as random -data. The data may be used to seed the random engine for SSL connections. diff --git a/Engine/lib/curl/docs/cmdline-opts/range.d b/Engine/lib/curl/docs/cmdline-opts/range.d deleted file mode 100644 index ca77de901..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/range.d +++ /dev/null @@ -1,53 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: range -Short: r -Help: Retrieve only the bytes within RANGE -Arg: -Protocols: HTTP FTP SFTP FILE -Category: http ftp sftp file -Example: --range 22-44 $URL -Added: 4.0 -See-also: continue-at append ---- -Retrieve a byte range (i.e. a partial document) from an HTTP/1.1, FTP or SFTP -server or a local FILE. Ranges can be specified in a number of ways. -.RS -.TP 10 -.B 0-499 -specifies the first 500 bytes -.TP -.B 500-999 -specifies the second 500 bytes -.TP -.B -500 -specifies the last 500 bytes -.TP -.B 9500- -specifies the bytes from offset 9500 and forward -.TP -.B 0-0,-1 -specifies the first and last byte only(*)(HTTP) -.TP -.B 100-199,500-599 -specifies two separate 100-byte ranges(*) (HTTP) -.RE -.IP -(*) = NOTE that this will cause the server to reply with a multipart -response, which will be returned as-is by curl! Parsing or otherwise -transforming this response is the responsibility of the caller. - -Only digit characters (0-9) are valid in the 'start' and 'stop' fields of the -'start-stop' range syntax. If a non-digit character is given in the range, -the server's response will be unspecified, depending on the server's -configuration. - -You should also be aware that many HTTP/1.1 servers do not have this feature -enabled, so that when you attempt to get a range, you will instead get the -whole document. - -FTP and SFTP range downloads only support the simple 'start-stop' syntax -(optionally with one of the numbers omitted). FTP use depends on the extended -FTP command SIZE. - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/rate.d b/Engine/lib/curl/docs/cmdline-opts/rate.d deleted file mode 100644 index 148c88f8a..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/rate.d +++ /dev/null @@ -1,35 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: rate -Arg: -Help: Request rate for serial transfers -Category: connection -Example: --rate 2/s $URL -Example: --rate 3/h $URL -Example: --rate 14/m $URL -Added: 7.84.0 -See-also: limit-rate retry-delay ---- -Specify the maximum transfer frequency you allow curl to use - in number of -transfer starts per time unit (sometimes called request rate). Without this -option, curl will start the next transfer as fast as possible. - -If given several URLs and a transfer completes faster than the allowed rate, -curl will wait until the next transfer is started to maintain the requested -rate. This option has no effect when --parallel is used. - -The request rate is provided as "N/U" where N is an integer number and U is a -time unit. Supported units are 's' (second), 'm' (minute), 'h' (hour) and 'd' -/(day, as in a 24 hour unit). The default time unit, if no "/U" is provided, -is number of transfers per hour. - -If curl is told to allow 10 requests per minute, it will not start the next -request until 6 seconds have elapsed since the previous transfer was started. - -This function uses millisecond resolution. If the allowed frequency is set -more than 1000 per second, it will instead run unrestricted. - -When retrying transfers, enabled with --retry, the separate retry delay logic -is used and not this setting. - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/raw.d b/Engine/lib/curl/docs/cmdline-opts/raw.d deleted file mode 100644 index f87e926a5..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/raw.d +++ /dev/null @@ -1,12 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: raw -Help: Do HTTP "raw"; no transfer decoding -Added: 7.16.2 -Protocols: HTTP -Category: http -Example: --raw $URL -See-also: tr-encoding ---- -When used, it disables all internal HTTP decoding of content or transfer -encodings and instead makes them passed on unaltered, raw. diff --git a/Engine/lib/curl/docs/cmdline-opts/referer.d b/Engine/lib/curl/docs/cmdline-opts/referer.d deleted file mode 100644 index 64c9c8b46..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/referer.d +++ /dev/null @@ -1,21 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: referer -Short: e -Arg: -Protocols: HTTP -Help: Referrer URL -See-also: user-agent header -Category: http -Example: --referer "https://fake.example" $URL -Example: --referer "https://fake.example;auto" -L $URL -Example: --referer ";auto" -L $URL -Added: 4.0 ---- -Sends the "Referrer Page" information to the HTTP server. This can also be set -with the --header flag of course. When used with --location you can append -";auto" to the --referer URL to make curl automatically set the previous URL -when it follows a Location: header. The ";auto" string can be used alone, -even if you do not set an initial --referer. - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/remote-header-name.d b/Engine/lib/curl/docs/cmdline-opts/remote-header-name.d deleted file mode 100644 index 0f22b8462..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/remote-header-name.d +++ /dev/null @@ -1,30 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: remote-header-name -Short: J -Protocols: HTTP -Help: Use the header-provided filename -Category: output -Example: -OJ https://example.com/file -Added: 7.20.0 -See-also: remote-name ---- -This option tells the --remote-name option to use the server-specified -Content-Disposition filename instead of extracting a filename from the URL. If -the server-provided file name contains a path, that will be stripped off -before the file name is used. - -The file is saved in the current directory, or in the directory specified with ---output-dir. - -If the server specifies a file name and a file with that name already exists -in the destination directory, it will not be overwritten and an error will -occur. If the server does not specify a file name then this option has no -effect. - -There's no attempt to decode %-sequences (yet) in the provided file name, so -this option may provide you with rather unexpected file names. - -**WARNING**: Exercise judicious use of this option, especially on Windows. A -rogue server could send you the name of a DLL or other file that could be -loaded automatically by Windows or some third party software. diff --git a/Engine/lib/curl/docs/cmdline-opts/remote-name-all.d b/Engine/lib/curl/docs/cmdline-opts/remote-name-all.d deleted file mode 100644 index 8b2db66a1..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/remote-name-all.d +++ /dev/null @@ -1,13 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: remote-name-all -Help: Use the remote file name for all URLs -Added: 7.19.0 -Category: output -Example: --remote-name-all ftp://example.com/file1 ftp://example.com/file2 -See-also: remote-name ---- -This option changes the default action for all given URLs to be dealt with as -if --remote-name were used for each one. So if you want to disable that for a -specific URL after --remote-name-all has been used, you must use "-o -" or ---no-remote-name. diff --git a/Engine/lib/curl/docs/cmdline-opts/remote-name.d b/Engine/lib/curl/docs/cmdline-opts/remote-name.d deleted file mode 100644 index 49a7aa319..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/remote-name.d +++ /dev/null @@ -1,27 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: remote-name -Short: O -Help: Write output to a file named as the remote file -Category: important output -Example: -O https://example.com/filename -Added: 4.0 -See-also: remote-name-all output-dir remote-header-name ---- -Write output to a local file named like the remote file we get. (Only the file -part of the remote file is used, the path is cut off.) - -The file will be saved in the current working directory. If you want the file -saved in a different directory, make sure you change the current working -directory before invoking curl with this option or use --output-dir. - -The remote file name to use for saving is extracted from the given URL, -nothing else, and if it already exists it will be overwritten. If you want the -server to be able to choose the file name refer to --remote-header-name which -can be used in addition to this option. If the server chooses a file name and -that name already exists it will not be overwritten. - -There is no URL decoding done on the file name. If it has %20 or other URL -encoded parts of the name, they will end up as-is as file name. - -You may use this option as many times as the number of URLs you have. diff --git a/Engine/lib/curl/docs/cmdline-opts/remote-time.d b/Engine/lib/curl/docs/cmdline-opts/remote-time.d deleted file mode 100644 index 4b384c937..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/remote-time.d +++ /dev/null @@ -1,13 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: remote-time -Short: R -Help: Set the remote file's time on the local output -Category: output -Example: --remote-time -o foo $URL -Added: 7.9 -See-also: remote-name time-cond ---- -When used, this will make curl attempt to figure out the timestamp of the -remote file, and if that is available make the local file get that same -timestamp. diff --git a/Engine/lib/curl/docs/cmdline-opts/remove-on-error.d b/Engine/lib/curl/docs/cmdline-opts/remove-on-error.d deleted file mode 100644 index ebde0eb06..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/remove-on-error.d +++ /dev/null @@ -1,14 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: remove-on-error -Help: Remove output file on errors -See-also: fail -Category: curl -Example: --remove-on-error -o output $URL -Added: 7.83.0 ---- -When curl returns an error when told to save output in a local file, this -option removes that saved file before exiting. This prevents curl from -leaving a partial file in the case of an error during transfer. - -If the output is not a file, this option has no effect. diff --git a/Engine/lib/curl/docs/cmdline-opts/request-target.d b/Engine/lib/curl/docs/cmdline-opts/request-target.d deleted file mode 100644 index 18a386d6e..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/request-target.d +++ /dev/null @@ -1,15 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: request-target -Arg: -Help: Specify the target for this request -Protocols: HTTP -Added: 7.55.0 -Category: http -Example: --request-target "*" -X OPTIONS $URL -See-also: request ---- -Tells curl to use an alternative "target" (path) instead of using the path as -provided in the URL. Particularly useful when wanting to issue HTTP requests -without leading slash or other data that does not follow the regular URL -pattern, like "OPTIONS *". diff --git a/Engine/lib/curl/docs/cmdline-opts/request.d b/Engine/lib/curl/docs/cmdline-opts/request.d deleted file mode 100644 index 6d804046d..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/request.d +++ /dev/null @@ -1,46 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: request -Short: X -Arg: -Help: Specify request method to use -Category: connection -Example: -X "DELETE" $URL -Example: -X NLST ftp://example.com/ -Added: 6.0 -See-also: request-target ---- -(HTTP) Specifies a custom request method to use when communicating with the -HTTP server. The specified request method will be used instead of the method -otherwise used (which defaults to GET). Read the HTTP 1.1 specification for -details and explanations. Common additional HTTP requests include PUT and -DELETE, but related technologies like WebDAV offers PROPFIND, COPY, MOVE and -more. - -Normally you do not need this option. All sorts of GET, HEAD, POST and PUT -requests are rather invoked by using dedicated command line options. - -This option only changes the actual word used in the HTTP request, it does not -alter the way curl behaves. So for example if you want to make a proper HEAD -request, using -X HEAD will not suffice. You need to use the --head option. - -The method string you set with --request will be used for all requests, which -if you for example use --location may cause unintended side-effects when curl -does not change request method according to the HTTP 30x response codes - and -similar. - -(FTP) -Specifies a custom FTP command to use instead of LIST when doing file lists -with FTP. - -(POP3) -Specifies a custom POP3 command to use instead of LIST or RETR. -(Added in 7.26.0) - -(IMAP) -Specifies a custom IMAP command to use instead of LIST. (Added in 7.30.0) - -(SMTP) -Specifies a custom SMTP command to use instead of HELP or VRFY. (Added in 7.34.0) - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/resolve.d b/Engine/lib/curl/docs/cmdline-opts/resolve.d deleted file mode 100644 index eecaa78a5..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/resolve.d +++ /dev/null @@ -1,40 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: resolve -Arg: <[+]host:port:addr[,addr]...> -Help: Resolve the host+port to this address -Added: 7.21.3 -Category: connection dns -Example: --resolve example.com:443:127.0.0.1 $URL -See-also: connect-to alt-svc ---- -Provide a custom address for a specific host and port pair. Using this, you -can make the curl requests(s) use a specified address and prevent the -otherwise normally resolved address to be used. Consider it a sort of -/etc/hosts alternative provided on the command line. The port number should be -the number used for the specific protocol the host will be used for. It means -you need several entries if you want to provide address for the same host but -different ports. - -By specifying '*' as host you can tell curl to resolve any host and specific -port pair to the specified address. Wildcard is resolved last so any --resolve -with a specific host and port will be used first. - -The provided address set by this option will be used even if --ipv4 or --ipv6 -is set to make curl use another IP version. - -By prefixing the host with a '+' you can make the entry time out after curl's -default timeout (1 minute). Note that this will only make sense for long -running parallel transfers with a lot of files. In such cases, if this option -is used curl will try to resolve the host as it normally would once the -timeout has expired. - -Support for providing the IP address within [brackets] was added in 7.57.0. - -Support for providing multiple IP addresses per entry was added in 7.59.0. - -Support for resolving with wildcard was added in 7.64.0. - -Support for the '+' prefix was was added in 7.75.0. - -This option can be used many times to add many host names to resolve. diff --git a/Engine/lib/curl/docs/cmdline-opts/retry-all-errors.d b/Engine/lib/curl/docs/cmdline-opts/retry-all-errors.d deleted file mode 100644 index da86a42a7..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/retry-all-errors.d +++ /dev/null @@ -1,33 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: retry-all-errors -Help: Retry all errors (use with --retry) -Added: 7.71.0 -Category: curl -Example: --retry 5 --retry-all-errors $URL -See-also: retry ---- -Retry on any error. This option is used together with --retry. - -This option is the "sledgehammer" of retrying. Do not use this option by -default (eg in curlrc), there may be unintended consequences such as sending or -receiving duplicate data. Do not use with redirected input or output. You'd be -much better off handling your unique problems in shell script. Please read the -example below. - -**WARNING**: For server compatibility curl attempts to retry failed flaky -transfers as close as possible to how they were started, but this is not -possible with redirected input or output. For example, before retrying it -removes output data from a failed partial transfer that was written to an -output file. However this is not true of data redirected to a | pipe or > -file, which are not reset. We strongly suggest you do not parse or record -output via redirect in combination with this option, since you may receive -duplicate data. - -By default curl will not error on an HTTP response code that indicates an HTTP -error, if the transfer was successful. For example, if a server replies 404 -Not Found and the reply is fully received then that is not an error. When ---retry is used then curl will retry on some HTTP response codes that indicate -transient HTTP errors, but that does not include most 4xx response codes such -as 404. If you want to retry on all response codes that indicate HTTP errors -(4xx and 5xx) then combine with --fail. diff --git a/Engine/lib/curl/docs/cmdline-opts/retry-connrefused.d b/Engine/lib/curl/docs/cmdline-opts/retry-connrefused.d deleted file mode 100644 index 7517bf781..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/retry-connrefused.d +++ /dev/null @@ -1,11 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: retry-connrefused -Help: Retry on connection refused (use with --retry) -Added: 7.52.0 -Category: curl -Example: --retry-connrefused --retry $URL -See-also: retry retry-all-errors ---- -In addition to the other conditions, consider ECONNREFUSED as a transient -error too for --retry. This option is used together with --retry. diff --git a/Engine/lib/curl/docs/cmdline-opts/retry-delay.d b/Engine/lib/curl/docs/cmdline-opts/retry-delay.d deleted file mode 100644 index 45b0ed9af..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/retry-delay.d +++ /dev/null @@ -1,16 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: retry-delay -Arg: -Help: Wait time between retries -Added: 7.12.3 -Category: curl -Example: --retry-delay 5 --retry $URL -See-also: retry ---- -Make curl sleep this amount of time before each retry when a transfer has -failed with a transient error (it changes the default backoff time algorithm -between retries). This option is only interesting if --retry is also -used. Setting this delay to zero will make curl use the default backoff time. - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/retry-max-time.d b/Engine/lib/curl/docs/cmdline-opts/retry-max-time.d deleted file mode 100644 index 40d242101..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/retry-max-time.d +++ /dev/null @@ -1,18 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: retry-max-time -Arg: -Help: Retry only within this period -Added: 7.12.3 -Category: curl -Example: --retry-max-time 30 --retry 10 $URL -See-also: retry ---- -The retry timer is reset before the first transfer attempt. Retries will be -done as usual (see --retry) as long as the timer has not reached this given -limit. Notice that if the timer has not reached the limit, the request will be -made and while performing, it may take longer than this given time period. To -limit a single request's maximum time, use --max-time. Set this option to -zero to not timeout retries. - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/retry.d b/Engine/lib/curl/docs/cmdline-opts/retry.d deleted file mode 100644 index 1d4e01c86..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/retry.d +++ /dev/null @@ -1,26 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: retry -Arg: -Added: 7.12.3 -Help: Retry request if transient problems occur -Category: curl -Example: --retry 7 $URL -See-also: retry-max-time ---- -If a transient error is returned when curl tries to perform a transfer, it -will retry this number of times before giving up. Setting the number to 0 -makes curl do no retries (which is the default). Transient error means either: -a timeout, an FTP 4xx response code or an HTTP 408, 429, 500, 502, 503 or 504 -response code. - -When curl is about to retry a transfer, it will first wait one second and then -for all forthcoming retries it will double the waiting time until it reaches -10 minutes which then will be the delay between the rest of the retries. By -using --retry-delay you disable this exponential backoff algorithm. See also ---retry-max-time to limit the total time allowed for retries. - -Since curl 7.66.0, curl will comply with the Retry-After: response header if -one was present to know when to issue the next retry. - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/sasl-authzid.d b/Engine/lib/curl/docs/cmdline-opts/sasl-authzid.d deleted file mode 100644 index a1f035e01..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/sasl-authzid.d +++ /dev/null @@ -1,17 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: sasl-authzid -Arg: -Help: Identity for SASL PLAIN authentication -Added: 7.66.0 -Category: auth -Example: --sasl-authzid zid imap://example.com/ -See-also: login-options ---- -Use this authorization identity (authzid), during SASL PLAIN authentication, -in addition to the authentication identity (authcid) as specified by --user. - -If the option is not specified, the server will derive the authzid from the -authcid, but if specified, and depending on the server implementation, it may -be used to access another user's inbox, that the user has been granted access -to, or a shared mailbox for example. diff --git a/Engine/lib/curl/docs/cmdline-opts/sasl-ir.d b/Engine/lib/curl/docs/cmdline-opts/sasl-ir.d deleted file mode 100644 index fb8fb8c3b..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/sasl-ir.d +++ /dev/null @@ -1,10 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: sasl-ir -Help: Enable initial response in SASL authentication -Added: 7.31.0 -Category: auth -Example: --sasl-ir imap://example.com/ -See-also: sasl-authzid ---- -Enable initial response in SASL authentication. diff --git a/Engine/lib/curl/docs/cmdline-opts/service-name.d b/Engine/lib/curl/docs/cmdline-opts/service-name.d deleted file mode 100644 index 887a09ebc..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/service-name.d +++ /dev/null @@ -1,13 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: service-name -Help: SPNEGO service name -Arg: -Added: 7.43.0 -Category: misc -Example: --service-name sockd/server $URL -See-also: negotiate proxy-service-name ---- -This option allows you to change the service name for SPNEGO. - -Examples: --negotiate --service-name sockd would use sockd/server-name. diff --git a/Engine/lib/curl/docs/cmdline-opts/show-error.d b/Engine/lib/curl/docs/cmdline-opts/show-error.d deleted file mode 100644 index 9a5d29e5a..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/show-error.d +++ /dev/null @@ -1,14 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: show-error -Short: S -Help: Show error even when -s is used -See-also: no-progress-meter -Category: curl -Example: --show-error --silent $URL -Added: 5.9 ---- -When used with --silent, it makes curl show an error message if it fails. - -This option is global and does not need to be specified for each use of ---next. diff --git a/Engine/lib/curl/docs/cmdline-opts/silent.d b/Engine/lib/curl/docs/cmdline-opts/silent.d deleted file mode 100644 index f0a788aa3..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/silent.d +++ /dev/null @@ -1,16 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: silent -Short: s -Help: Silent mode -See-also: verbose stderr no-progress-meter -Category: important verbose -Example: -s $URL -Added: 4.0 ---- -Silent or quiet mode. Do not show progress meter or error messages. Makes Curl -mute. It will still output the data you ask for, potentially even to the -terminal/stdout unless you redirect it. - -Use --show-error in addition to this option to disable progress meter but -still show error messages. diff --git a/Engine/lib/curl/docs/cmdline-opts/socks4.d b/Engine/lib/curl/docs/cmdline-opts/socks4.d deleted file mode 100644 index 5c4f4b1b3..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/socks4.d +++ /dev/null @@ -1,28 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: socks4 -Arg: -Help: SOCKS4 proxy on given host + port -Added: 7.15.2 -Category: proxy -Example: --socks4 hostname:4096 $URL -See-also: socks4a socks5 socks5-hostname ---- -Use the specified SOCKS4 proxy. If the port number is not specified, it is -assumed at port 1080. Using this socket type make curl resolve the host name -and passing the address on to the proxy. - -To specify proxy on a unix domain socket, use localhost for host, e.g. -socks4://localhost/path/to/socket.sock - -This option overrides any previous use of --proxy, as they are mutually -exclusive. - -This option is superfluous since you can specify a socks4 proxy with --proxy -using a socks4:// protocol prefix. (Added in 7.21.7) - -Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at the same time ---proxy is used with an HTTP/HTTPS proxy. In such a case curl first connects to -the SOCKS proxy and then connects (through SOCKS) to the HTTP or HTTPS proxy. - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/socks4a.d b/Engine/lib/curl/docs/cmdline-opts/socks4a.d deleted file mode 100644 index 4b8c5f72b..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/socks4a.d +++ /dev/null @@ -1,27 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: socks4a -Arg: -Help: SOCKS4a proxy on given host + port -Added: 7.18.0 -Category: proxy -Example: --socks4a hostname:4096 $URL -See-also: socks4 socks5 socks5-hostname ---- -Use the specified SOCKS4a proxy. If the port number is not specified, it is -assumed at port 1080. This asks the proxy to resolve the host name. - -To specify proxy on a unix domain socket, use localhost for host, e.g. -socks4a://localhost/path/to/socket.sock - -This option overrides any previous use of --proxy, as they are mutually -exclusive. - -This option is superfluous since you can specify a socks4a proxy with --proxy -using a socks4a:// protocol prefix. (Added in 7.21.7) - -Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at the same time ---proxy is used with an HTTP/HTTPS proxy. In such a case curl first connects to -the SOCKS proxy and then connects (through SOCKS) to the HTTP or HTTPS proxy. - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/socks5-basic.d b/Engine/lib/curl/docs/cmdline-opts/socks5-basic.d deleted file mode 100644 index d5c1b8a62..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/socks5-basic.d +++ /dev/null @@ -1,12 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: socks5-basic -Help: Enable username/password auth for SOCKS5 proxies -Added: 7.55.0 -Category: proxy auth -Example: --socks5-basic --socks5 hostname:4096 $URL -See-also: socks5 ---- -Tells curl to use username/password authentication when connecting to a SOCKS5 -proxy. The username/password authentication is enabled by default. Use ---socks5-gssapi to force GSS-API authentication to SOCKS5 proxies. diff --git a/Engine/lib/curl/docs/cmdline-opts/socks5-gssapi-nec.d b/Engine/lib/curl/docs/cmdline-opts/socks5-gssapi-nec.d deleted file mode 100644 index 3f85b9a07..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/socks5-gssapi-nec.d +++ /dev/null @@ -1,13 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: socks5-gssapi-nec -Help: Compatibility with NEC SOCKS5 server -Added: 7.19.4 -Category: proxy auth -Example: --socks5-gssapi-nec --socks5 hostname:4096 $URL -See-also: socks5 ---- -As part of the GSS-API negotiation a protection mode is negotiated. RFC 1961 -says in section 4.3/4.4 it should be protected, but the NEC reference -implementation does not. The option --socks5-gssapi-nec allows the -unprotected exchange of the protection mode negotiation. diff --git a/Engine/lib/curl/docs/cmdline-opts/socks5-gssapi-service.d b/Engine/lib/curl/docs/cmdline-opts/socks5-gssapi-service.d deleted file mode 100644 index f092f7d26..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/socks5-gssapi-service.d +++ /dev/null @@ -1,17 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: socks5-gssapi-service -Arg: -Help: SOCKS5 proxy service name for GSS-API -Added: 7.19.4 -Category: proxy auth -Example: --socks5-gssapi-service sockd --socks5 hostname:4096 $URL -See-also: socks5 ---- -The default service name for a socks server is rcmd/server-fqdn. This option -allows you to change it. - -Examples: --socks5 proxy-name --socks5-gssapi-service sockd would use -sockd/proxy-name --socks5 proxy-name --socks5-gssapi-service sockd/real-name -would use sockd/real-name for cases where the proxy-name does not match the -principal name. diff --git a/Engine/lib/curl/docs/cmdline-opts/socks5-gssapi.d b/Engine/lib/curl/docs/cmdline-opts/socks5-gssapi.d deleted file mode 100644 index ea2ffe557..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/socks5-gssapi.d +++ /dev/null @@ -1,13 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: socks5-gssapi -Help: Enable GSS-API auth for SOCKS5 proxies -Added: 7.55.0 -Category: proxy auth -Example: --socks5-gssapi --socks5 hostname:4096 $URL -See-also: socks5 ---- -Tells curl to use GSS-API authentication when connecting to a SOCKS5 proxy. -The GSS-API authentication is enabled by default (if curl is compiled with -GSS-API support). Use --socks5-basic to force username/password authentication -to SOCKS5 proxies. diff --git a/Engine/lib/curl/docs/cmdline-opts/socks5-hostname.d b/Engine/lib/curl/docs/cmdline-opts/socks5-hostname.d deleted file mode 100644 index 04d8dbf4b..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/socks5-hostname.d +++ /dev/null @@ -1,27 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: socks5-hostname -Arg: -Help: SOCKS5 proxy, pass host name to proxy -Added: 7.18.0 -Category: proxy -Example: --socks5-hostname proxy.example:7000 $URL -See-also: socks5 socks4a ---- -Use the specified SOCKS5 proxy (and let the proxy resolve the host name). If -the port number is not specified, it is assumed at port 1080. - -To specify proxy on a unix domain socket, use localhost for host, e.g. -socks5h://localhost/path/to/socket.sock - -This option overrides any previous use of --proxy, as they are mutually -exclusive. - -This option is superfluous since you can specify a socks5 hostname proxy with ---proxy using a socks5h:// protocol prefix. (Added in 7.21.7) - -Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at the same time ---proxy is used with an HTTP/HTTPS proxy. In such a case curl first connects to -the SOCKS proxy and then connects (through SOCKS) to the HTTP or HTTPS proxy. - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/socks5.d b/Engine/lib/curl/docs/cmdline-opts/socks5.d deleted file mode 100644 index 0959ebdc7..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/socks5.d +++ /dev/null @@ -1,29 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: socks5 -Arg: -Help: SOCKS5 proxy on given host + port -Added: 7.18.0 -Category: proxy -Example: --socks5 proxy.example:7000 $URL -See-also: socks5-hostname socks4a ---- -Use the specified SOCKS5 proxy - but resolve the host name locally. If the -port number is not specified, it is assumed at port 1080. - -To specify proxy on a unix domain socket, use localhost for host, e.g. -socks5://localhost/path/to/socket.sock - -This option overrides any previous use of --proxy, as they are mutually -exclusive. - -This option is superfluous since you can specify a socks5 proxy with --proxy -using a socks5:// protocol prefix. (Added in 7.21.7) - -Since 7.52.0, --preproxy can be used to specify a SOCKS proxy at the same time ---proxy is used with an HTTP/HTTPS proxy. In such a case curl first connects to -the SOCKS proxy and then connects (through SOCKS) to the HTTP or HTTPS proxy. - -If this option is used several times, the last one will be used. - -This option (as well as --socks4) does not work with IPV6, FTPS or LDAP. diff --git a/Engine/lib/curl/docs/cmdline-opts/speed-limit.d b/Engine/lib/curl/docs/cmdline-opts/speed-limit.d deleted file mode 100644 index 413574357..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/speed-limit.d +++ /dev/null @@ -1,16 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: speed-limit -Short: Y -Arg: -Help: Stop transfers slower than this -Category: connection -Example: --speed-limit 300 --speed-time 10 $URL -Added: 4.7 -See-also: speed-time limit-rate max-time ---- -If a transfer is slower than this given speed (in bytes per second) for -speed-time seconds it gets aborted. speed-time is set with --speed-time and is -30 if not set. - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/speed-time.d b/Engine/lib/curl/docs/cmdline-opts/speed-time.d deleted file mode 100644 index 0df150313..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/speed-time.d +++ /dev/null @@ -1,19 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: speed-time -Short: y -Arg: -Help: Trigger 'speed-limit' abort after this time -Category: connection -Example: --speed-limit 300 --speed-time 10 $URL -Added: 4.7 -See-also: speed-limit limit-rate ---- -If a transfer runs slower than speed-limit bytes per second during a speed-time -period, the transfer is aborted. If speed-time is used, the default -speed-limit will be 1 unless set with --speed-limit. - -This option controls transfers (in both directions) but will not affect slow -connects etc. If this is a concern for you, try the --connect-timeout option. - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/ssl-allow-beast.d b/Engine/lib/curl/docs/cmdline-opts/ssl-allow-beast.d deleted file mode 100644 index 361fd2489..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/ssl-allow-beast.d +++ /dev/null @@ -1,16 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: ssl-allow-beast -Help: Allow security flaw to improve interop -Added: 7.25.0 -Category: tls -Example: --ssl-allow-beast $URL -See-also: proxy-ssl-allow-beast insecure ---- -This option tells curl to not work around a security flaw in the SSL3 and -TLS1.0 protocols known as BEAST. If this option is not used, the SSL layer -may use workarounds known to cause interoperability problems with some older -SSL implementations. - -**WARNING**: this option loosens the SSL security, and by using this flag you -ask for exactly that. diff --git a/Engine/lib/curl/docs/cmdline-opts/ssl-auto-client-cert.d b/Engine/lib/curl/docs/cmdline-opts/ssl-auto-client-cert.d deleted file mode 100644 index 8c460c09c..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/ssl-auto-client-cert.d +++ /dev/null @@ -1,15 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: ssl-auto-client-cert -Help: Use auto client certificate (Schannel) -Added: 7.77.0 -See-also: proxy-ssl-auto-client-cert -Category: tls -Example: --ssl-auto-client-cert $URL ---- -Tell libcurl to automatically locate and use a client certificate for -authentication, when requested by the server. This option is only supported -for Schannel (the native Windows SSL library). Prior to 7.77.0 this was the -default behavior in libcurl with Schannel. Since the server can request any -certificate that supports client authentication in the OS certificate store it -could be a privacy violation and unexpected. diff --git a/Engine/lib/curl/docs/cmdline-opts/ssl-no-revoke.d b/Engine/lib/curl/docs/cmdline-opts/ssl-no-revoke.d deleted file mode 100644 index 84b00923e..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/ssl-no-revoke.d +++ /dev/null @@ -1,12 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: ssl-no-revoke -Help: Disable cert revocation checks (Schannel) -Added: 7.44.0 -Category: tls -Example: --ssl-no-revoke $URL -See-also: crlfile ---- -(Schannel) This option tells curl to disable certificate revocation checks. -WARNING: this option loosens the SSL security, and by using this flag you ask -for exactly that. diff --git a/Engine/lib/curl/docs/cmdline-opts/ssl-reqd.d b/Engine/lib/curl/docs/cmdline-opts/ssl-reqd.d deleted file mode 100644 index 0c0718435..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/ssl-reqd.d +++ /dev/null @@ -1,18 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: ssl-reqd -Help: Require SSL/TLS -Protocols: FTP IMAP POP3 SMTP LDAP -Added: 7.20.0 -Category: tls -Example: --ssl-reqd ftp://example.com -See-also: ssl insecure ---- -Require SSL/TLS for the connection. Terminates the connection if the server -does not support SSL/TLS. - -This option is handled in LDAP since version 7.81.0. It is fully supported -by the openldap backend and rejected by the generic ldap backend if explicit -TLS is required. - -This option was formerly known as --ftp-ssl-reqd. diff --git a/Engine/lib/curl/docs/cmdline-opts/ssl-revoke-best-effort.d b/Engine/lib/curl/docs/cmdline-opts/ssl-revoke-best-effort.d deleted file mode 100644 index 7594783d7..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/ssl-revoke-best-effort.d +++ /dev/null @@ -1,12 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: ssl-revoke-best-effort -Help: Ignore missing/offline cert CRL dist points -Added: 7.70.0 -Category: tls -Example: --ssl-revoke-best-effort $URL -See-also: crlfile insecure ---- -(Schannel) This option tells curl to ignore certificate revocation checks when -they failed due to missing/offline distribution points for the revocation check -lists. diff --git a/Engine/lib/curl/docs/cmdline-opts/ssl.d b/Engine/lib/curl/docs/cmdline-opts/ssl.d deleted file mode 100644 index e9f23a385..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/ssl.d +++ /dev/null @@ -1,22 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: ssl -Help: Try SSL/TLS -Protocols: FTP IMAP POP3 SMTP LDAP -Added: 7.20.0 -Category: tls -Example: --ssl pop3://example.com/ -See-also: insecure ciphers ---- -Try to use SSL/TLS for the connection. Reverts to a non-secure connection if -the server does not support SSL/TLS. See also --ftp-ssl-control and --ssl-reqd -for different levels of encryption required. - -This option is handled in LDAP since version 7.81.0. It is fully supported -by the openldap backend and ignored by the generic ldap backend. - -Please note that a server may close the connection if the negotiation does -not succeed. - -This option was formerly known as --ftp-ssl (Added in 7.11.0). That option -name can still be used but will be removed in a future version. diff --git a/Engine/lib/curl/docs/cmdline-opts/sslv2.d b/Engine/lib/curl/docs/cmdline-opts/sslv2.d deleted file mode 100644 index 0a541d0e5..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/sslv2.d +++ /dev/null @@ -1,17 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Short: 2 -Long: sslv2 -Tags: Versions -Protocols: SSL -Added: 5.9 -Mutexed: sslv3 tlsv1 tlsv1.1 tlsv1.2 -Requires: TLS -See-also: http1.1 http2 -Help: Use SSLv2 -Category: tls -Example: --sslv2 $URL ---- -This option previously asked curl to use SSLv2, but starting in curl 7.77.0 -this instruction is ignored. SSLv2 is widely considered insecure (see RFC -6176). diff --git a/Engine/lib/curl/docs/cmdline-opts/sslv3.d b/Engine/lib/curl/docs/cmdline-opts/sslv3.d deleted file mode 100644 index ba5291029..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/sslv3.d +++ /dev/null @@ -1,17 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Short: 3 -Long: sslv3 -Tags: Versions -Protocols: SSL -Added: 5.9 -Mutexed: sslv2 tlsv1 tlsv1.1 tlsv1.2 -Requires: TLS -See-also: http1.1 http2 -Help: Use SSLv3 -Category: tls -Example: --sslv3 $URL ---- -This option previously asked curl to use SSLv3, but starting in curl 7.77.0 -this instruction is ignored. SSLv3 is widely considered insecure (see RFC -7568). diff --git a/Engine/lib/curl/docs/cmdline-opts/stderr.d b/Engine/lib/curl/docs/cmdline-opts/stderr.d deleted file mode 100644 index 274c7423f..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/stderr.d +++ /dev/null @@ -1,17 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: stderr -Arg: -Help: Where to redirect stderr -See-also: verbose silent -Category: verbose -Example: --stderr output.txt $URL -Added: 6.2 ---- -Redirect all writes to stderr to the specified file instead. If the file name -is a plain '-', it is instead written to stdout. - -This option is global and does not need to be specified for each use of ---next. - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/styled-output.d b/Engine/lib/curl/docs/cmdline-opts/styled-output.d deleted file mode 100644 index 2cc11e99d..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/styled-output.d +++ /dev/null @@ -1,14 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: styled-output -Help: Enable styled output for HTTP headers -Added: 7.61.0 -Category: verbose -Example: --styled-output -I $URL -See-also: head verbose ---- -Enables the automatic use of bold font styles when writing HTTP headers to the -terminal. Use --no-styled-output to switch them off. - -This option is global and does not need to be specified for each use of ---next. diff --git a/Engine/lib/curl/docs/cmdline-opts/suppress-connect-headers.d b/Engine/lib/curl/docs/cmdline-opts/suppress-connect-headers.d deleted file mode 100644 index 62e882050..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/suppress-connect-headers.d +++ /dev/null @@ -1,13 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: suppress-connect-headers -Help: Suppress proxy CONNECT response headers -See-also: dump-header include proxytunnel -Category: proxy -Example: --suppress-connect-headers --include -x proxy $URL -Added: 7.54.0 ---- -When --proxytunnel is used and a CONNECT request is made do not output proxy -CONNECT response headers. This option is meant to be used with --dump-header or ---include which are used to show protocol headers in the output. It has no -effect on debug options such as --verbose or --trace, or any statistics. diff --git a/Engine/lib/curl/docs/cmdline-opts/tcp-fastopen.d b/Engine/lib/curl/docs/cmdline-opts/tcp-fastopen.d deleted file mode 100644 index 36a5e2877..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/tcp-fastopen.d +++ /dev/null @@ -1,10 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: tcp-fastopen -Added: 7.49.0 -Help: Use TCP Fast Open -Category: connection -Example: --tcp-fastopen $URL -See-also: false-start ---- -Enable use of TCP Fast Open (RFC7413). diff --git a/Engine/lib/curl/docs/cmdline-opts/tcp-nodelay.d b/Engine/lib/curl/docs/cmdline-opts/tcp-nodelay.d deleted file mode 100644 index a62d7f2c2..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/tcp-nodelay.d +++ /dev/null @@ -1,14 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: tcp-nodelay -Help: Use the TCP_NODELAY option -Added: 7.11.2 -Category: connection -Example: --tcp-nodelay $URL -See-also: no-buffer ---- -Turn on the TCP_NODELAY option. See the *curl_easy_setopt(3)* man page for -details about this option. - -Since 7.50.2, curl sets this option by default and you need to explicitly -switch it off if you do not want it on. diff --git a/Engine/lib/curl/docs/cmdline-opts/telnet-option.d b/Engine/lib/curl/docs/cmdline-opts/telnet-option.d deleted file mode 100644 index 4eed7acf6..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/telnet-option.d +++ /dev/null @@ -1,18 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: telnet-option -Short: t -Arg: -Help: Set telnet option -Category: telnet -Example: -t TTYPE=vt100 telnet://example.com/ -Added: 7.7 -See-also: config ---- -Pass options to the telnet protocol. Supported options are: - -TTYPE= Sets the terminal type. - -XDISPLOC= Sets the X display location. - -NEW_ENV= Sets an environment variable. diff --git a/Engine/lib/curl/docs/cmdline-opts/tftp-blksize.d b/Engine/lib/curl/docs/cmdline-opts/tftp-blksize.d deleted file mode 100644 index 823f69cac..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/tftp-blksize.d +++ /dev/null @@ -1,16 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: tftp-blksize -Arg: -Help: Set TFTP BLKSIZE option -Protocols: TFTP -Added: 7.20.0 -Category: tftp -Example: --tftp-blksize 1024 tftp://example.com/file -See-also: tftp-no-options ---- -Set TFTP BLKSIZE option (must be >512). This is the block size that curl will -try to use when transferring data to or from a TFTP server. By default 512 -bytes will be used. - -If this option is used several times, the last one will be used. diff --git a/Engine/lib/curl/docs/cmdline-opts/tftp-no-options.d b/Engine/lib/curl/docs/cmdline-opts/tftp-no-options.d deleted file mode 100644 index cdff872c3..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/tftp-no-options.d +++ /dev/null @@ -1,15 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: tftp-no-options -Help: Do not send any TFTP options -Protocols: TFTP -Added: 7.48.0 -Category: tftp -Example: --tftp-no-options tftp://192.168.0.1/ -See-also: tftp-blksize ---- -Tells curl not to send TFTP options requests. - -This option improves interop with some legacy servers that do not acknowledge -or properly implement TFTP options. When this option is used --tftp-blksize is -ignored. diff --git a/Engine/lib/curl/docs/cmdline-opts/time-cond.d b/Engine/lib/curl/docs/cmdline-opts/time-cond.d deleted file mode 100644 index 5fde25181..000000000 --- a/Engine/lib/curl/docs/cmdline-opts/time-cond.d +++ /dev/null @@ -1,25 +0,0 @@ -c: Copyright (C) 1998 - 2022, Daniel Stenberg, , et al. -SPDX-License-Identifier: curl -Long: time-cond -Short: z -Arg:
/// Hue value, 0 - 360. - void setSelectedHue(const F64& hueValue); - F64 getSelectedHue() { return mSelectedHue; } + void setSelectedHue(const U32& hueValue); + U32 getSelectedHue() { return mSelectedHue; } /// /// Set the selected brightness. /// /// Brightness value, 0 - 100. - void setSelectedBrightness(const F64& brightValue); - F64 getSelectedBrightness() { return mSelectedBrightness; } + void setSelectedBrightness(const U32& brightValue); + U32 getSelectedBrightness() { return mSelectedBrightness; } /// /// Set the selected saturation. /// /// Saturation value, 0 - 100. - void setSelectedSaturation(const F64& satValue); - F64 getSelectedSaturation() { return mSelectedSaturation; } + void setSelectedSaturation(const U32& satValue); + U32 getSelectedSaturation() { return mSelectedSaturation; } /// /// Set the selected alpha. /// /// Alpha value, 0 - 255. - void setSelectedAlpha(const F64& alphaValue); - F64 getSelectedAlpha() { return mSelectedAlpha; } + void setSelectedAlpha(const U32& alphaValue); + U32 getSelectedAlpha() { return mSelectedAlpha; } void activateEyeDropper(); From e2a0fbefa350b0617a25b2d39aace6b79f78ed89 Mon Sep 17 00:00:00 2001 From: AzaezelX Date: Mon, 27 Jan 2025 15:37:05 -0600 Subject: [PATCH 20/91] add lod selection for visiblemesh collisions add box filtering for visiblemesh buildPolyList --- Engine/source/T3D/tsStatic.cpp | 17 +++++++++++------ Engine/source/T3D/tsStatic.h | 1 + 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/Engine/source/T3D/tsStatic.cpp b/Engine/source/T3D/tsStatic.cpp index c02cd5220..3182eeada 100644 --- a/Engine/source/T3D/tsStatic.cpp +++ b/Engine/source/T3D/tsStatic.cpp @@ -137,6 +137,7 @@ TSStatic::TSStatic() mAlphaFade = 1.0f; mPhysicsRep = NULL; + mCollisionLOD = 0; mCollisionType = CollisionMesh; mDecalType = CollisionMesh; @@ -238,7 +239,8 @@ void TSStatic::initPersistFields() endGroup("Reflection"); addGroup("Collision"); - + addField("collisionLOD", TypeS32, Offset(mCollisionLOD, TSStatic), + "The level of detail to use for 'Visible Mesh' collision queries."); addField("collisionType", TypeTSMeshType, Offset(mCollisionType, TSStatic), "The type of mesh data to use for collision queries."); addField("decalType", TypeTSMeshType, Offset(mDecalType, TSStatic), @@ -531,20 +533,20 @@ void TSStatic::prepCollision() if (mCollisionType == CollisionMesh || mCollisionType == VisibleMesh) { - mShape->findColDetails(mCollisionType == VisibleMesh, &mCollisionDetails, &mLOSDetails); + mShape->findColDetails(mCollisionType == VisibleMesh, &mCollisionDetails, &mLOSDetails, mCollisionLOD); if (mDecalType == mCollisionType) { mDecalDetailsPtr = &mCollisionDetails; } else if (mDecalType == CollisionMesh || mDecalType == VisibleMesh) { - mShape->findColDetails(mDecalType == VisibleMesh, &mDecalDetails, 0); + mShape->findColDetails(mDecalType == VisibleMesh, &mDecalDetails, 0, mCollisionLOD); mDecalDetailsPtr = &mDecalDetails; } } else if (mDecalType == CollisionMesh || mDecalType == VisibleMesh) { - mShape->findColDetails(mDecalType == VisibleMesh, &mDecalDetails, 0); + mShape->findColDetails(mDecalType == VisibleMesh, &mDecalDetails, 0, mCollisionLOD); mDecalDetailsPtr = &mDecalDetails; } @@ -947,8 +949,10 @@ U32 TSStatic::packUpdate(NetConnection* con, U32 mask, BitStream* stream) } if (stream->writeFlag(mask & UpdateCollisionMask)) + { + stream->write(mCollisionLOD); stream->write((U32)mCollisionType); - + } if (stream->writeFlag(mask & SkinMask)) con->packNetStringHandleU(stream, mSkinNameHandle); @@ -1045,6 +1049,7 @@ void TSStatic::unpackUpdate(NetConnection* con, BitStream* stream) { U32 collisionType = CollisionMesh; + stream->read(&mCollisionLOD); stream->read(&collisionType); // Handle it if we have changed CollisionType's @@ -1255,7 +1260,7 @@ bool TSStatic::buildPolyList(PolyListContext context, AbstractPolyList* polyList else if (meshType == Bounds) polyList->addBox(mObjBox); else if (meshType == VisibleMesh) - mShapeInstance->buildPolyList(polyList, 0); + mShapeInstance->buildPolyListOpcode(0, polyList, box); else if (context == PLC_Decal && mDecalDetailsPtr != 0) { for (U32 i = 0; i < mDecalDetailsPtr->size(); i++) diff --git a/Engine/source/T3D/tsStatic.h b/Engine/source/T3D/tsStatic.h index d0c9f6c46..fef5ed0bb 100644 --- a/Engine/source/T3D/tsStatic.h +++ b/Engine/source/T3D/tsStatic.h @@ -205,6 +205,7 @@ protected: TSThread* mAmbientThread; F32 mAnimOffset; F32 mAnimSpeed; + S16 mCollisionLOD; /// The type of mesh data to return for collision queries. MeshType mCollisionType; From d2a1153a49594ff56f3ef6c64f8b923c92ec0a6f Mon Sep 17 00:00:00 2001 From: AzaezelX Date: Mon, 27 Jan 2025 16:29:07 -0600 Subject: [PATCH 21/91] turn zbuffer checks on, account for reverse depth changes --- Engine/source/afx/afxZodiacGroundPlaneRenderer_T3D.cpp | 2 +- Engine/source/afx/afxZodiacMeshRoadRenderer_T3D.cpp | 6 ++---- Engine/source/afx/afxZodiacPolysoupRenderer_T3D.cpp | 6 ++---- Engine/source/afx/afxZodiacTerrainRenderer_T3D.cpp | 6 ++---- Engine/source/afx/arcaneFX.cpp | 6 +++--- Engine/source/afx/ce/afxBillboard_T3D.cpp | 5 ++--- Engine/source/afx/ce/afxZodiacPlane_T3D.cpp | 2 +- 7 files changed, 13 insertions(+), 20 deletions(-) diff --git a/Engine/source/afx/afxZodiacGroundPlaneRenderer_T3D.cpp b/Engine/source/afx/afxZodiacGroundPlaneRenderer_T3D.cpp index 9dd7d018d..0aff99e6c 100644 --- a/Engine/source/afx/afxZodiacGroundPlaneRenderer_T3D.cpp +++ b/Engine/source/afx/afxZodiacGroundPlaneRenderer_T3D.cpp @@ -108,7 +108,7 @@ void afxZodiacGroundPlaneRenderer::initShader() d.zDefined = false; d.zEnable = true; d.zWriteEnable = false; - d.zFunc = GFXCmpLessEqual; + d.zFunc = GFXCmpGreaterEqual; d.zSlopeBias = 0; d.alphaDefined = true; d.alphaTestEnable = true; diff --git a/Engine/source/afx/afxZodiacMeshRoadRenderer_T3D.cpp b/Engine/source/afx/afxZodiacMeshRoadRenderer_T3D.cpp index 5d754084b..cb8fabfc5 100644 --- a/Engine/source/afx/afxZodiacMeshRoadRenderer_T3D.cpp +++ b/Engine/source/afx/afxZodiacMeshRoadRenderer_T3D.cpp @@ -105,10 +105,8 @@ void afxZodiacMeshRoadRenderer::initShader() d.cullDefined = true; d.blendDefined = true; d.blendEnable = true; - d.zDefined = false; - d.zEnable = true; - d.zWriteEnable = false; - d.zFunc = GFXCmpLessEqual; + d.setZReadWrite(true, false); + d.zFunc = GFXCmpGreaterEqual; d.zSlopeBias = 0; d.alphaDefined = true; d.alphaTestEnable = true; diff --git a/Engine/source/afx/afxZodiacPolysoupRenderer_T3D.cpp b/Engine/source/afx/afxZodiacPolysoupRenderer_T3D.cpp index d34da0f03..2e100332a 100644 --- a/Engine/source/afx/afxZodiacPolysoupRenderer_T3D.cpp +++ b/Engine/source/afx/afxZodiacPolysoupRenderer_T3D.cpp @@ -105,10 +105,8 @@ void afxZodiacPolysoupRenderer::initShader() d.cullDefined = true; d.blendDefined = true; d.blendEnable = true; - d.zDefined = false; - d.zEnable = true; - d.zWriteEnable = false; - d.zFunc = GFXCmpLessEqual; + d.setZReadWrite(true, false); + d.zFunc = GFXCmpGreaterEqual; d.zSlopeBias = 0; d.alphaDefined = true; d.alphaTestEnable = true; diff --git a/Engine/source/afx/afxZodiacTerrainRenderer_T3D.cpp b/Engine/source/afx/afxZodiacTerrainRenderer_T3D.cpp index 6e82b97a3..04c54f667 100644 --- a/Engine/source/afx/afxZodiacTerrainRenderer_T3D.cpp +++ b/Engine/source/afx/afxZodiacTerrainRenderer_T3D.cpp @@ -115,10 +115,8 @@ void afxZodiacTerrainRenderer::initShader() d.cullDefined = true; d.blendDefined = true; d.blendEnable = true; - d.zDefined = false; - d.zEnable = true; - d.zWriteEnable = false; - d.zFunc = GFXCmpLessEqual; + d.setZReadWrite(true, false); + d.zFunc = GFXCmpGreaterEqual; d.zSlopeBias = 0; d.alphaDefined = true; d.alphaTestEnable = true; diff --git a/Engine/source/afx/arcaneFX.cpp b/Engine/source/afx/arcaneFX.cpp index db3dd43a7..9b3f28eba 100644 --- a/Engine/source/afx/arcaneFX.cpp +++ b/Engine/source/afx/arcaneFX.cpp @@ -108,9 +108,9 @@ U32 arcaneFX::sTargetSelectionTimeoutMS = 500; bool arcaneFX::sClickToTargetSelf = false; U32 arcaneFX::sMissileCollisionMask = 0; StringTableEntry arcaneFX::sParameterFieldPrefix = 0; -F32 arcaneFX::sTerrainZodiacZBias = -0.00025f; -F32 arcaneFX::sInteriorZodiacZBias = -0.0001f; -F32 arcaneFX::sPolysoupZodiacZBias = -0.0001f; +F32 arcaneFX::sTerrainZodiacZBias = 0.00025f; +F32 arcaneFX::sInteriorZodiacZBias = 0.0001f; +F32 arcaneFX::sPolysoupZodiacZBias = 0.0001f; U32 arcaneFX::master_choreographer_id = 1; U16 arcaneFX::master_scope_id = 1; bool arcaneFX::is_shutdown = true; diff --git a/Engine/source/afx/ce/afxBillboard_T3D.cpp b/Engine/source/afx/ce/afxBillboard_T3D.cpp index 81d84ebc4..366a867aa 100644 --- a/Engine/source/afx/ce/afxBillboard_T3D.cpp +++ b/Engine/source/afx/ce/afxBillboard_T3D.cpp @@ -67,9 +67,8 @@ void afxBillboard::_renderBillboard(ObjectRenderInst *ri, SceneRenderState* stat desc.alphaTestRef = 1; desc.alphaTestFunc = GFXCmpGreaterEqual; - desc.setZReadWrite(true); - desc.zFunc = GFXCmpLessEqual; - desc.zWriteEnable = false; + desc.setZReadWrite(true, false); + desc.zFunc = GFXCmpGreaterEqual; desc.samplersDefined = true; diff --git a/Engine/source/afx/ce/afxZodiacPlane_T3D.cpp b/Engine/source/afx/ce/afxZodiacPlane_T3D.cpp index 59ea81763..22cb949b3 100644 --- a/Engine/source/afx/ce/afxZodiacPlane_T3D.cpp +++ b/Engine/source/afx/ce/afxZodiacPlane_T3D.cpp @@ -125,7 +125,7 @@ void afxZodiacPlane::_renderZodiacPlane(ObjectRenderInst *ri, SceneRenderState* desc.setAlphaTest(true, GFXCmpGreater, 0); desc.setZReadWrite(true); - desc.zFunc = GFXCmpLessEqual; + desc.zFunc = GFXCmpGreaterEqual; desc.zWriteEnable = false; desc.samplersDefined = true; From f5b7f70f50c3d1b0d4649acd93e9d3bce2d2fc17 Mon Sep 17 00:00:00 2001 From: AzaezelX Date: Mon, 27 Jan 2025 17:19:22 -0600 Subject: [PATCH 22/91] add a specific lod option for findColDetails --- Engine/source/ts/tsCollision.cpp | 26 ++++++++++++++++++-------- Engine/source/ts/tsShape.h | 2 +- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/Engine/source/ts/tsCollision.cpp b/Engine/source/ts/tsCollision.cpp index 22381436b..04adffdf8 100644 --- a/Engine/source/ts/tsCollision.cpp +++ b/Engine/source/ts/tsCollision.cpp @@ -811,11 +811,11 @@ bool TSShapeInstance::buildConvexOpcode( const MatrixF &objMat, const Point3F &o return emitted; } -void TSShape::findColDetails( bool useVisibleMesh, Vector *outDetails, Vector *outLOSDetails ) const +void TSShape::findColDetails( bool useVisibleMesh, Vector *outDetails, Vector *outLOSDetails, S32 specifiedLOD) const { PROFILE_SCOPE( TSShape_findColDetails ); - if ( useVisibleMesh ) + if ( useVisibleMesh || (specifiedLOD !=0)) { // If we're using the visible mesh for collision then // find the highest detail and use that. @@ -836,12 +836,23 @@ void TSShape::findColDetails( bool useVisibleMesh, Vector *outDetails, Vect dStrStartsWith( name, "LOS" ) ) continue; */ - - // Otherwise test against the current highest size - if ( details[i].size > highestSize ) + if (specifiedLOD != 0) { - highestDetail = i; - highestSize = details[i].size; + if (details[i].size == specifiedLOD) + { + highestDetail = i; + highestSize = details[i].size; + + } + } + else + { + // Otherwise test against the current highest size + if (details[i].size > highestSize) + { + highestDetail = i; + highestSize = details[i].size; + } } } @@ -852,7 +863,6 @@ void TSShape::findColDetails( bool useVisibleMesh, Vector *outDetails, Vect if ( outLOSDetails ) outLOSDetails->push_back( highestDetail ); } - return; } diff --git a/Engine/source/ts/tsShape.h b/Engine/source/ts/tsShape.h index c2a3fc1c4..c4446faa5 100644 --- a/Engine/source/ts/tsShape.h +++ b/Engine/source/ts/tsShape.h @@ -475,7 +475,7 @@ class TSShape /// @param outDetails The output detail index vector. /// @param outLOSDetails The optional output LOS detail vector. /// - void findColDetails( bool useVisibleMesh, Vector *outDetails, Vector *outLOSDetails ) const; + void findColDetails(bool useVisibleMesh, Vector* outDetails, Vector* outLOSDetails, S32 specifiedLOD = 0 ) const; /// Builds a physics collision shape at the requested scale. /// From 5a0b9a51203609b76e2d879277219cd8ada90eff Mon Sep 17 00:00:00 2001 From: AzaezelX Date: Wed, 29 Jan 2025 00:16:03 -0600 Subject: [PATCH 23/91] fix material editor becoming nonresponsive when specifically dragging and dropping a texture --- .../tools/materialEditor/scripts/materialEditor.ed.tscript | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Templates/BaseGame/game/tools/materialEditor/scripts/materialEditor.ed.tscript b/Templates/BaseGame/game/tools/materialEditor/scripts/materialEditor.ed.tscript index 1f2d4fdf6..a0919e915 100644 --- a/Templates/BaseGame/game/tools/materialEditor/scripts/materialEditor.ed.tscript +++ b/Templates/BaseGame/game/tools/materialEditor/scripts/materialEditor.ed.tscript @@ -2733,6 +2733,11 @@ function matEdDragNDropMapAssignment(%type, %payload) MaterialEditorGui.guiSync( materialEd_previewMaterial ); MaterialEditorGui.doUpdateTextureMap( %assetId ); + Canvas.popDialog(EditorDragAndDropLayer); + if(EditorSettings.value("AssetManagement/Assets/closeBrowserOnDragAction", false)) + { + AssetBrowser.hideDialog(); + } } function materialEditorDiffuseMapContainer::onControlDropped( %this, %payload, %position ) From e47fe2b1f3e40db07f1243b59d270dd486b810da Mon Sep 17 00:00:00 2001 From: JeffR Date: Thu, 30 Jan 2025 15:18:51 -0600 Subject: [PATCH 24/91] Adjusts the OpenAL device listing query to ensure more reliable results. --- Engine/source/sfx/openal/aldlist.cpp | 74 +++++++++++----------- Engine/source/sfx/openal/aldlist.h | 1 - Engine/source/sfx/openal/sfxALProvider.cpp | 10 +-- 3 files changed, 41 insertions(+), 44 deletions(-) diff --git a/Engine/source/sfx/openal/aldlist.cpp b/Engine/source/sfx/openal/aldlist.cpp index b80efd21f..f55a56569 100644 --- a/Engine/source/sfx/openal/aldlist.cpp +++ b/Engine/source/sfx/openal/aldlist.cpp @@ -33,10 +33,11 @@ #include #endif + /* * Init call */ -ALDeviceList::ALDeviceList( const OPENALFNTABLE &oalft ) +ALDeviceList::ALDeviceList( const OPENALFNTABLE& oalft ) { VECTOR_SET_ASSOCIATION( vDeviceInfo ); @@ -44,8 +45,9 @@ ALDeviceList::ALDeviceList( const OPENALFNTABLE &oalft ) char *devices; int index; const char *defaultDeviceName; + const char *actualDeviceName; - dMemcpy( &ALFunction, &oalft, sizeof( OPENALFNTABLE ) ); + dMemcpy( &ALFunction, &oalft, sizeof(OPENALFNTABLE) ); // DeviceInfo vector stores, for each enumerated device, it's device name, selection status, spec version #, and extension support vDeviceInfo.clear(); @@ -66,44 +68,48 @@ ALDeviceList::ALDeviceList( const OPENALFNTABLE &oalft ) index = 0; // go through device list (each device terminated with a single NULL, list terminated with double NULL) - while (*devices != 0) { + while (*devices != '\0') { if (String::compare(defaultDeviceName, devices) == 0) { defaultDeviceIndex = index; } - bool bNewName = true; - for (int i = 0; i < GetNumDevices(); i++) { - if (String::compare(GetDeviceName(i), devices) == 0) { - bNewName = false; - } - } - - if ((bNewName) && (devices != NULL) && (dStrlen(devices) > 0)) + ALCdevice* device = ALFunction.alcOpenDevice(devices); + if (device) { - dMemset(&ALDeviceInfo, 0, sizeof(ALDEVICEINFO)); - ALDeviceInfo.bSelected = true; - dStrncpy(ALDeviceInfo.strInternalDeviceName, devices, sizeof(ALDeviceInfo.strInternalDeviceName)); - char deviceExternal[256]; - dStrcpy(deviceExternal, devices, 256); - char* openFind = dStrchr(deviceExternal, '('); - if (openFind) + ALCcontext* ctx = ALFunction.alcCreateContext(device, nullptr); + + if (ctx) { - char* deviceName = openFind + 1; - char* closeFind = dStrchr(deviceName, ')'); - if (closeFind) - (*closeFind) = '\0'; + ALFunction.alcMakeContextCurrent(ctx); + actualDeviceName = ALFunction.alcGetString(device, ALC_DEVICE_SPECIFIER); + bool bNewName = true; - dStrncpy(ALDeviceInfo.strDeviceName, deviceName, sizeof(ALDeviceInfo.strDeviceName)); + if (actualDeviceName) + { + for (int i = 0; i < GetNumDevices(); i++) { + if (String::compare(GetDeviceName(i), devices) == 0) { + bNewName = false; + } + } + } + if ((bNewName) && (actualDeviceName != NULL) && (dStrlen(actualDeviceName) > 0)) + { + dMemset(&ALDeviceInfo, 0, sizeof(ALDEVICEINFO)); + ALDeviceInfo.bSelected = true; + dStrncpy(ALDeviceInfo.strDeviceName, actualDeviceName, sizeof(ALDeviceInfo.strDeviceName)); + char deviceExternal[256]; + dStrcpy(deviceExternal, devices, 256); + + vDeviceInfo.push_back(ALDeviceInfo); + } + + ALFunction.alcMakeContextCurrent(nullptr); + ALFunction.alcDestroyContext(ctx); } - else - { - dStrncpy(ALDeviceInfo.strDeviceName, devices, sizeof(ALDeviceInfo.strDeviceName)); - } - - vDeviceInfo.push_back(ALDeviceInfo); + ALFunction.alcCloseDevice(device); } - + devices += dStrlen(devices) + 1; index += 1; } @@ -129,14 +135,6 @@ int ALDeviceList::GetNumDevices() /* * Returns the device name at an index in the complete device list */ -const char *ALDeviceList::GetInternalDeviceName(int index) -{ - if (index < GetNumDevices()) - return vDeviceInfo[index].strInternalDeviceName; - else - return NULL; -} - const char* ALDeviceList::GetDeviceName(int index) { if (index < GetNumDevices()) diff --git a/Engine/source/sfx/openal/aldlist.h b/Engine/source/sfx/openal/aldlist.h index 7927914cf..20f110361 100644 --- a/Engine/source/sfx/openal/aldlist.h +++ b/Engine/source/sfx/openal/aldlist.h @@ -53,7 +53,6 @@ public: ~ALDeviceList (); S32 GetNumDevices(); const char *GetDeviceName(S32 index); - const char *GetInternalDeviceName(S32 index); void GetDeviceVersion(S32 index, S32 *major, S32 *minor); U32 GetMaxNumSources(S32 index); bool IsExtensionSupported(S32 index, SFXALCaps caps); diff --git a/Engine/source/sfx/openal/sfxALProvider.cpp b/Engine/source/sfx/openal/sfxALProvider.cpp index 28a28b9e4..b3a62c4ba 100644 --- a/Engine/source/sfx/openal/sfxALProvider.cpp +++ b/Engine/source/sfx/openal/sfxALProvider.cpp @@ -97,7 +97,7 @@ void SFXALProvider::init() { ALDeviceInfo* info = new ALDeviceInfo; - info->internalName = String( mALDL->GetInternalDeviceName( i ) ); + //info->internalName = String( mALDL->GetInternalDeviceName( i ) ); info->name = String( mALDL->GetDeviceName( i ) ); mDeviceInfo.push_back( info ); @@ -114,14 +114,14 @@ SFXALProvider::~SFXALProvider() delete mALDL; } -SFXDevice *SFXALProvider::createDevice( const String& deviceName, bool useHardware, S32 maxBuffers ) +SFXDevice* SFXALProvider::createDevice(const String& deviceName, bool useHardware, S32 maxBuffers) { - ALDeviceInfo *info = dynamic_cast< ALDeviceInfo* > - ( _findDeviceInfo( deviceName) ); + ALDeviceInfo* info = dynamic_cast + (_findDeviceInfo(deviceName)); // Do we find one to create? if (info) - return new SFXALDevice(this, mOpenAL, info->internalName, useHardware, maxBuffers); + return new SFXALDevice(this, mOpenAL, info->name, useHardware, maxBuffers); return NULL; } From 3797038664d26df2100b88d12fe0f98bcc56b84e Mon Sep 17 00:00:00 2001 From: AzaezelX Date: Thu, 30 Jan 2025 17:29:31 -0600 Subject: [PATCH 25/91] Don't report keybinds unless asked Do report where you're saving prefs --- .../game/core/clientServer/Core_ClientServer.tscript | 4 ++-- .../game/core/clientServer/scripts/server/server.tscript | 2 +- .../BaseGame/game/data/UI/guis/joinServerMenu.tscript | 2 +- Templates/BaseGame/game/data/UI/guis/optionsMenu.tscript | 8 +++++--- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/Templates/BaseGame/game/core/clientServer/Core_ClientServer.tscript b/Templates/BaseGame/game/core/clientServer/Core_ClientServer.tscript index fa0e3a12f..cd09517c0 100644 --- a/Templates/BaseGame/game/core/clientServer/Core_ClientServer.tscript +++ b/Templates/BaseGame/game/core/clientServer/Core_ClientServer.tscript @@ -119,11 +119,11 @@ function Core_ClientServer::onDestroy( %this ) sfxShutdown(); - echo("Exporting client prefs"); %prefPath = getPrefpath(); + echo("Exporting client prefs to "@ getUserHomeDirectory() @ "/clientPrefs." @ $TorqueScriptFileExtension); export("$pref::*", %prefPath @ "/clientPrefs." @ $TorqueScriptFileExtension, false); - echo("Exporting server prefs"); + echo("Exporting server prefs to "@ getUserHomeDirectory() @ "/serverPrefs." @ $TorqueScriptFileExtension); export("$Pref::Server::*", %prefPath @ "/serverPrefs." @ $TorqueScriptFileExtension, false); BanList::Export(%prefPath @ "/banlist." @ $TorqueScriptFileExtension); } diff --git a/Templates/BaseGame/game/core/clientServer/scripts/server/server.tscript b/Templates/BaseGame/game/core/clientServer/scripts/server/server.tscript index 8ef333f5c..243563a92 100644 --- a/Templates/BaseGame/game/core/clientServer/scripts/server/server.tscript +++ b/Templates/BaseGame/game/core/clientServer/scripts/server/server.tscript @@ -251,7 +251,7 @@ function destroyServer() // Save any server settings %prefPath = getPrefpath(); - echo( "Exporting server prefs..." ); + echo( "Exporting server prefs to "@ getUserHomeDirectory() @ "/serverPrefs." @ $TorqueScriptFileExtension ); export( "$Pref::Server::*", %prefPath@"/serverPrefs." @ $TorqueScriptFileExtension, false ); BanList::Export(%prefPath@"/banlist." @ $TorqueScriptFileExtension); diff --git a/Templates/BaseGame/game/data/UI/guis/joinServerMenu.tscript b/Templates/BaseGame/game/data/UI/guis/joinServerMenu.tscript index 24aad2152..02fd09c13 100644 --- a/Templates/BaseGame/game/data/UI/guis/joinServerMenu.tscript +++ b/Templates/BaseGame/game/data/UI/guis/joinServerMenu.tscript @@ -11,8 +11,8 @@ function JoinServerMenu::onWake(%this) function JoinServerMenu::onSleep(%this) { - echo("Exporting client prefs"); %prefPath = getPrefpath(); + echo("Exporting client prefs to "@ getUserHomeDirectory() @ "/clientPrefs." @ $TorqueScriptFileExtension); export("$pref::*", %prefPath @ "/clientPrefs." @ $TorqueScriptFileExtension, false); } diff --git a/Templates/BaseGame/game/data/UI/guis/optionsMenu.tscript b/Templates/BaseGame/game/data/UI/guis/optionsMenu.tscript index a9d1aae40..d37f3ebce 100644 --- a/Templates/BaseGame/game/data/UI/guis/optionsMenu.tscript +++ b/Templates/BaseGame/game/data/UI/guis/optionsMenu.tscript @@ -1,3 +1,4 @@ +$reportKeymapping = false; $optionsEntryPad = 10; $OptionsMenuCategories[0] = "Video"; @@ -672,8 +673,8 @@ function OptionsMenu::populateKeybinds(%this, %device, %controlsList) %keyMap = buildFullMapString( %i, $RemapActionMap[%i], %device ); %description = $RemapDescription[%i]; - - echo("Added ActionMap Entry: " @ %actionMapName @ " | " @ %device @ " | " @ %keymap @ " | " @ %description); + if ($reportKeymapping) + echo("Added ActionMap Entry: " @ %actionMapName @ " | " @ %device @ " | " @ %keymap @ " | " @ %description); %remapEntry = addActionMapEntry(%actionMapName, %device, %keyMap, %i, %description); %controlsList.add(%remapEntry); @@ -1074,7 +1075,8 @@ function addActionMapEntry(%actionMap, %device, %keyMap, %index, %description) }; %buttonContainer = %entry.findObjectByInternalName("valuesContainer"); - echo("Keymap: " @ %keymap @ " | Keymap word count: " @ getWordCount(getField(%keyMap, 1))); + if ($reportKeymapping) + echo("Keymap: " @ %keymap @ " | Keymap word count: " @ getWordCount(getField(%keyMap, 1))); if(getWordCount(getField(%keyMap, 1)) == 2) { %modifierBtn = new GuiIconButtonCtrl() { From 11bf7df46d87e358de26ecb720f863b3f29b6572 Mon Sep 17 00:00:00 2001 From: AzaezelX Date: Sun, 2 Feb 2025 21:08:57 -0600 Subject: [PATCH 26/91] need to filter subscenes out of screenspace box drag the ap hangs otherwise --- Engine/source/gui/worldEditor/worldEditor.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Engine/source/gui/worldEditor/worldEditor.cpp b/Engine/source/gui/worldEditor/worldEditor.cpp index a67b4ec7d..706ee2b8f 100644 --- a/Engine/source/gui/worldEditor/worldEditor.cpp +++ b/Engine/source/gui/worldEditor/worldEditor.cpp @@ -2464,7 +2464,7 @@ static void findDragMeshCallback( SceneObject *obj, void *data ) if ( dragData->mWorldEditor->objClassIgnored( obj ) || !obj->isSelectionEnabled() || obj->getTypeMask() & ( TerrainObjectType | ProjectileObjectType ) || - dynamic_cast< GroundPlane* >( obj ) || + dynamic_cast< GroundPlane* >( obj ) || dynamic_cast(obj) || Prefab::getPrefabByChild( obj ) ) { return; From cf92b29898c995beb2aa061d578c318c896d2d84 Mon Sep 17 00:00:00 2001 From: AzaezelX Date: Mon, 3 Feb 2025 11:51:53 -0600 Subject: [PATCH 27/91] take ao into account for the brdf diffuse component --- Templates/BaseGame/game/core/rendering/shaders/gl/lighting.glsl | 2 +- Templates/BaseGame/game/core/rendering/shaders/lighting.hlsl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Templates/BaseGame/game/core/rendering/shaders/gl/lighting.glsl b/Templates/BaseGame/game/core/rendering/shaders/gl/lighting.glsl index 5032de1b2..d64c9d184 100644 --- a/Templates/BaseGame/game/core/rendering/shaders/gl/lighting.glsl +++ b/Templates/BaseGame/game/core/rendering/shaders/gl/lighting.glsl @@ -226,7 +226,7 @@ float getDistanceAtt( vec3 unormalizedLightVector , float invSqrAttRadius ) vec3 evaluateStandardBRDF(Surface surface, SurfaceToLight surfaceToLight) { //diffuse term - vec3 Fd = surface.albedo.rgb * M_1OVER_PI_F; + vec3 Fd = surface.albedo.rgb * surface.ao * M_1OVER_PI_F; //GGX specular vec3 F = F_Schlick(surface.f0, surface.f90, surfaceToLight.HdotV); diff --git a/Templates/BaseGame/game/core/rendering/shaders/lighting.hlsl b/Templates/BaseGame/game/core/rendering/shaders/lighting.hlsl index cfaba95cb..76384394d 100644 --- a/Templates/BaseGame/game/core/rendering/shaders/lighting.hlsl +++ b/Templates/BaseGame/game/core/rendering/shaders/lighting.hlsl @@ -227,7 +227,7 @@ float getDistanceAtt( float3 unormalizedLightVector , float invSqrAttRadius ) float3 evaluateStandardBRDF(Surface surface, SurfaceToLight surfaceToLight) { //diffuse term - float3 Fd = surface.albedo.rgb * M_1OVER_PI_F; + float3 Fd = surface.albedo.rgb * surface.ao * M_1OVER_PI_F; //GGX specular float3 F = F_Schlick(surface.f0, surface.f90, surfaceToLight.HdotV); From 0d338f2d51fb25026611ea1e7c8735efe41dc189 Mon Sep 17 00:00:00 2001 From: JeffR Date: Wed, 5 Feb 2025 22:51:43 -0600 Subject: [PATCH 28/91] * Update levelAsset creation so it can be flagged to be creating a subScene preemptively, improving workflow when creating a SubScene level asset 'in place' via the inspector. * Fixed issue of creating new SubScene using the full level template instead of a blank level file * Fixed subScene inspector field handling so clicking the create new will mark the 'in place' created level asset as a subscene appropriately * Changed up persistenceManager logic when parsing objects out - especially with specialty fields - to use Strings instead of const char* to simplify memory juggling and improve stability * Rolled back specialty array field outputs for decal roads and convex shapes to have the field names in the output again * Added sanity check for MeshRoad's when writing out via specialty array field to ensure there are profile nodes before trying to write any * Added sanity check to avoid pointlessly writing out meshroad and river position field into subScene file as it could cause a transform double-up and cause them to move when loading from a subscene --- Engine/source/T3D/SubScene.cpp | 27 ++++- Engine/source/T3D/SubScene.h | 1 + Engine/source/T3D/assets/LevelAsset.cpp | 12 +- Engine/source/T3D/convexShape.cpp | 4 +- Engine/source/console/persistenceManager.cpp | 109 ++++++------------ Engine/source/console/persistenceManager.h | 4 +- Engine/source/environment/decalRoad.cpp | 2 +- Engine/source/environment/meshRoad.cpp | 2 +- .../scripts/assetTypes/level.tscript | 45 +++++++- .../assetBrowser/scripts/newAsset.tscript | 2 + 10 files changed, 124 insertions(+), 84 deletions(-) diff --git a/Engine/source/T3D/SubScene.cpp b/Engine/source/T3D/SubScene.cpp index 673e1e33e..013837db7 100644 --- a/Engine/source/T3D/SubScene.cpp +++ b/Engine/source/T3D/SubScene.cpp @@ -3,6 +3,8 @@ #include "gameMode.h" #include "console/persistenceManager.h" #include "console/script.h" +#include "environment/meshRoad.h" +#include "environment/river.h" #include "scene/sceneRenderState.h" #include "renderInstance/renderPassManager.h" #include "gfx/gfxDrawUtil.h" @@ -29,7 +31,8 @@ SubScene::SubScene() : mFreezeLoading(false), mTickPeriodMS(1000), mCurrTick(0), - mGlobalLayer(false) + mGlobalLayer(false), + mSaving(false) { mNetFlags.set(Ghostable | ScopeAlways); @@ -65,6 +68,7 @@ void SubScene::initPersistFields() addGroup("SubScene"); addField("isGlobalLayer", TypeBool, Offset(mGlobalLayer, SubScene), ""); INITPERSISTFIELD_LEVELASSET(Level, SubScene, "The level asset to load."); + addField("tickPeriodMS", TypeS32, Offset(mTickPeriodMS, SubScene), "evaluation rate (ms)"); addField("gameModes", TypeGameModeList, Offset(mGameModesNames, SubScene), "The game modes that this subscene is associated with."); endGroup("SubScene"); @@ -263,6 +267,9 @@ void SubScene::_onFileChanged(const Torque::Path& path) if(mLevelAsset.isNull() || Torque::Path(mLevelAsset->getLevelPath()) != path) return; + if (mSaving) + return; + AssertFatal(path == mLevelAsset->getLevelPath(), "Prefab::_onFileChanged - path does not match filename."); _closeFile(false); @@ -336,6 +343,9 @@ void SubScene::load() if (mFreezeLoading) return; + if (mSaving) + return; + _loadFile(true); mLoaded = true; @@ -362,6 +372,9 @@ void SubScene::unload() if (mFreezeLoading) return; + if (mSaving) + return; + if (isSelected()) { mStartUnloadTimerMS = Sim::getCurrentTime(); @@ -421,10 +434,15 @@ bool SubScene::save() if (mLevelAsset.isNull()) return false; + if (mSaving) + return false; + //If we're flagged for unload, push back the unload timer so we can't accidentally trip be saving partway through an unload if (mStartUnloadTimerMS != -1) mStartUnloadTimerMS = Sim::getCurrentTime(); + mSaving = true; + PersistenceManager prMger; StringTableEntry levelPath = mLevelAsset->getLevelPath(); @@ -449,6 +467,11 @@ bool SubScene::save() prMger.setDirty((*itr), levelPath); } } + + if(dynamic_cast(childObj) || dynamic_cast(childObj)) + { + prMger.addRemoveField(childObj, "position"); + } } prMger.saveDirty(); @@ -466,6 +489,8 @@ bool SubScene::save() //Finally, save saveSuccess = mLevelAsset->saveAsset(); + mSaving = false; + return saveSuccess; } diff --git a/Engine/source/T3D/SubScene.h b/Engine/source/T3D/SubScene.h index 4117e40c1..e73133057 100644 --- a/Engine/source/T3D/SubScene.h +++ b/Engine/source/T3D/SubScene.h @@ -40,6 +40,7 @@ private: S32 mStartUnloadTimerMS; bool mLoaded; + bool mSaving; bool mFreezeLoading; String mLoadIf; diff --git a/Engine/source/T3D/assets/LevelAsset.cpp b/Engine/source/T3D/assets/LevelAsset.cpp index 98bb2cc5c..e47a6f563 100644 --- a/Engine/source/T3D/assets/LevelAsset.cpp +++ b/Engine/source/T3D/assets/LevelAsset.cpp @@ -43,6 +43,7 @@ // Debug Profiling. #include "platform/profiler.h" #include "gfx/gfxDrawUtil.h" +#include "T3D/SubScene.h" //----------------------------------------------------------------------------- @@ -479,8 +480,15 @@ GuiControl* GuiInspectorTypeLevelAssetPtr::constructEditControl() // Create "Open in Editor" button mEditButton = new GuiBitmapButtonCtrl(); - dSprintf(szBuffer, sizeof(szBuffer), "$createAndAssignField = %s; AssetBrowser.setupCreateNewAsset(\"LevelAsset\", AssetBrowser.selectedModule, \"createAndAssignLevelAsset\");", - getIdString()); + String setSubSceneValue = "$createLevelAssetIsSubScene = \"\";"; + if(dynamic_cast(mInspector->getInspectObject()) != NULL) + { + setSubSceneValue = "$createLevelAssetIsSubScene = true;"; + } + + dSprintf(szBuffer, sizeof(szBuffer), "$createAndAssignField = %s; %s AssetBrowser.setupCreateNewAsset(\"LevelAsset\", AssetBrowser.selectedModule, \"createAndAssignLevelAsset\");", + getIdString(), + setSubSceneValue.c_str()); mEditButton->setField("Command", szBuffer); char bitmapName[512] = "ToolsModule:iconAdd_image"; diff --git a/Engine/source/T3D/convexShape.cpp b/Engine/source/T3D/convexShape.cpp index f5c773293..bb00c80a0 100644 --- a/Engine/source/T3D/convexShape.cpp +++ b/Engine/source/T3D/convexShape.cpp @@ -526,7 +526,7 @@ const char* ConvexShape::getSpecialFieldOut(StringTableEntry fieldName, const U3 char buffer[1024]; dMemset(buffer, 0, 1024); - dSprintf(buffer, 1024, "%g %g %g %g %g %g %g %i %g %g %g %g %g %i %i", + dSprintf(buffer, 1024, "surface = \"%g %g %g %g %g %g %g %i %g %g %g %g %g %i %i\";", quat.x, quat.y, quat.z, quat.w, pos.x, pos.y, pos.z, mSurfaceUVs[index].matID, mSurfaceUVs[index].offset.x, mSurfaceUVs[index].offset.y, mSurfaceUVs[index].scale.x, mSurfaceUVs[index].scale.y, mSurfaceUVs[index].zRot, mSurfaceUVs[index].horzFlip, mSurfaceUVs[index].vertFlip); @@ -541,7 +541,7 @@ const char* ConvexShape::getSpecialFieldOut(StringTableEntry fieldName, const U3 char buffer[1024]; dMemset(buffer, 0, 1024); - dSprintf(buffer, 1024, "%s", mSurfaceTextures[index].getMaterial()); + dSprintf(buffer, 1024, "surfaceTexture = \"%s\";", mSurfaceTextures[index].getMaterial()); return StringTable->insert(buffer); } diff --git a/Engine/source/console/persistenceManager.cpp b/Engine/source/console/persistenceManager.cpp index 83e7912dc..30c01ff06 100644 --- a/Engine/source/console/persistenceManager.cpp +++ b/Engine/source/console/persistenceManager.cpp @@ -1224,13 +1224,13 @@ void PersistenceManager::removeField(const ParsedProperty& prop) removeTextBlock(prop.startLine, prop.endLine, prop.startPosition, endPosition, true); } -U32 PersistenceManager::writeProperties(const Vector& properties, const U32 insertLine, const char* objectIndent) +U32 PersistenceManager::writeProperties(const Vector& properties, const U32 insertLine, const char* objectIndent) { U32 currInsertLine = insertLine; for (U32 i = 0; i < properties.size(); i++) { - const char* prop = properties[i]; + const char* prop = properties[i].c_str(); if (!prop || dStrlen(prop) == 0) continue; @@ -1248,7 +1248,7 @@ U32 PersistenceManager::writeProperties(const Vector& properties, c return currInsertLine - insertLine; } -PersistenceManager::ParsedObject* PersistenceManager::writeNewObject(SimObject* object, const Vector& properties, const U32 insertLine, ParsedObject* parentObject) +PersistenceManager::ParsedObject* PersistenceManager::writeNewObject(SimObject* object, const Vector& properties, const U32 insertLine, ParsedObject* parentObject) { ParsedObject* parsedObject = new ParsedObject; @@ -1353,7 +1353,7 @@ void PersistenceManager::updateObject(SimObject* object, ParsedObject* parentObj if (!defaultObject) return; - Vector newLines; + Vector newLines; ParsedObject* parsedObject = findParsedObject(object, parentObject); @@ -1392,10 +1392,10 @@ void PersistenceManager::updateObject(SimObject* object, ParsedObject* parentObj for(U32 j = 0; j < fieldArraySize; j++) { - const char* value = object->getSpecialFieldOut(f->pFieldname, j); + String value = object->getSpecialFieldOut(f->pFieldname, j); // Make sure we got a value - if (!value) + if (value.isEmpty()) continue; // Let's see if this field is already in the file @@ -1409,13 +1409,12 @@ void PersistenceManager::updateObject(SimObject* object, ParsedObject* parentObj if (findRemoveField(object, f->pFieldname, j)) { removeField(parsedObject->properties[propertyIndex]); - dFree(value); continue; } // Run the parsed value through the console system conditioners so // that it will better match the data we got back from the object. - const char* evalue = Con::getFormattedData(f->type, prop.value, f->table, f->flag); + String evalue = Con::getFormattedData(f->type, prop.value, f->table, f->flag); // If our data doesn't match then we get to update it. // @@ -1423,17 +1422,17 @@ void PersistenceManager::updateObject(SimObject* object, ParsedObject* parentObj // is there in the file, the user does not want it inherited from the copy-source // even in the case the actual values are identical. - if (dStricmp(value, evalue) != 0) + if (value != evalue) { - if (value[0] == '\0' && - dStricmp(getFieldValue(defaultObject, f->pFieldname, j), value) == 0 && - (!object->getCopySource() || dStricmp(getFieldValue(object->getCopySource(), f->pFieldname, j), value) == 0)) + if (value.isEmpty() && + dStricmp(getFieldValue(defaultObject, f->pFieldname, j), value.c_str()) == 0 && + (!object->getCopySource() || dStricmp(getFieldValue(object->getCopySource(), f->pFieldname, j), value.c_str()) == 0)) { removeField(prop); } else { - updateToken(prop.valueLine, prop.valuePosition, prop.endPosition - prop.valuePosition, value, true); + updateToken(prop.valueLine, prop.valuePosition, prop.endPosition - prop.valuePosition, value.c_str(), true); } } } @@ -1442,7 +1441,6 @@ void PersistenceManager::updateObject(SimObject* object, ParsedObject* parentObj // No need to process a removed field that doesn't exist in the file if (findRemoveField(object, f->pFieldname, j)) { - dFree(value); continue; } @@ -1452,20 +1450,17 @@ void PersistenceManager::updateObject(SimObject* object, ParsedObject* parentObj // then we need to compare against the default value // for this property and save it out if it is different - const char* defaultValue = defaultObject->getSpecialFieldOut(f->pFieldname, j); - if (!defaultValue || dStricmp(value, defaultValue) != 0) + String defaultValue = defaultObject->getSpecialFieldOut(f->pFieldname, j); + if (defaultValue.isEmpty() || value != defaultValue) { // Value differs. Check whether it also differs from the // value in the copy source if there is one. if (object->getCopySource()) { - const char* copySourceValue = getFieldValue(object->getCopySource(), f->pFieldname, j); - if (!copySourceValue || dStricmp(copySourceValue, value) != 0) + String copySourceValue = getFieldValue(object->getCopySource(), f->pFieldname, j); + if (copySourceValue.isEmpty() || copySourceValue != value) mustUpdate = true; - - if (copySourceValue) - dFree(copySourceValue); } else mustUpdate = true; @@ -1478,12 +1473,9 @@ void PersistenceManager::updateObject(SimObject* object, ParsedObject* parentObj if (object->getCopySource()) { - const char* copySourceValue = getFieldValue(object->getCopySource(), f->pFieldname, j); - if (copySourceValue && dStricmp(copySourceValue, value) != 0) + String copySourceValue = getFieldValue(object->getCopySource(), f->pFieldname, j); + if (!copySourceValue.isEmpty() && copySourceValue != value) mustUpdate = true; - - if (copySourceValue) - dFree(copySourceValue); } } @@ -1498,11 +1490,8 @@ void PersistenceManager::updateObject(SimObject* object, ParsedObject* parentObj // value then add it to the ParsedObject's newLines if (mustUpdate) { - newLines.push_back(String(value).c_str()); + newLines.push_back(value); } - - if (defaultValue) - dFree(defaultValue); } //dFree(value); @@ -1512,10 +1501,10 @@ void PersistenceManager::updateObject(SimObject* object, ParsedObject* parentObj { for (U32 j = 0; S32(j) < f->elementCount; j++) { - const char* value = getFieldValue(object, f->pFieldname, j); + String value = getFieldValue(object, f->pFieldname, j); // Make sure we got a value - if (!value) + if (value.isEmpty()) continue; // Let's see if this field is already in the file @@ -1526,16 +1515,15 @@ void PersistenceManager::updateObject(SimObject* object, ParsedObject* parentObj ParsedProperty& prop = parsedObject->properties[propertyIndex]; // If this field is on the remove list then remove it and continue - if (findRemoveField(object, f->pFieldname, j) || !object->writeField(f->pFieldname, value)) + if (findRemoveField(object, f->pFieldname, j) || !object->writeField(f->pFieldname, value.c_str())) { removeField(parsedObject->properties[propertyIndex]); - dFree(value); continue; } // Run the parsed value through the console system conditioners so // that it will better match the data we got back from the object. - const char* evalue = Con::getFormattedData(f->type, prop.value, f->table, f->flag); + String evalue = Con::getFormattedData(f->type, prop.value, f->table, f->flag); // If our data doesn't match then we get to update it. // @@ -1543,11 +1531,11 @@ void PersistenceManager::updateObject(SimObject* object, ParsedObject* parentObj // is there in the file, the user does not want it inherited from the copy-source // even in the case the actual values are identical. - if (dStricmp(value, evalue) != 0) + if (value != evalue) { - if (value[0] == '\0' && - dStricmp(getFieldValue(defaultObject, f->pFieldname, j), value) == 0 && - (!object->getCopySource() || dStricmp(getFieldValue(object->getCopySource(), f->pFieldname, j), value) == 0)) + if (value.isEmpty() && + dStricmp(getFieldValue(defaultObject, f->pFieldname, j), value.c_str()) == 0 && + (!object->getCopySource() || dStricmp(getFieldValue(object->getCopySource(), f->pFieldname, j), value.c_str()) == 0)) { removeField(prop); } @@ -1563,14 +1551,14 @@ void PersistenceManager::updateObject(SimObject* object, ParsedObject* parentObj f->type == TypeSoundFilename) { char fnBuf[1024]; - Con::collapseScriptFilename(fnBuf, 1024, value); + Con::collapseScriptFilename(fnBuf, 1024, value.c_str()); updateToken(prop.valueLine, prop.valuePosition, prop.endPosition - prop.valuePosition, fnBuf, true); } else if (f->type == TypeCommand || f->type == TypeString || f->type == TypeRealString) { char cmdBuf[1024]; - expandEscape(cmdBuf, value); + expandEscape(cmdBuf, value.c_str()); updateToken(prop.valueLine, prop.valuePosition, prop.endPosition - prop.valuePosition, cmdBuf, true); } @@ -1582,9 +1570,8 @@ void PersistenceManager::updateObject(SimObject* object, ParsedObject* parentObj else { // No need to process a removed field that doesn't exist in the file - if (findRemoveField(object, f->pFieldname, j) || !object->writeField(f->pFieldname, value)) + if (findRemoveField(object, f->pFieldname, j) || !object->writeField(f->pFieldname, value.c_str())) { - dFree(value); continue; } @@ -1594,20 +1581,17 @@ void PersistenceManager::updateObject(SimObject* object, ParsedObject* parentObj // then we need to compare against the default value // for this property and save it out if it is different - const char* defaultValue = getFieldValue(defaultObject, f->pFieldname, j); - if (!defaultValue || dStricmp(value, defaultValue) != 0) + String defaultValue = getFieldValue(defaultObject, f->pFieldname, j); + if (defaultValue.isEmpty() || value != defaultValue) { // Value differs. Check whether it also differs from the // value in the copy source if there is one. if (object->getCopySource()) { - const char* copySourceValue = getFieldValue(object->getCopySource(), f->pFieldname, j); - if (!copySourceValue || dStricmp(copySourceValue, value) != 0) + String copySourceValue = getFieldValue(object->getCopySource(), f->pFieldname, j); + if (copySourceValue.isEmpty() || copySourceValue != value) mustUpdate = true; - - if (copySourceValue) - dFree(copySourceValue); } else mustUpdate = true; @@ -1620,12 +1604,9 @@ void PersistenceManager::updateObject(SimObject* object, ParsedObject* parentObj if (object->getCopySource()) { - const char* copySourceValue = getFieldValue(object->getCopySource(), f->pFieldname, j); - if (copySourceValue && dStricmp(copySourceValue, value) != 0) + String copySourceValue = getFieldValue(object->getCopySource(), f->pFieldname, j); + if (!copySourceValue.isEmpty() && copySourceValue != value) mustUpdate = true; - - if (copySourceValue) - dFree(copySourceValue); } } @@ -1650,26 +1631,21 @@ void PersistenceManager::updateObject(SimObject* object, ParsedObject* parentObj f->type == TypeSoundFilename) { char fnBuf[1024]; - Con::collapseScriptFilename(fnBuf, 1024, value); + Con::collapseScriptFilename(fnBuf, 1024, value.c_str()); newLines.push_back(createNewProperty(f->pFieldname, fnBuf, f->elementCount > 1, j)); } else if (f->type == TypeCommand) { char cmdBuf[1024]; - expandEscape(cmdBuf, value); + expandEscape(cmdBuf, value.c_str()); newLines.push_back(createNewProperty(f->pFieldname, cmdBuf, f->elementCount > 1, j)); } else newLines.push_back(createNewProperty(f->pFieldname, value, f->elementCount > 1, j)); } - - if (defaultValue) - dFree(defaultValue); } - - dFree(value); } } } @@ -1812,15 +1788,6 @@ void PersistenceManager::updateObject(SimObject* object, ParsedObject* parentObj } // Clean up the newLines memory - for (U32 i = 0; i < newLines.size(); i++) - { - if (!isEmptyLine(newLines[i]) && !StringTable->lookup(newLines[i])) - {//don't try killing empty lines or lines that are in the string table - dFree(newLines[i]); - } - newLines[ i ] = NULL; - } - newLines.clear(); SimSet* set = dynamic_cast(object); diff --git a/Engine/source/console/persistenceManager.h b/Engine/source/console/persistenceManager.h index de8608ebb..0ee2368de 100644 --- a/Engine/source/console/persistenceManager.h +++ b/Engine/source/console/persistenceManager.h @@ -278,9 +278,9 @@ protected: // Write out properties // Returns the number of new lines added - U32 writeProperties(const Vector& properties, const U32 insertLine, const char* objectIndent); + U32 writeProperties(const Vector& properties, const U32 insertLine, const char* objectIndent); // Write out a new object - ParsedObject* writeNewObject(SimObject* object, const Vector& properties, const U32 insertLine, ParsedObject* parentObject = NULL); + ParsedObject* writeNewObject(SimObject* object, const Vector& properties, const U32 insertLine, ParsedObject* parentObject = NULL); public: PersistenceManager(); diff --git a/Engine/source/environment/decalRoad.cpp b/Engine/source/environment/decalRoad.cpp index 97003e80e..23e607f88 100644 --- a/Engine/source/environment/decalRoad.cpp +++ b/Engine/source/environment/decalRoad.cpp @@ -494,7 +494,7 @@ const char* DecalRoad::getSpecialFieldOut(StringTableEntry fieldName, const U32& char buffer[1024]; dMemset(buffer, 0, 1024); - dSprintf(buffer, 1024, "%f %f %f %f", node.point.x, node.point.y, node.point.z, node.width); + dSprintf(buffer, 1024, "node = \"%f %f %f %f\";", node.point.x, node.point.y, node.point.z, node.width); return StringTable->insert(buffer); } diff --git a/Engine/source/environment/meshRoad.cpp b/Engine/source/environment/meshRoad.cpp index 6785db065..39100e632 100644 --- a/Engine/source/environment/meshRoad.cpp +++ b/Engine/source/environment/meshRoad.cpp @@ -1197,7 +1197,7 @@ const char* MeshRoad::getSpecialFieldOut(StringTableEntry fieldName, const U32& return StringTable->insert(buffer); } - else if (fieldName == StringTable->insert("ProfileNode")) + else if (fieldName == StringTable->insert("ProfileNode") && mSideProfile.mNodes.size()) { Point3F nodePos = mSideProfile.mNodes[index].getPosition(); U8 smooth, mtrl; diff --git a/Templates/BaseGame/game/tools/assetBrowser/scripts/assetTypes/level.tscript b/Templates/BaseGame/game/tools/assetBrowser/scripts/assetTypes/level.tscript index 2594a5378..268de61c0 100644 --- a/Templates/BaseGame/game/tools/assetBrowser/scripts/assetTypes/level.tscript +++ b/Templates/BaseGame/game/tools/assetBrowser/scripts/assetTypes/level.tscript @@ -4,7 +4,13 @@ function AssetBrowser::setupCreateNewLevelAsset(%this) NewAssetPropertiesInspector.addField("LevelName", "Level Name", "String", "Human-readable name of new level", "", "", %this.newAssetSettings); NewAssetPropertiesInspector.addField("levelPreviewImage", "Level Preview Image", "Image", "Preview Image for the level", "", "", %this.newAssetSettings); - NewAssetPropertiesInspector.addField("isSubScene", "Is SubScene", "bool", "Is this levelAsset intended as a subScene", "", "", %this.newAssetSettings); + //If we forcefully set it elsewhere, adhere + if($createLevelAssetIsSubScene == true) + %this.newAssetSettings.isSubScene = true; + else + %this.newAssetSettings.isSubScene = false; + + NewAssetPropertiesInspector.addField("isSubScene", "Is SubScene", "bool", "Is this levelAsset intended as a subScene", %this.newAssetSettings.isSubScene, "", %this.newAssetSettings); NewAssetPropertiesInspector.endGroup(); } @@ -27,6 +33,7 @@ function AssetBrowser::createLevelAsset(%this) %tamlpath = %assetPath @ %assetName @ ".asset.taml"; %levelPath = %assetPath @ %assetName @ %misExtension; + %asset = new LevelAsset() { AssetName = %assetName; @@ -55,7 +62,24 @@ function AssetBrowser::createLevelAsset(%this) echo("Unable to copy template level file!"); } - replaceInFile(%levelPath, "EditorTemplateLevel", %assetName); + if(%asset.isSubScene) + { + %fileObj = new FileObject(); + if (!%fileObj.openForWrite(%levelPath)) + { + echo("Unable to write subScene file!"); + } + else + { + %fileObj.writeLine(""); + %fileObj.close(); + %fileObj.delete(); + } + } + else + { + replaceInFile(%levelPath, "EditorTemplateLevel", %assetName); + } //Generate the associated files DecalManagerSave( %assetPath @ %asset.DecalsFile ); @@ -87,6 +111,8 @@ function AssetBrowser::setupCreateNewSubScene(%this) function AssetBrowser::editLevelAsset(%this, %assetDef) { + echo("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"); + echo(%assetDef @ ".isSubScene = " @ %assetDef.isSubScene); if(!%assetDef.isSubScene) schedule( 1, 0, "EditorOpenMission", %assetDef); } @@ -157,7 +183,15 @@ function AssetBrowser::buildLevelAssetPreview(%this, %assetDef, %previewData) { %previewData.assetName = %assetDef.assetName; %previewData.assetPath = %assetDef.getLevelPath(); - %previewData.doubleClickCommand = "schedule( 1, 0, \"EditorOpenMission\", "@%assetDef@");"; + + if(%this.selectMode || %assetDef.isSubScene) + { + %previewData.doubleClickCommand = "AssetBrowser.selectAsset( AssetBrowser.selectedAsset );"; + } + else + { + %previewData.doubleClickCommand = "schedule( 1, 0, \"EditorOpenMission\", "@%assetDef@");"; + } %levelPreviewImage = %assetDef.PreviewImage; @@ -176,7 +210,10 @@ function AssetBrowser::buildLevelAssetPreview(%this, %assetDef, %previewData) function createAndAssignLevelAsset(%moduleName, %assetName) { - $createAndAssignField.apply(%moduleName @ ":" @ %assetName); + if(AssetDatabase.isDeclaredAsset(%moduleName)) + $createAndAssignField.apply(%moduleName); + else + $createAndAssignField.apply(%moduleName @ ":" @ %assetName); } function EWorldEditor::createSelectedAsSubScene( %this, %object ) diff --git a/Templates/BaseGame/game/tools/assetBrowser/scripts/newAsset.tscript b/Templates/BaseGame/game/tools/assetBrowser/scripts/newAsset.tscript index c4fe9b537..feaf38688 100644 --- a/Templates/BaseGame/game/tools/assetBrowser/scripts/newAsset.tscript +++ b/Templates/BaseGame/game/tools/assetBrowser/scripts/newAsset.tscript @@ -124,6 +124,8 @@ function AssetBrowser::setupCreateNewAsset(%this, %assetType, %moduleName, %call %command = %this @ ".setupCreateNew"@%assetType @"();"; eval(%command); } + + NewAssetPropertiesInspector.refresh(); } function NewAssetPropertiesInspector::updateNewAssetField(%this) From e946a0b70dcf4eb69987adf90954a2396b6009b6 Mon Sep 17 00:00:00 2001 From: marauder2k7 Date: Thu, 6 Feb 2025 09:22:04 +0000 Subject: [PATCH 29/91] Update build-linux-gcc.yml updates the list of depenencies, these are required by both sdl2 and openal in order to properly compile and produce audio. --- .github/workflows/build-linux-gcc.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/build-linux-gcc.yml b/.github/workflows/build-linux-gcc.yml index 8382d27a2..4176e066e 100644 --- a/.github/workflows/build-linux-gcc.yml +++ b/.github/workflows/build-linux-gcc.yml @@ -61,6 +61,13 @@ jobs: libx11-dev \ libxxf86vm-dev \ libopenal-dev \ + libasound2-dev \ + libpipewire-0.3-dev \ + portaudio19-dev \ + oss4-dev \ + libjack-dev \ + libpulse-dev \ + libdbus-1-dev \ libfreetype6-dev \ libxcursor-dev \ libxinerama-dev \ From 516df483543484b66daf5723edd8bccbffbc4c4c Mon Sep 17 00:00:00 2001 From: AzaezelX Date: Thu, 6 Feb 2025 14:46:05 -0600 Subject: [PATCH 30/91] adds a built in detail map generator splitTerrainMaps("data/some/file"); or makeTerrainMapsFrom("module:anAsset"); to take a detailed albedo map and split it into a _bas(is) file thats an averaghe of the inut and a _det(ail) file to raise and lower different channels from that average. special note: while used primarily for terrain authoring, these files could also be plugged into a normal material --- Engine/source/gfx/gfxTextureManager.cpp | 104 ++++++++++++++++++ Engine/source/gfx/gfxTextureManager.h | 1 + .../utility/scripts/helperFunctions.tscript | 11 ++ 3 files changed, 116 insertions(+) diff --git a/Engine/source/gfx/gfxTextureManager.cpp b/Engine/source/gfx/gfxTextureManager.cpp index 1203daf3f..b0a897501 100644 --- a/Engine/source/gfx/gfxTextureManager.cpp +++ b/Engine/source/gfx/gfxTextureManager.cpp @@ -1632,3 +1632,107 @@ DefineEngineFunction( reloadTextures, void, (),, TEXMGR->reloadTextures(); PROBEMGR->reloadTextures(); } + + +void GFXTextureManager::splitTerrainMaps(const Torque::Path& path) +{ + bool decompressed = false; + + GFXTextureObject* inputTex = createTexture(path, &GFXTexturePersistentSRGBProfile); + if (!inputTex) + { + Con::errorf("GFXTextureManager::splitTerrainMaps - Unable to create texture: %s", path.getFullPath().c_str()); + return; + } + GBitmap* inData = inputTex->getBitmap(); + if (!inData) + { + DDSFile* tryDDS = inputTex->getDDS(); + if (!tryDDS) + { + Con::errorf("GFXTextureManager::splitTerrainMaps - Unable to load texture: %s", path.getFullPath().c_str()); + return; + } + decompressed = true; + inData = new GBitmap(); + tryDDS->decompressToGBitmap(inData); + } + + double average[4] = { 0.0, 0.0, 0.0, 0.0 }; + + Point2F inputSize = Point2F(inputTex->getBitmapWidth(), inputTex->getBitmapHeight()); + U32 count = inputSize.x * inputSize.y; + int u, v; + for (u = 0; u < inputSize.x; u++) + { + for (v = 0; v < inputSize.y; v++) + { + LinearColorF color = inData->sampleTexel(u/ F32(inputSize.x), v / F32(inputSize.y), true); + average[0] += color.red; + average[1] += color.green; + average[2] += color.blue; + average[3] += color.alpha; + } + } + + for (U32 i = 0; i < 4; i++) + { + average[i] /= count; + } + + LinearColorF averageColor = LinearColorF(F32(average[0]), F32(average[1]), F32(average[2]), F32(average[3])); + + Con::printf("Average color: %f %f %f %f", averageColor.red, averageColor.green, averageColor.blue, averageColor.alpha); + + GBitmap* outBitmap[2]; + outBitmap[0] = new GBitmap(); + outBitmap[0]->allocateBitmap(inputSize.x, inputSize.y, false, GFXFormatR8G8B8A8); + for (u = 0; u < inputSize.x; u++) + { + for (v= 0; v < inputSize.y; v++) + { + outBitmap[0]->setColor(u, v, averageColor.toColorI(true)); + } + } + + Torque::Path difPath = path; + difPath.setFileName(path.getFileName()+String("_bas")); + difPath.setExtension("png"); + GFXTextureObject* difRet = _createTexture(outBitmap[0], String(difPath), &GFXTexturePersistentProfile, false, NULL); + difRet->dumpToDisk("png", difPath.getFullPath()); + + outBitmap[1] = new GBitmap(); + outBitmap[1]->allocateBitmap(inputSize.x, inputSize.y, false, GFXFormatR8G8B8A8); + + for (u = 0; u < inputSize.x; u++) + { + for (v = 0; v < inputSize.y; v++) + { + LinearColorF color = inData->sampleTexel(u / F32(inputSize.x), v / F32(inputSize.y), true); + color -= averageColor; + color *= 0.5; + color += LinearColorF(0.5,0.5,0.5); + outBitmap[1]->setColor(u, v, color.toColorI(true)); + } + } + + Torque::Path detPath = path; + detPath.setFileName(path.getFileName() + String("_det")); + detPath.setExtension("png"); + GFXTextureObject* detRet = _createTexture(outBitmap[1], String(detPath), &GFXTexturePersistentProfile, false, NULL); + detRet->dumpToDisk("png", detPath.getFullPath()); + + delete outBitmap[0]; + delete outBitmap[1]; + if (decompressed) + delete inData; +} + + +DefineEngineFunction(splitTerrainMaps, void, (const char* path), , + "Splits a detailed albedo map into separate diffuse and detail textures and saves them to disk.\n" + "@param path The path to the input albedo map.\n" + "@ingroup GFX\n") +{ + GFX->getTextureManager()->splitTerrainMaps(path); +} diff --git a/Engine/source/gfx/gfxTextureManager.h b/Engine/source/gfx/gfxTextureManager.h index bf92a62ca..3ea716bac 100644 --- a/Engine/source/gfx/gfxTextureManager.h +++ b/Engine/source/gfx/gfxTextureManager.h @@ -193,6 +193,7 @@ public: /// Used to remove a cubemap from the cache. void releaseCubemap( GFXCubemap *cubemap ); + void splitTerrainMaps(const Torque::Path& path); public: /// The amount of texture mipmaps to skip when loading a /// texture that allows downscaling. diff --git a/Templates/BaseGame/game/core/utility/scripts/helperFunctions.tscript b/Templates/BaseGame/game/core/utility/scripts/helperFunctions.tscript index b414f4ec7..b852bb45b 100644 --- a/Templates/BaseGame/game/core/utility/scripts/helperFunctions.tscript +++ b/Templates/BaseGame/game/core/utility/scripts/helperFunctions.tscript @@ -782,4 +782,15 @@ function getNumCanCallOnObjectList(%functionName, %objectsList) } return %numberWithFunction; +} + +function getImageFileName(%id) +{ + %assetDef = AssetDatabase.acquireAsset(%id); + return %assetDef.getImagePath(); +} + +function makeTerrainMapsFrom(%id) +{ + splitTerrainMaps(getImageFileName(%id)); } \ No newline at end of file From 4d66ae37dee447e409d9f5567d67928696e29a35 Mon Sep 17 00:00:00 2001 From: AzaezelX Date: Sat, 8 Feb 2025 10:58:50 -0600 Subject: [PATCH 31/91] handle mounted lights ghosting in and out send a periodic corrective packet for mounted lights to ensure they stay mounted when moving in and out of ghosting --- Engine/source/T3D/lightBase.cpp | 14 +++++++++++++- Engine/source/scene/sceneObject.cpp | 4 ++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/Engine/source/T3D/lightBase.cpp b/Engine/source/T3D/lightBase.cpp index 957149e93..3ef40f4ca 100644 --- a/Engine/source/T3D/lightBase.cpp +++ b/Engine/source/T3D/lightBase.cpp @@ -147,7 +147,7 @@ bool LightBase::onAdd() // Update the light parameters. _conformLights(); addToScene(); - + setProcessTick(true); return true; } @@ -256,10 +256,22 @@ void LightBase::_onUnselected() void LightBase::interpolateTick( F32 delta ) { + if (isMounted()) { + MatrixF mat; + mMount.object->getRenderMountTransform(delta, mMount.node, mMount.xfm, &mat); + mLight->setTransform(mat); + Parent::setTransform(mat); + } } void LightBase::processTick() { + if (isMounted()) { + MatrixF mat; + mMount.object->getMountTransform(mMount.node, mMount.xfm, &mat); + mLight->setTransform(mat); + setTransform(mat); + } } void LightBase::advanceTime( F32 timeDelta ) diff --git a/Engine/source/scene/sceneObject.cpp b/Engine/source/scene/sceneObject.cpp index c44746c88..7ed86de9c 100644 --- a/Engine/source/scene/sceneObject.cpp +++ b/Engine/source/scene/sceneObject.cpp @@ -1236,10 +1236,10 @@ bool SceneObject::_setMountPID( void* object, const char* index, const char* dat void SceneObject::resolveMountPID() { - if ( mMountPID && !mMount.object ) + if ( mMountPID ) { SceneObject *obj = dynamic_cast< SceneObject* >( mMountPID->getObject() ); - if ( obj ) + if ( obj != mMount.object) obj->mountObject( this, mMount.node, mMount.xfm ); } } From a529e3ecc067a5f5d6b280788ef3b7099b3bceca Mon Sep 17 00:00:00 2001 From: AzaezelX Date: Thu, 13 Feb 2025 14:32:23 -0600 Subject: [PATCH 32/91] clean up subscene load evaluators so that it doesn';t require a client if it's set to global (allows spawnpoints to fill out prior to connections) also try and apply filtering prior to actual loading --- Engine/source/T3D/Scene.cpp | 5 +---- Engine/source/T3D/SubScene.cpp | 21 +++++++++++---------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/Engine/source/T3D/Scene.cpp b/Engine/source/T3D/Scene.cpp index 7fb53273a..f58179196 100644 --- a/Engine/source/T3D/Scene.cpp +++ b/Engine/source/T3D/Scene.cpp @@ -202,15 +202,12 @@ void Scene::processTick() controlObj = gc->getCameraObject(); } - if (controlObj != nullptr) - { - if (mSubScenes[i]->testBox(controlObj->getWorldBox())) + if (mSubScenes[i]->testBox(controlObj != nullptr ? controlObj->getWorldBox() : Box3F::Zero)) { //we have a client controlling object in the bounds, so we ensure the contents are loaded hasClients = true; break; } - } } } diff --git a/Engine/source/T3D/SubScene.cpp b/Engine/source/T3D/SubScene.cpp index 013837db7..cc05532a2 100644 --- a/Engine/source/T3D/SubScene.cpp +++ b/Engine/source/T3D/SubScene.cpp @@ -214,10 +214,11 @@ bool SubScene::evaluateCondition() bool SubScene::testBox(const Box3F& testBox) { - if (mGlobalLayer) - return true; + bool passes = mGlobalLayer; + + if (!passes) + passes = getWorldBox().isOverlapped(testBox); - bool passes = getWorldBox().isOverlapped(testBox); if (passes) passes = evaluateCondition(); return passes; @@ -346,22 +347,22 @@ void SubScene::load() if (mSaving) return; + GameMode::findGameModes(mGameModesNames, &mGameModesList); + if ((String(mGameModesNames).isNotEmpty() && mGameModesList.size() == 0) || !evaluateCondition()) + { + mLoaded = false; + return; + } + _loadFile(true); mLoaded = true; - GameMode::findGameModes(mGameModesNames, &mGameModesList); - onLoaded_callback(); for (U32 i = 0; i < mGameModesList.size(); i++) { mGameModesList[i]->onSubsceneLoaded_callback(this); } - if (!mOnLoadCommand.isEmpty()) - { - String command = "%this = " + String(getIdString()) + "; " + mLoadIf + ";"; - Con::evaluatef(command.c_str()); - } } void SubScene::unload() From 142467ccc600fdb0f4e071d845a45a8e26c0ce2f Mon Sep 17 00:00:00 2001 From: marauder2k7 Date: Fri, 14 Feb 2025 19:57:38 +0000 Subject: [PATCH 33/91] update lib can use original cmakelists.txt from torque, but update naming to tinyxml2 --- Engine/lib/CMakeLists.txt | 2 +- Engine/lib/collada/CMakeLists.txt | 2 +- Engine/lib/tinyxml/CMakeLists.txt | 4 - .../classtinyxml2_1_1_x_m_l_attribute.html | 232 - ...asstinyxml2_1_1_x_m_l_comment-members.html | 114 - .../docs/classtinyxml2_1_1_x_m_l_comment.html | 301 -- .../docs/classtinyxml2_1_1_x_m_l_comment.png | Bin 650 -> 0 bytes ...inyxml2_1_1_x_m_l_declaration-members.html | 114 - .../classtinyxml2_1_1_x_m_l_declaration.html | 303 -- .../classtinyxml2_1_1_x_m_l_declaration.png | Bin 688 -> 0 bytes ...sstinyxml2_1_1_x_m_l_document-members.html | 138 - .../classtinyxml2_1_1_x_m_l_document.html | 747 --- .../docs/classtinyxml2_1_1_x_m_l_document.png | Bin 657 -> 0 bytes .../docs/classtinyxml2_1_1_x_m_l_element.html | 774 --- .../docs/classtinyxml2_1_1_x_m_l_element.png | Bin 618 -> 0 bytes .../classtinyxml2_1_1_x_m_l_node-members.html | 114 - .../docs/classtinyxml2_1_1_x_m_l_node.html | 582 --- .../docs/classtinyxml2_1_1_x_m_l_node.png | Bin 1845 -> 0 bytes ...asstinyxml2_1_1_x_m_l_printer-members.html | 108 - .../docs/classtinyxml2_1_1_x_m_l_printer.html | 416 -- .../docs/classtinyxml2_1_1_x_m_l_printer.png | Bin 586 -> 0 bytes .../classtinyxml2_1_1_x_m_l_text-members.html | 116 - .../docs/classtinyxml2_1_1_x_m_l_text.html | 311 -- .../docs/classtinyxml2_1_1_x_m_l_text.png | Bin 591 -> 0 bytes ...asstinyxml2_1_1_x_m_l_unknown-members.html | 114 - .../docs/classtinyxml2_1_1_x_m_l_unknown.html | 302 -- .../docs/classtinyxml2_1_1_x_m_l_unknown.png | Bin 647 -> 0 bytes .../docs/classtinyxml2_1_1_x_m_l_visitor.png | Bin 592 -> 0 bytes Engine/lib/tinyxml/docs/doxygen.css | 1793 ------- Engine/lib/tinyxml/docs/dynsections.js | 121 - Engine/lib/tinyxml/docs/functions.html | 87 - Engine/lib/tinyxml/docs/functions_c.html | 96 - Engine/lib/tinyxml/docs/functions_d.html | 102 - Engine/lib/tinyxml/docs/functions_f.html | 98 - Engine/lib/tinyxml/docs/functions_func.html | 87 - Engine/lib/tinyxml/docs/functions_func_b.html | 84 - Engine/lib/tinyxml/docs/functions_func_c.html | 96 - Engine/lib/tinyxml/docs/functions_func_d.html | 102 - Engine/lib/tinyxml/docs/functions_func_e.html | 87 - Engine/lib/tinyxml/docs/functions_func_f.html | 98 - Engine/lib/tinyxml/docs/functions_func_g.html | 88 - Engine/lib/tinyxml/docs/functions_func_i.html | 111 - Engine/lib/tinyxml/docs/functions_func_l.html | 86 - Engine/lib/tinyxml/docs/functions_func_n.html | 108 - Engine/lib/tinyxml/docs/functions_func_p.html | 110 - Engine/lib/tinyxml/docs/functions_func_q.html | 144 - Engine/lib/tinyxml/docs/functions_func_s.html | 118 - Engine/lib/tinyxml/docs/functions_func_t.html | 106 - Engine/lib/tinyxml/docs/functions_func_u.html | 90 - Engine/lib/tinyxml/docs/functions_func_v.html | 91 - Engine/lib/tinyxml/docs/functions_func_x.html | 84 - Engine/lib/tinyxml/docs/functions_g.html | 88 - Engine/lib/tinyxml/docs/functions_i.html | 111 - Engine/lib/tinyxml/docs/functions_l.html | 86 - Engine/lib/tinyxml/docs/functions_n.html | 108 - Engine/lib/tinyxml/docs/functions_p.html | 110 - Engine/lib/tinyxml/docs/functions_q.html | 144 - Engine/lib/tinyxml/docs/functions_s.html | 118 - Engine/lib/tinyxml/docs/functions_t.html | 106 - Engine/lib/tinyxml/docs/functions_u.html | 90 - Engine/lib/tinyxml/docs/functions_v.html | 91 - Engine/lib/tinyxml/docs/jquery.js | 35 - Engine/lib/tinyxml/docs/menu.js | 51 - Engine/lib/tinyxml/docs/search/all_0.js | 5 - Engine/lib/tinyxml/docs/search/all_10.js | 11 - Engine/lib/tinyxml/docs/search/all_11.js | 8 - Engine/lib/tinyxml/docs/search/all_12.js | 7 - Engine/lib/tinyxml/docs/search/all_13.js | 15 - Engine/lib/tinyxml/docs/search/all_2.js | 10 - Engine/lib/tinyxml/docs/search/all_3.js | 12 - Engine/lib/tinyxml/docs/search/all_4.js | 7 - Engine/lib/tinyxml/docs/search/all_5.js | 10 - Engine/lib/tinyxml/docs/search/all_6.js | 8 - Engine/lib/tinyxml/docs/search/all_7.js | 4 - Engine/lib/tinyxml/docs/search/all_8.js | 15 - Engine/lib/tinyxml/docs/search/all_9.js | 7 - Engine/lib/tinyxml/docs/search/all_a.js | 13 - Engine/lib/tinyxml/docs/search/all_b.js | 5 - Engine/lib/tinyxml/docs/search/all_c.js | 15 - Engine/lib/tinyxml/docs/search/all_d.js | 26 - Engine/lib/tinyxml/docs/search/all_e.js | 5 - Engine/lib/tinyxml/docs/search/all_f.js | 13 - Engine/lib/tinyxml/docs/search/classes_0.js | 15 - Engine/lib/tinyxml/docs/search/functions_0.js | 5 - Engine/lib/tinyxml/docs/search/functions_1.js | 6 - .../lib/tinyxml/docs/search/functions_10.js | 10 - .../lib/tinyxml/docs/search/functions_11.js | 8 - .../lib/tinyxml/docs/search/functions_12.js | 7 - .../lib/tinyxml/docs/search/functions_13.js | 6 - Engine/lib/tinyxml/docs/search/functions_2.js | 10 - Engine/lib/tinyxml/docs/search/functions_3.js | 12 - Engine/lib/tinyxml/docs/search/functions_4.js | 7 - Engine/lib/tinyxml/docs/search/functions_5.js | 10 - Engine/lib/tinyxml/docs/search/functions_6.js | 7 - Engine/lib/tinyxml/docs/search/functions_7.js | 4 - Engine/lib/tinyxml/docs/search/functions_8.js | 15 - Engine/lib/tinyxml/docs/search/functions_9.js | 6 - Engine/lib/tinyxml/docs/search/functions_a.js | 13 - Engine/lib/tinyxml/docs/search/functions_b.js | 5 - Engine/lib/tinyxml/docs/search/functions_c.js | 14 - Engine/lib/tinyxml/docs/search/functions_d.js | 26 - Engine/lib/tinyxml/docs/search/functions_e.js | 4 - Engine/lib/tinyxml/docs/search/functions_f.js | 13 - Engine/lib/tinyxml/docs/search/mag_sel.svg | 74 - Engine/lib/tinyxml/docs/search/pages_0.js | 4 - Engine/lib/tinyxml/docs/search/pages_1.js | 4 - Engine/lib/tinyxml/docs/search/pages_2.js | 4 - Engine/lib/tinyxml/docs/search/pages_3.js | 4 - Engine/lib/tinyxml/docs/search/pages_4.js | 4 - Engine/lib/tinyxml/docs/search/search.js | 816 --- Engine/lib/tinyxml/docs/tabs.css | 1 - .../lib/tinyxml/docs/tinyxml2_8h_source.html | 1955 ------- .../lib/tinyxml2/.github/workflows/test.yml | 111 + Engine/lib/tinyxml2/.gitignore | 24 + Engine/lib/tinyxml2/CMakeLists.txt | 3 + Engine/lib/{tinyxml => tinyxml2}/LICENSE.txt | 0 Engine/lib/tinyxml2/Makefile | 75 + Engine/lib/tinyxml2/TinyXML2_small.png | Bin 0 -> 214977 bytes .../lib/tinyxml2/cmake/tinyxml2-config.cmake | 57 + Engine/lib/tinyxml2/cmake/tinyxml2.pc.in | 10 + Engine/lib/tinyxml2/contrib/html5-printer.cpp | 108 + Engine/lib/tinyxml2/docs/_config.yml | 2 + .../docs/_example_1.html | 48 +- .../docs/_example_2.html | 48 +- .../docs/_example_3.html | 48 +- .../docs/_example_4.html | 48 +- .../{tinyxml => tinyxml2}/docs/annotated.html | 74 +- .../lib/{tinyxml => tinyxml2}/docs/bc_s.png | Bin Engine/lib/tinyxml2/docs/bc_sd.png | Bin 0 -> 635 bytes .../lib/{tinyxml => tinyxml2}/docs/bdwn.png | Bin .../{tinyxml => tinyxml2}/docs/classes.html | 48 +- ...stinyxml2_1_1_x_m_l_attribute-members.html | 72 +- .../classtinyxml2_1_1_x_m_l_attribute.html | 239 + ...asstinyxml2_1_1_x_m_l_comment-members.html | 122 + .../docs/classtinyxml2_1_1_x_m_l_comment.html | 306 ++ .../docs/classtinyxml2_1_1_x_m_l_comment.png | Bin 0 -> 667 bytes ...nyxml2_1_1_x_m_l_const_handle-members.html | 46 +- .../classtinyxml2_1_1_x_m_l_const_handle.html | 46 +- ...inyxml2_1_1_x_m_l_declaration-members.html | 122 + .../classtinyxml2_1_1_x_m_l_declaration.html | 308 ++ .../classtinyxml2_1_1_x_m_l_declaration.png | Bin 0 -> 705 bytes ...sstinyxml2_1_1_x_m_l_document-members.html | 146 + .../classtinyxml2_1_1_x_m_l_document.html | 720 +++ .../docs/classtinyxml2_1_1_x_m_l_document.png | Bin 0 -> 675 bytes ...asstinyxml2_1_1_x_m_l_element-members.html | 174 +- .../docs/classtinyxml2_1_1_x_m_l_element.html | 747 +++ .../docs/classtinyxml2_1_1_x_m_l_element.png | Bin 0 -> 632 bytes ...lasstinyxml2_1_1_x_m_l_handle-members.html | 68 +- .../docs/classtinyxml2_1_1_x_m_l_handle.html | 140 +- .../classtinyxml2_1_1_x_m_l_node-members.html | 122 + .../docs/classtinyxml2_1_1_x_m_l_node.html | 566 ++ .../docs/classtinyxml2_1_1_x_m_l_node.png | Bin 0 -> 1889 bytes ...asstinyxml2_1_1_x_m_l_printer-members.html | 116 + .../docs/classtinyxml2_1_1_x_m_l_printer.html | 400 ++ .../docs/classtinyxml2_1_1_x_m_l_printer.png | Bin 0 -> 594 bytes .../classtinyxml2_1_1_x_m_l_text-members.html | 124 + .../docs/classtinyxml2_1_1_x_m_l_text.html | 316 ++ .../docs/classtinyxml2_1_1_x_m_l_text.png | Bin 0 -> 602 bytes ...asstinyxml2_1_1_x_m_l_unknown-members.html | 122 + .../docs/classtinyxml2_1_1_x_m_l_unknown.html | 307 ++ .../docs/classtinyxml2_1_1_x_m_l_unknown.png | Bin 0 -> 662 bytes ...asstinyxml2_1_1_x_m_l_visitor-members.html | 54 +- .../docs/classtinyxml2_1_1_x_m_l_visitor.html | 82 +- .../docs/classtinyxml2_1_1_x_m_l_visitor.png | Bin 0 -> 602 bytes Engine/lib/tinyxml2/docs/clipboard.js | 61 + .../lib/{tinyxml => tinyxml2}/docs/closed.png | Bin Engine/lib/tinyxml2/docs/cookie.js | 58 + Engine/lib/{tinyxml => tinyxml2}/docs/doc.png | Bin Engine/lib/tinyxml2/docs/doc.svg | 12 + Engine/lib/tinyxml2/docs/docd.svg | 12 + Engine/lib/tinyxml2/docs/doxygen.css | 2225 ++++++++ .../{tinyxml => tinyxml2}/docs/doxygen.png | Bin .../{tinyxml => tinyxml2}/docs/doxygen.svg | 4 +- Engine/lib/tinyxml2/docs/doxygen_crawl.html | 88 + Engine/lib/tinyxml2/docs/dynsections.js | 194 + .../lib/{tinyxml => tinyxml2}/docs/files.html | 46 +- .../docs/folderclosed.png | Bin Engine/lib/tinyxml2/docs/folderclosed.svg | 11 + Engine/lib/tinyxml2/docs/folderclosedd.svg | 11 + .../{tinyxml => tinyxml2}/docs/folderopen.png | Bin Engine/lib/tinyxml2/docs/folderopen.svg | 17 + Engine/lib/tinyxml2/docs/folderopend.svg | 12 + Engine/lib/tinyxml2/docs/functions.html | 86 + .../docs/functions_b.html | 57 +- Engine/lib/tinyxml2/docs/functions_c.html | 91 + Engine/lib/tinyxml2/docs/functions_d.html | 93 + .../docs/functions_e.html | 61 +- Engine/lib/tinyxml2/docs/functions_f.html | 91 + Engine/lib/tinyxml2/docs/functions_func.html | 86 + .../lib/tinyxml2/docs/functions_func_b.html | 87 + .../lib/tinyxml2/docs/functions_func_c.html | 91 + .../lib/tinyxml2/docs/functions_func_d.html | 93 + .../lib/tinyxml2/docs/functions_func_e.html | 88 + .../lib/tinyxml2/docs/functions_func_f.html | 91 + .../lib/tinyxml2/docs/functions_func_g.html | 88 + .../docs/functions_func_h.html | 51 +- .../lib/tinyxml2/docs/functions_func_i.html | 96 + .../lib/tinyxml2/docs/functions_func_l.html | 87 + .../lib/tinyxml2/docs/functions_func_n.html | 94 + .../docs/functions_func_o.html | 55 +- .../lib/tinyxml2/docs/functions_func_p.html | 95 + .../lib/tinyxml2/docs/functions_func_q.html | 107 + .../docs/functions_func_r.html | 51 +- .../lib/tinyxml2/docs/functions_func_s.html | 94 + .../lib/tinyxml2/docs/functions_func_t.html | 91 + .../lib/tinyxml2/docs/functions_func_u.html | 89 + .../lib/tinyxml2/docs/functions_func_v.html | 88 + .../lib/tinyxml2/docs/functions_func_x.html | 87 + Engine/lib/tinyxml2/docs/functions_g.html | 88 + .../docs/functions_h.html | 49 +- Engine/lib/tinyxml2/docs/functions_i.html | 96 + Engine/lib/tinyxml2/docs/functions_l.html | 87 + Engine/lib/tinyxml2/docs/functions_n.html | 94 + .../docs/functions_o.html | 53 +- Engine/lib/tinyxml2/docs/functions_p.html | 95 + Engine/lib/tinyxml2/docs/functions_q.html | 107 + .../docs/functions_r.html | 49 +- Engine/lib/tinyxml2/docs/functions_s.html | 94 + Engine/lib/tinyxml2/docs/functions_t.html | 91 + Engine/lib/tinyxml2/docs/functions_u.html | 89 + Engine/lib/tinyxml2/docs/functions_v.html | 88 + .../docs/functions_x.html | 57 +- .../{tinyxml => tinyxml2}/docs/hierarchy.html | 62 +- .../lib/{tinyxml => tinyxml2}/docs/index.html | 65 +- Engine/lib/tinyxml2/docs/jquery.js | 34 + Engine/lib/tinyxml2/docs/menu.js | 134 + .../{tinyxml => tinyxml2}/docs/menudata.js | 0 Engine/lib/tinyxml2/docs/minus.svg | 8 + Engine/lib/tinyxml2/docs/minusd.svg | 8 + .../lib/{tinyxml => tinyxml2}/docs/nav_f.png | Bin Engine/lib/tinyxml2/docs/nav_fd.png | Bin 0 -> 169 bytes .../lib/{tinyxml => tinyxml2}/docs/nav_g.png | Bin .../lib/{tinyxml => tinyxml2}/docs/nav_h.png | Bin Engine/lib/tinyxml2/docs/nav_hd.png | Bin 0 -> 114 bytes .../lib/{tinyxml => tinyxml2}/docs/open.png | Bin .../lib/{tinyxml => tinyxml2}/docs/pages.html | 50 +- Engine/lib/tinyxml2/docs/plus.svg | 9 + Engine/lib/tinyxml2/docs/plusd.svg | 9 + .../docs/search/all_0.html | 0 Engine/lib/tinyxml2/docs/search/all_0.js | 4 + .../docs/search/all_1.html | 0 Engine/lib/tinyxml2/docs/search/all_1.js | 9 + .../docs/search/all_10.html | 0 Engine/lib/tinyxml2/docs/search/all_10.js | 13 + .../docs/search/all_11.html | 0 Engine/lib/tinyxml2/docs/search/all_11.js | 12 + .../docs/search/all_12.html | 0 Engine/lib/tinyxml2/docs/search/all_12.js | 8 + .../docs/search/all_13.html | 0 Engine/lib/tinyxml2/docs/search/all_13.js | 7 + Engine/lib/tinyxml2/docs/search/all_14.js | 18 + .../docs/search/all_2.html | 0 Engine/lib/tinyxml2/docs/search/all_2.js | 7 + .../docs/search/all_3.html | 0 Engine/lib/tinyxml2/docs/search/all_3.js | 11 + .../docs/search/all_4.html | 0 Engine/lib/tinyxml2/docs/search/all_4.js | 12 + .../docs/search/all_5.html | 0 Engine/lib/tinyxml2/docs/search/all_5.js | 7 + .../docs/search/all_6.html | 0 Engine/lib/tinyxml2/docs/search/all_6.js | 12 + .../docs/search/all_7.html | 0 Engine/lib/tinyxml2/docs/search/all_7.js | 8 + .../docs/search/all_8.html | 0 Engine/lib/tinyxml2/docs/search/all_8.js | 4 + .../docs/search/all_9.html | 0 Engine/lib/tinyxml2/docs/search/all_9.js | 17 + .../docs/search/all_a.html | 0 Engine/lib/tinyxml2/docs/search/all_a.js | 7 + .../docs/search/all_b.html | 0 Engine/lib/tinyxml2/docs/search/all_b.js | 13 + .../docs/search/all_c.html | 0 Engine/lib/tinyxml2/docs/search/all_c.js | 7 + .../docs/search/all_d.html | 0 Engine/lib/tinyxml2/docs/search/all_d.js | 15 + .../docs/search/all_e.html | 0 Engine/lib/tinyxml2/docs/search/all_e.js | 26 + .../docs/search/all_f.html | 0 Engine/lib/tinyxml2/docs/search/all_f.js | 5 + .../docs/search/classes_0.html | 0 Engine/lib/tinyxml2/docs/search/classes_0.js | 15 + .../docs/search/close.png | Bin .../docs/search/close.svg | 19 +- .../docs/search/functions_0.html | 0 .../lib/tinyxml2/docs/search/functions_0.js | 5 + .../docs/search/functions_1.html | 0 .../docs/search/functions_1.js} | 6 +- .../docs/search/functions_10.html | 0 .../lib/tinyxml2/docs/search/functions_10.js | 10 + .../docs/search/functions_11.html | 0 .../lib/tinyxml2/docs/search/functions_11.js | 8 + .../docs/search/functions_12.html | 0 .../lib/tinyxml2/docs/search/functions_12.js | 7 + .../docs/search/functions_13.html | 0 .../lib/tinyxml2/docs/search/functions_13.js | 6 + .../docs/search/functions_2.html | 0 .../lib/tinyxml2/docs/search/functions_2.js | 10 + .../docs/search/functions_3.html | 0 .../lib/tinyxml2/docs/search/functions_3.js | 12 + .../docs/search/functions_4.html | 0 .../lib/tinyxml2/docs/search/functions_4.js | 7 + .../docs/search/functions_5.html | 0 .../lib/tinyxml2/docs/search/functions_5.js | 10 + .../docs/search/functions_6.html | 0 .../lib/tinyxml2/docs/search/functions_6.js | 7 + .../docs/search/functions_7.html | 0 .../lib/tinyxml2/docs/search/functions_7.js | 4 + .../docs/search/functions_8.html | 0 .../lib/tinyxml2/docs/search/functions_8.js | 15 + .../docs/search/functions_9.html | 0 .../lib/tinyxml2/docs/search/functions_9.js | 6 + .../docs/search/functions_a.html | 0 .../lib/tinyxml2/docs/search/functions_a.js | 13 + .../docs/search/functions_b.html | 0 .../lib/tinyxml2/docs/search/functions_b.js | 5 + .../docs/search/functions_c.html | 0 .../lib/tinyxml2/docs/search/functions_c.js | 14 + .../docs/search/functions_d.html | 0 .../lib/tinyxml2/docs/search/functions_d.js | 26 + .../docs/search/functions_e.html | 0 .../lib/tinyxml2/docs/search/functions_e.js | 4 + .../docs/search/functions_f.html | 0 .../lib/tinyxml2/docs/search/functions_f.js | 13 + Engine/lib/tinyxml2/docs/search/mag.svg | 24 + Engine/lib/tinyxml2/docs/search/mag_d.svg | 24 + .../docs/search/mag_sel.png | Bin Engine/lib/tinyxml2/docs/search/mag_sel.svg | 31 + Engine/lib/tinyxml2/docs/search/mag_seld.svg | 31 + .../docs/search/nomatches.html | 0 .../docs/search/pages_0.html | 0 Engine/lib/tinyxml2/docs/search/pages_0.js | 4 + .../docs/search/pages_1.html | 0 Engine/lib/tinyxml2/docs/search/pages_1.js | 7 + .../docs/search/pages_2.html | 0 Engine/lib/tinyxml2/docs/search/pages_2.js | 4 + .../docs/search/pages_3.html | 0 Engine/lib/tinyxml2/docs/search/pages_3.js | 4 + .../docs/search/pages_4.html | 0 Engine/lib/tinyxml2/docs/search/pages_4.js | 5 + Engine/lib/tinyxml2/docs/search/pages_5.js | 4 + Engine/lib/tinyxml2/docs/search/pages_6.js | 5 + Engine/lib/tinyxml2/docs/search/pages_7.js | 4 + Engine/lib/tinyxml2/docs/search/pages_8.js | 5 + Engine/lib/tinyxml2/docs/search/pages_9.js | 4 + Engine/lib/tinyxml2/docs/search/pages_a.js | 4 + Engine/lib/tinyxml2/docs/search/pages_b.js | 5 + Engine/lib/tinyxml2/docs/search/pages_c.js | 6 + .../docs/search/search.css | 122 +- Engine/lib/tinyxml2/docs/search/search.js | 694 +++ .../docs/search/search_l.png | Bin .../docs/search/search_m.png | Bin .../docs/search/search_r.png | Bin .../docs/search/searchdata.js | 4 +- .../{tinyxml => tinyxml2}/docs/splitbar.png | Bin Engine/lib/tinyxml2/docs/splitbard.png | Bin 0 -> 282 bytes .../{tinyxml => tinyxml2}/docs/sync_off.png | Bin .../{tinyxml => tinyxml2}/docs/sync_on.png | Bin .../lib/{tinyxml => tinyxml2}/docs/tab_a.png | Bin Engine/lib/tinyxml2/docs/tab_ad.png | Bin 0 -> 135 bytes .../lib/{tinyxml => tinyxml2}/docs/tab_b.png | Bin Engine/lib/tinyxml2/docs/tab_bd.png | Bin 0 -> 173 bytes .../lib/{tinyxml => tinyxml2}/docs/tab_h.png | Bin Engine/lib/tinyxml2/docs/tab_hd.png | Bin 0 -> 180 bytes .../lib/{tinyxml => tinyxml2}/docs/tab_s.png | Bin Engine/lib/tinyxml2/docs/tab_sd.png | Bin 0 -> 188 bytes Engine/lib/tinyxml2/docs/tabs.css | 1 + .../lib/tinyxml2/docs/tinyxml2_8h_source.html | 2166 ++++++++ Engine/lib/tinyxml2/dox | 2441 +++++++++ Engine/lib/tinyxml2/meson.build | 84 + Engine/lib/tinyxml2/meson_options.txt | 28 + Engine/lib/{tinyxml => tinyxml2}/readme.md | 23 +- Engine/lib/tinyxml2/resources/dream.xml | 4546 +++++++++++++++++ Engine/lib/tinyxml2/resources/empty.xml | 0 Engine/lib/tinyxml2/resources/utf8test.xml | 11 + .../lib/tinyxml2/resources/utf8testverify.xml | 11 + .../resources/xmltest-4636783552757760.xml | 1 + .../lib/tinyxml2/resources/xmltest-5330.xml | 1 + .../resources/xmltest-5662204197076992.xml | 1 + .../resources/xmltest-5720541257269248.xml | 1 + Engine/lib/tinyxml2/setversion.py | 141 + Engine/lib/tinyxml2/test/CMakeLists.txt | 20 + Engine/lib/{tinyxml => tinyxml2}/tinyxml2.cpp | 87 +- Engine/lib/{tinyxml => tinyxml2}/tinyxml2.h | 134 +- Engine/lib/tinyxml2/xmltest.cpp | 2743 ++++++++++ Engine/source/console/SimXMLDocument.cpp | 2 +- Engine/source/persistence/taml/fsTinyXml.h | 2 +- Tools/CMake/torque_configs.cmake | 2 +- 387 files changed, 25588 insertions(+), 14101 deletions(-) delete mode 100644 Engine/lib/tinyxml/CMakeLists.txt delete mode 100644 Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_attribute.html delete mode 100644 Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_comment-members.html delete mode 100644 Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_comment.html delete mode 100644 Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_comment.png delete mode 100644 Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_declaration-members.html delete mode 100644 Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_declaration.html delete mode 100644 Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_declaration.png delete mode 100644 Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_document-members.html delete mode 100644 Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_document.html delete mode 100644 Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_document.png delete mode 100644 Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_element.html delete mode 100644 Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_element.png delete mode 100644 Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_node-members.html delete mode 100644 Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_node.html delete mode 100644 Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_node.png delete mode 100644 Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_printer-members.html delete mode 100644 Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_printer.html delete mode 100644 Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_printer.png delete mode 100644 Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_text-members.html delete mode 100644 Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_text.html delete mode 100644 Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_text.png delete mode 100644 Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_unknown-members.html delete mode 100644 Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_unknown.html delete mode 100644 Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_unknown.png delete mode 100644 Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_visitor.png delete mode 100644 Engine/lib/tinyxml/docs/doxygen.css delete mode 100644 Engine/lib/tinyxml/docs/dynsections.js delete mode 100644 Engine/lib/tinyxml/docs/functions.html delete mode 100644 Engine/lib/tinyxml/docs/functions_c.html delete mode 100644 Engine/lib/tinyxml/docs/functions_d.html delete mode 100644 Engine/lib/tinyxml/docs/functions_f.html delete mode 100644 Engine/lib/tinyxml/docs/functions_func.html delete mode 100644 Engine/lib/tinyxml/docs/functions_func_b.html delete mode 100644 Engine/lib/tinyxml/docs/functions_func_c.html delete mode 100644 Engine/lib/tinyxml/docs/functions_func_d.html delete mode 100644 Engine/lib/tinyxml/docs/functions_func_e.html delete mode 100644 Engine/lib/tinyxml/docs/functions_func_f.html delete mode 100644 Engine/lib/tinyxml/docs/functions_func_g.html delete mode 100644 Engine/lib/tinyxml/docs/functions_func_i.html delete mode 100644 Engine/lib/tinyxml/docs/functions_func_l.html delete mode 100644 Engine/lib/tinyxml/docs/functions_func_n.html delete mode 100644 Engine/lib/tinyxml/docs/functions_func_p.html delete mode 100644 Engine/lib/tinyxml/docs/functions_func_q.html delete mode 100644 Engine/lib/tinyxml/docs/functions_func_s.html delete mode 100644 Engine/lib/tinyxml/docs/functions_func_t.html delete mode 100644 Engine/lib/tinyxml/docs/functions_func_u.html delete mode 100644 Engine/lib/tinyxml/docs/functions_func_v.html delete mode 100644 Engine/lib/tinyxml/docs/functions_func_x.html delete mode 100644 Engine/lib/tinyxml/docs/functions_g.html delete mode 100644 Engine/lib/tinyxml/docs/functions_i.html delete mode 100644 Engine/lib/tinyxml/docs/functions_l.html delete mode 100644 Engine/lib/tinyxml/docs/functions_n.html delete mode 100644 Engine/lib/tinyxml/docs/functions_p.html delete mode 100644 Engine/lib/tinyxml/docs/functions_q.html delete mode 100644 Engine/lib/tinyxml/docs/functions_s.html delete mode 100644 Engine/lib/tinyxml/docs/functions_t.html delete mode 100644 Engine/lib/tinyxml/docs/functions_u.html delete mode 100644 Engine/lib/tinyxml/docs/functions_v.html delete mode 100644 Engine/lib/tinyxml/docs/jquery.js delete mode 100644 Engine/lib/tinyxml/docs/menu.js delete mode 100644 Engine/lib/tinyxml/docs/search/all_0.js delete mode 100644 Engine/lib/tinyxml/docs/search/all_10.js delete mode 100644 Engine/lib/tinyxml/docs/search/all_11.js delete mode 100644 Engine/lib/tinyxml/docs/search/all_12.js delete mode 100644 Engine/lib/tinyxml/docs/search/all_13.js delete mode 100644 Engine/lib/tinyxml/docs/search/all_2.js delete mode 100644 Engine/lib/tinyxml/docs/search/all_3.js delete mode 100644 Engine/lib/tinyxml/docs/search/all_4.js delete mode 100644 Engine/lib/tinyxml/docs/search/all_5.js delete mode 100644 Engine/lib/tinyxml/docs/search/all_6.js delete mode 100644 Engine/lib/tinyxml/docs/search/all_7.js delete mode 100644 Engine/lib/tinyxml/docs/search/all_8.js delete mode 100644 Engine/lib/tinyxml/docs/search/all_9.js delete mode 100644 Engine/lib/tinyxml/docs/search/all_a.js delete mode 100644 Engine/lib/tinyxml/docs/search/all_b.js delete mode 100644 Engine/lib/tinyxml/docs/search/all_c.js delete mode 100644 Engine/lib/tinyxml/docs/search/all_d.js delete mode 100644 Engine/lib/tinyxml/docs/search/all_e.js delete mode 100644 Engine/lib/tinyxml/docs/search/all_f.js delete mode 100644 Engine/lib/tinyxml/docs/search/classes_0.js delete mode 100644 Engine/lib/tinyxml/docs/search/functions_0.js delete mode 100644 Engine/lib/tinyxml/docs/search/functions_1.js delete mode 100644 Engine/lib/tinyxml/docs/search/functions_10.js delete mode 100644 Engine/lib/tinyxml/docs/search/functions_11.js delete mode 100644 Engine/lib/tinyxml/docs/search/functions_12.js delete mode 100644 Engine/lib/tinyxml/docs/search/functions_13.js delete mode 100644 Engine/lib/tinyxml/docs/search/functions_2.js delete mode 100644 Engine/lib/tinyxml/docs/search/functions_3.js delete mode 100644 Engine/lib/tinyxml/docs/search/functions_4.js delete mode 100644 Engine/lib/tinyxml/docs/search/functions_5.js delete mode 100644 Engine/lib/tinyxml/docs/search/functions_6.js delete mode 100644 Engine/lib/tinyxml/docs/search/functions_7.js delete mode 100644 Engine/lib/tinyxml/docs/search/functions_8.js delete mode 100644 Engine/lib/tinyxml/docs/search/functions_9.js delete mode 100644 Engine/lib/tinyxml/docs/search/functions_a.js delete mode 100644 Engine/lib/tinyxml/docs/search/functions_b.js delete mode 100644 Engine/lib/tinyxml/docs/search/functions_c.js delete mode 100644 Engine/lib/tinyxml/docs/search/functions_d.js delete mode 100644 Engine/lib/tinyxml/docs/search/functions_e.js delete mode 100644 Engine/lib/tinyxml/docs/search/functions_f.js delete mode 100644 Engine/lib/tinyxml/docs/search/mag_sel.svg delete mode 100644 Engine/lib/tinyxml/docs/search/pages_0.js delete mode 100644 Engine/lib/tinyxml/docs/search/pages_1.js delete mode 100644 Engine/lib/tinyxml/docs/search/pages_2.js delete mode 100644 Engine/lib/tinyxml/docs/search/pages_3.js delete mode 100644 Engine/lib/tinyxml/docs/search/pages_4.js delete mode 100644 Engine/lib/tinyxml/docs/search/search.js delete mode 100644 Engine/lib/tinyxml/docs/tabs.css delete mode 100644 Engine/lib/tinyxml/docs/tinyxml2_8h_source.html create mode 100644 Engine/lib/tinyxml2/.github/workflows/test.yml create mode 100644 Engine/lib/tinyxml2/.gitignore create mode 100644 Engine/lib/tinyxml2/CMakeLists.txt rename Engine/lib/{tinyxml => tinyxml2}/LICENSE.txt (100%) create mode 100644 Engine/lib/tinyxml2/Makefile create mode 100644 Engine/lib/tinyxml2/TinyXML2_small.png create mode 100644 Engine/lib/tinyxml2/cmake/tinyxml2-config.cmake create mode 100644 Engine/lib/tinyxml2/cmake/tinyxml2.pc.in create mode 100644 Engine/lib/tinyxml2/contrib/html5-printer.cpp create mode 100644 Engine/lib/tinyxml2/docs/_config.yml rename Engine/lib/{tinyxml => tinyxml2}/docs/_example_1.html (64%) rename Engine/lib/{tinyxml => tinyxml2}/docs/_example_2.html (66%) rename Engine/lib/{tinyxml => tinyxml2}/docs/_example_3.html (79%) rename Engine/lib/{tinyxml => tinyxml2}/docs/_example_4.html (76%) rename Engine/lib/{tinyxml => tinyxml2}/docs/annotated.html (51%) rename Engine/lib/{tinyxml => tinyxml2}/docs/bc_s.png (100%) create mode 100644 Engine/lib/tinyxml2/docs/bc_sd.png rename Engine/lib/{tinyxml => tinyxml2}/docs/bdwn.png (100%) rename Engine/lib/{tinyxml => tinyxml2}/docs/classes.html (69%) rename Engine/lib/{tinyxml => tinyxml2}/docs/classtinyxml2_1_1_x_m_l_attribute-members.html (57%) create mode 100644 Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_attribute.html create mode 100644 Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_comment-members.html create mode 100644 Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_comment.html create mode 100644 Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_comment.png rename Engine/lib/{tinyxml => tinyxml2}/docs/classtinyxml2_1_1_x_m_l_const_handle-members.html (62%) rename Engine/lib/{tinyxml => tinyxml2}/docs/classtinyxml2_1_1_x_m_l_const_handle.html (68%) create mode 100644 Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_declaration-members.html create mode 100644 Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_declaration.html create mode 100644 Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_declaration.png create mode 100644 Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_document-members.html create mode 100644 Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_document.html create mode 100644 Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_document.png rename Engine/lib/{tinyxml => tinyxml2}/docs/classtinyxml2_1_1_x_m_l_element-members.html (50%) create mode 100644 Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_element.html create mode 100644 Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_element.png rename Engine/lib/{tinyxml => tinyxml2}/docs/classtinyxml2_1_1_x_m_l_handle-members.html (54%) rename Engine/lib/{tinyxml => tinyxml2}/docs/classtinyxml2_1_1_x_m_l_handle.html (55%) create mode 100644 Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_node-members.html create mode 100644 Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_node.html create mode 100644 Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_node.png create mode 100644 Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_printer-members.html create mode 100644 Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_printer.html create mode 100644 Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_printer.png create mode 100644 Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_text-members.html create mode 100644 Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_text.html create mode 100644 Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_text.png create mode 100644 Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_unknown-members.html create mode 100644 Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_unknown.html create mode 100644 Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_unknown.png rename Engine/lib/{tinyxml => tinyxml2}/docs/classtinyxml2_1_1_x_m_l_visitor-members.html (56%) rename Engine/lib/{tinyxml => tinyxml2}/docs/classtinyxml2_1_1_x_m_l_visitor.html (60%) create mode 100644 Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_visitor.png create mode 100644 Engine/lib/tinyxml2/docs/clipboard.js rename Engine/lib/{tinyxml => tinyxml2}/docs/closed.png (100%) create mode 100644 Engine/lib/tinyxml2/docs/cookie.js rename Engine/lib/{tinyxml => tinyxml2}/docs/doc.png (100%) create mode 100644 Engine/lib/tinyxml2/docs/doc.svg create mode 100644 Engine/lib/tinyxml2/docs/docd.svg create mode 100644 Engine/lib/tinyxml2/docs/doxygen.css rename Engine/lib/{tinyxml => tinyxml2}/docs/doxygen.png (100%) rename Engine/lib/{tinyxml => tinyxml2}/docs/doxygen.svg (99%) create mode 100644 Engine/lib/tinyxml2/docs/doxygen_crawl.html create mode 100644 Engine/lib/tinyxml2/docs/dynsections.js rename Engine/lib/{tinyxml => tinyxml2}/docs/files.html (63%) rename Engine/lib/{tinyxml => tinyxml2}/docs/folderclosed.png (100%) create mode 100644 Engine/lib/tinyxml2/docs/folderclosed.svg create mode 100644 Engine/lib/tinyxml2/docs/folderclosedd.svg rename Engine/lib/{tinyxml => tinyxml2}/docs/folderopen.png (100%) create mode 100644 Engine/lib/tinyxml2/docs/folderopen.svg create mode 100644 Engine/lib/tinyxml2/docs/folderopend.svg create mode 100644 Engine/lib/tinyxml2/docs/functions.html rename Engine/lib/{tinyxml => tinyxml2}/docs/functions_b.html (52%) create mode 100644 Engine/lib/tinyxml2/docs/functions_c.html create mode 100644 Engine/lib/tinyxml2/docs/functions_d.html rename Engine/lib/{tinyxml => tinyxml2}/docs/functions_e.html (50%) create mode 100644 Engine/lib/tinyxml2/docs/functions_f.html create mode 100644 Engine/lib/tinyxml2/docs/functions_func.html create mode 100644 Engine/lib/tinyxml2/docs/functions_func_b.html create mode 100644 Engine/lib/tinyxml2/docs/functions_func_c.html create mode 100644 Engine/lib/tinyxml2/docs/functions_func_d.html create mode 100644 Engine/lib/tinyxml2/docs/functions_func_e.html create mode 100644 Engine/lib/tinyxml2/docs/functions_func_f.html create mode 100644 Engine/lib/tinyxml2/docs/functions_func_g.html rename Engine/lib/{tinyxml => tinyxml2}/docs/functions_func_h.html (54%) create mode 100644 Engine/lib/tinyxml2/docs/functions_func_i.html create mode 100644 Engine/lib/tinyxml2/docs/functions_func_l.html create mode 100644 Engine/lib/tinyxml2/docs/functions_func_n.html rename Engine/lib/{tinyxml => tinyxml2}/docs/functions_func_o.html (51%) create mode 100644 Engine/lib/tinyxml2/docs/functions_func_p.html create mode 100644 Engine/lib/tinyxml2/docs/functions_func_q.html rename Engine/lib/{tinyxml => tinyxml2}/docs/functions_func_r.html (53%) create mode 100644 Engine/lib/tinyxml2/docs/functions_func_s.html create mode 100644 Engine/lib/tinyxml2/docs/functions_func_t.html create mode 100644 Engine/lib/tinyxml2/docs/functions_func_u.html create mode 100644 Engine/lib/tinyxml2/docs/functions_func_v.html create mode 100644 Engine/lib/tinyxml2/docs/functions_func_x.html create mode 100644 Engine/lib/tinyxml2/docs/functions_g.html rename Engine/lib/{tinyxml => tinyxml2}/docs/functions_h.html (57%) create mode 100644 Engine/lib/tinyxml2/docs/functions_i.html create mode 100644 Engine/lib/tinyxml2/docs/functions_l.html create mode 100644 Engine/lib/tinyxml2/docs/functions_n.html rename Engine/lib/{tinyxml => tinyxml2}/docs/functions_o.html (55%) create mode 100644 Engine/lib/tinyxml2/docs/functions_p.html create mode 100644 Engine/lib/tinyxml2/docs/functions_q.html rename Engine/lib/{tinyxml => tinyxml2}/docs/functions_r.html (57%) create mode 100644 Engine/lib/tinyxml2/docs/functions_s.html create mode 100644 Engine/lib/tinyxml2/docs/functions_t.html create mode 100644 Engine/lib/tinyxml2/docs/functions_u.html create mode 100644 Engine/lib/tinyxml2/docs/functions_v.html rename Engine/lib/{tinyxml => tinyxml2}/docs/functions_x.html (52%) rename Engine/lib/{tinyxml => tinyxml2}/docs/hierarchy.html (50%) rename Engine/lib/{tinyxml => tinyxml2}/docs/index.html (86%) create mode 100644 Engine/lib/tinyxml2/docs/jquery.js create mode 100644 Engine/lib/tinyxml2/docs/menu.js rename Engine/lib/{tinyxml => tinyxml2}/docs/menudata.js (100%) create mode 100644 Engine/lib/tinyxml2/docs/minus.svg create mode 100644 Engine/lib/tinyxml2/docs/minusd.svg rename Engine/lib/{tinyxml => tinyxml2}/docs/nav_f.png (100%) create mode 100644 Engine/lib/tinyxml2/docs/nav_fd.png rename Engine/lib/{tinyxml => tinyxml2}/docs/nav_g.png (100%) rename Engine/lib/{tinyxml => tinyxml2}/docs/nav_h.png (100%) create mode 100644 Engine/lib/tinyxml2/docs/nav_hd.png rename Engine/lib/{tinyxml => tinyxml2}/docs/open.png (100%) rename Engine/lib/{tinyxml => tinyxml2}/docs/pages.html (58%) create mode 100644 Engine/lib/tinyxml2/docs/plus.svg create mode 100644 Engine/lib/tinyxml2/docs/plusd.svg rename Engine/lib/{tinyxml => tinyxml2}/docs/search/all_0.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/all_0.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/all_1.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/all_1.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/all_10.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/all_10.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/all_11.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/all_11.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/all_12.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/all_12.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/all_13.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/all_13.js create mode 100644 Engine/lib/tinyxml2/docs/search/all_14.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/all_2.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/all_2.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/all_3.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/all_3.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/all_4.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/all_4.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/all_5.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/all_5.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/all_6.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/all_6.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/all_7.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/all_7.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/all_8.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/all_8.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/all_9.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/all_9.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/all_a.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/all_a.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/all_b.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/all_b.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/all_c.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/all_c.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/all_d.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/all_d.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/all_e.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/all_e.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/all_f.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/all_f.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/classes_0.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/classes_0.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/close.png (100%) rename Engine/lib/{tinyxml => tinyxml2}/docs/search/close.svg (62%) rename Engine/lib/{tinyxml => tinyxml2}/docs/search/functions_0.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/functions_0.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/functions_1.html (100%) rename Engine/lib/{tinyxml/docs/search/all_1.js => tinyxml2/docs/search/functions_1.js} (56%) rename Engine/lib/{tinyxml => tinyxml2}/docs/search/functions_10.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/functions_10.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/functions_11.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/functions_11.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/functions_12.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/functions_12.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/functions_13.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/functions_13.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/functions_2.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/functions_2.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/functions_3.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/functions_3.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/functions_4.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/functions_4.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/functions_5.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/functions_5.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/functions_6.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/functions_6.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/functions_7.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/functions_7.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/functions_8.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/functions_8.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/functions_9.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/functions_9.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/functions_a.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/functions_a.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/functions_b.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/functions_b.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/functions_c.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/functions_c.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/functions_d.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/functions_d.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/functions_e.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/functions_e.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/functions_f.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/functions_f.js create mode 100644 Engine/lib/tinyxml2/docs/search/mag.svg create mode 100644 Engine/lib/tinyxml2/docs/search/mag_d.svg rename Engine/lib/{tinyxml => tinyxml2}/docs/search/mag_sel.png (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/mag_sel.svg create mode 100644 Engine/lib/tinyxml2/docs/search/mag_seld.svg rename Engine/lib/{tinyxml => tinyxml2}/docs/search/nomatches.html (100%) rename Engine/lib/{tinyxml => tinyxml2}/docs/search/pages_0.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/pages_0.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/pages_1.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/pages_1.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/pages_2.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/pages_2.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/pages_3.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/pages_3.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/pages_4.html (100%) create mode 100644 Engine/lib/tinyxml2/docs/search/pages_4.js create mode 100644 Engine/lib/tinyxml2/docs/search/pages_5.js create mode 100644 Engine/lib/tinyxml2/docs/search/pages_6.js create mode 100644 Engine/lib/tinyxml2/docs/search/pages_7.js create mode 100644 Engine/lib/tinyxml2/docs/search/pages_8.js create mode 100644 Engine/lib/tinyxml2/docs/search/pages_9.js create mode 100644 Engine/lib/tinyxml2/docs/search/pages_a.js create mode 100644 Engine/lib/tinyxml2/docs/search/pages_b.js create mode 100644 Engine/lib/tinyxml2/docs/search/pages_c.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/search.css (63%) create mode 100644 Engine/lib/tinyxml2/docs/search/search.js rename Engine/lib/{tinyxml => tinyxml2}/docs/search/search_l.png (100%) rename Engine/lib/{tinyxml => tinyxml2}/docs/search/search_m.png (100%) rename Engine/lib/{tinyxml => tinyxml2}/docs/search/search_r.png (100%) rename Engine/lib/{tinyxml => tinyxml2}/docs/search/searchdata.js (83%) rename Engine/lib/{tinyxml => tinyxml2}/docs/splitbar.png (100%) create mode 100644 Engine/lib/tinyxml2/docs/splitbard.png rename Engine/lib/{tinyxml => tinyxml2}/docs/sync_off.png (100%) rename Engine/lib/{tinyxml => tinyxml2}/docs/sync_on.png (100%) rename Engine/lib/{tinyxml => tinyxml2}/docs/tab_a.png (100%) create mode 100644 Engine/lib/tinyxml2/docs/tab_ad.png rename Engine/lib/{tinyxml => tinyxml2}/docs/tab_b.png (100%) create mode 100644 Engine/lib/tinyxml2/docs/tab_bd.png rename Engine/lib/{tinyxml => tinyxml2}/docs/tab_h.png (100%) create mode 100644 Engine/lib/tinyxml2/docs/tab_hd.png rename Engine/lib/{tinyxml => tinyxml2}/docs/tab_s.png (100%) create mode 100644 Engine/lib/tinyxml2/docs/tab_sd.png create mode 100644 Engine/lib/tinyxml2/docs/tabs.css create mode 100644 Engine/lib/tinyxml2/docs/tinyxml2_8h_source.html create mode 100644 Engine/lib/tinyxml2/dox create mode 100644 Engine/lib/tinyxml2/meson.build create mode 100644 Engine/lib/tinyxml2/meson_options.txt rename Engine/lib/{tinyxml => tinyxml2}/readme.md (93%) create mode 100644 Engine/lib/tinyxml2/resources/dream.xml create mode 100644 Engine/lib/tinyxml2/resources/empty.xml create mode 100644 Engine/lib/tinyxml2/resources/utf8test.xml create mode 100644 Engine/lib/tinyxml2/resources/utf8testverify.xml create mode 100644 Engine/lib/tinyxml2/resources/xmltest-4636783552757760.xml create mode 100644 Engine/lib/tinyxml2/resources/xmltest-5330.xml create mode 100644 Engine/lib/tinyxml2/resources/xmltest-5662204197076992.xml create mode 100644 Engine/lib/tinyxml2/resources/xmltest-5720541257269248.xml create mode 100644 Engine/lib/tinyxml2/setversion.py create mode 100644 Engine/lib/tinyxml2/test/CMakeLists.txt rename Engine/lib/{tinyxml => tinyxml2}/tinyxml2.cpp (97%) rename Engine/lib/{tinyxml => tinyxml2}/tinyxml2.h (95%) create mode 100644 Engine/lib/tinyxml2/xmltest.cpp diff --git a/Engine/lib/CMakeLists.txt b/Engine/lib/CMakeLists.txt index 1000cba53..e3a28fbb5 100644 --- a/Engine/lib/CMakeLists.txt +++ b/Engine/lib/CMakeLists.txt @@ -186,7 +186,7 @@ mark_as_advanced(PNG_DEBUG) mark_as_advanced(PNG_FRAMEWORK) mark_as_advanced(PNG_PREFIX) -add_subdirectory(tinyxml ${TORQUE_LIB_TARG_DIRECTORY}/tinyxml EXCLUDE_FROM_ALL) +add_subdirectory(tinyxml2 ${TORQUE_LIB_TARG_DIRECTORY}/tinyxml2 EXCLUDE_FROM_ALL) add_subdirectory(opcode ${TORQUE_LIB_TARG_DIRECTORY}/opcode EXCLUDE_FROM_ALL) add_subdirectory(pcre ${TORQUE_LIB_TARG_DIRECTORY}/pcre EXCLUDE_FROM_ALL) diff --git a/Engine/lib/collada/CMakeLists.txt b/Engine/lib/collada/CMakeLists.txt index 4c9b9616d..533565457 100644 --- a/Engine/lib/collada/CMakeLists.txt +++ b/Engine/lib/collada/CMakeLists.txt @@ -4,4 +4,4 @@ file(GLOB COLLADA_SOURCES "src/1.4/dom/*.cpp" "src/dae/*.cpp" "src/modules/LIBXM add_library(collada STATIC ${COLLADA_SOURCES}) target_include_directories(collada PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_CURRENT_SOURCE_DIR}/include/1.4) target_compile_definitions(collada PUBLIC DOM_INCLUDE_TINYXML PCRE_STATIC) -target_link_libraries(collada PUBLIC tinyxml pcre) +target_link_libraries(collada PUBLIC tinyxml2 pcre) diff --git a/Engine/lib/tinyxml/CMakeLists.txt b/Engine/lib/tinyxml/CMakeLists.txt deleted file mode 100644 index 83ac40ea3..000000000 --- a/Engine/lib/tinyxml/CMakeLists.txt +++ /dev/null @@ -1,4 +0,0 @@ -add_library(tinyxml STATIC "tinyxml2.cpp") - -# NOTE: Some stuff include tinyxml by tinyxml/tinyxml2.h instead of just tinyxml2.h -target_include_directories(tinyxml PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../) diff --git a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_attribute.html b/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_attribute.html deleted file mode 100644 index bcec9428d..000000000 --- a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_attribute.html +++ /dev/null @@ -1,232 +0,0 @@ - - - - - - - -TinyXML-2: tinyxml2::XMLAttribute Class Reference - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
tinyxml2::XMLAttribute Class Reference
-
-
- -

#include <tinyxml2.h>

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

-const char * Name () const
 The name of the attribute.
 
-const char * Value () const
 The value of the attribute.
 
-int GetLineNum () const
 Gets the line number the attribute is in, if the document was parsed from a file.
 
-const XMLAttributeNext () const
 The next attribute in the list.
 
int IntValue () const
 
-unsigned UnsignedValue () const
 Query as an unsigned integer. See IntValue()
 
-bool BoolValue () const
 Query as a boolean. See IntValue()
 
-double DoubleValue () const
 Query as a double. See IntValue()
 
-float FloatValue () const
 Query as a float. See IntValue()
 
XMLError QueryIntValue (int *value) const
 
-XMLError QueryUnsignedValue (unsigned int *value) const
 See QueryIntValue.
 
-XMLError QueryInt64Value (int64_t *value) const
 See QueryIntValue.
 
-XMLError QueryUnsigned64Value (uint64_t *value) const
 See QueryIntValue.
 
-XMLError QueryBoolValue (bool *value) const
 See QueryIntValue.
 
-XMLError QueryDoubleValue (double *value) const
 See QueryIntValue.
 
-XMLError QueryFloatValue (float *value) const
 See QueryIntValue.
 
-void SetAttribute (const char *value)
 Set the attribute to a string value.
 
-void SetAttribute (int value)
 Set the attribute to value.
 
-void SetAttribute (unsigned value)
 Set the attribute to value.
 
-void SetAttribute (int64_t value)
 Set the attribute to value.
 
-void SetAttribute (uint64_t value)
 Set the attribute to value.
 
-void SetAttribute (bool value)
 Set the attribute to value.
 
-void SetAttribute (double value)
 Set the attribute to value.
 
-void SetAttribute (float value)
 Set the attribute to value.
 
-

Detailed Description

-

An attribute is a name-value pair. Elements have an arbitrary number of attributes, each with a unique name.

-
Note
The attributes are not XMLNodes. You may only query the Next() attribute in a list.
-

Member Function Documentation

- -

◆ IntValue()

- -
-
- - - - - -
- - - - - - - -
int tinyxml2::XMLAttribute::IntValue () const
-
-inline
-
-

IntValue interprets the attribute as an integer, and returns the value. If the value isn't an integer, 0 will be returned. There is no error checking; use QueryIntValue() if you need error checking.

- -
-
- -

◆ QueryIntValue()

- -
-
- - - - - - - - -
XMLError tinyxml2::XMLAttribute::QueryIntValue (int * value) const
-
-

QueryIntValue interprets the attribute as an integer, and returns the value in the provided parameter. The function will return XML_SUCCESS on success, and XML_WRONG_ATTRIBUTE_TYPE if the conversion is not successful.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_comment-members.html b/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_comment-members.html deleted file mode 100644 index 1e7f36a6d..000000000 --- a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_comment-members.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - -TinyXML-2: Member List - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
tinyxml2::XMLComment Member List
-
-
- -

This is the complete list of members for tinyxml2::XMLComment, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Accept(XMLVisitor *visitor) consttinyxml2::XMLCommentvirtual
DeepClone(XMLDocument *target) consttinyxml2::XMLNode
DeleteChild(XMLNode *node)tinyxml2::XMLNode
DeleteChildren()tinyxml2::XMLNode
FirstChild() consttinyxml2::XMLNodeinline
FirstChildElement(const char *name=0) consttinyxml2::XMLNode
GetDocument() consttinyxml2::XMLNodeinline
GetDocument()tinyxml2::XMLNodeinline
GetLineNum() consttinyxml2::XMLNodeinline
GetUserData() consttinyxml2::XMLNodeinline
InsertAfterChild(XMLNode *afterThis, XMLNode *addThis)tinyxml2::XMLNode
InsertEndChild(XMLNode *addThis)tinyxml2::XMLNode
InsertFirstChild(XMLNode *addThis)tinyxml2::XMLNode
LastChild() consttinyxml2::XMLNodeinline
LastChildElement(const char *name=0) consttinyxml2::XMLNode
NextSibling() consttinyxml2::XMLNodeinline
NextSiblingElement(const char *name=0) consttinyxml2::XMLNode
NoChildren() consttinyxml2::XMLNodeinline
Parent() consttinyxml2::XMLNodeinline
PreviousSibling() consttinyxml2::XMLNodeinline
PreviousSiblingElement(const char *name=0) consttinyxml2::XMLNode
SetUserData(void *userData)tinyxml2::XMLNodeinline
SetValue(const char *val, bool staticMem=false)tinyxml2::XMLNode
ShallowClone(XMLDocument *document) consttinyxml2::XMLCommentvirtual
ShallowEqual(const XMLNode *compare) consttinyxml2::XMLCommentvirtual
ToComment()tinyxml2::XMLCommentinlinevirtual
ToDeclaration()tinyxml2::XMLNodeinlinevirtual
ToDocument()tinyxml2::XMLNodeinlinevirtual
ToElement()tinyxml2::XMLNodeinlinevirtual
ToText()tinyxml2::XMLNodeinlinevirtual
ToUnknown()tinyxml2::XMLNodeinlinevirtual
Value() consttinyxml2::XMLNode
- - - - diff --git a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_comment.html b/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_comment.html deleted file mode 100644 index dd1a5d4f2..000000000 --- a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_comment.html +++ /dev/null @@ -1,301 +0,0 @@ - - - - - - - -TinyXML-2: tinyxml2::XMLComment Class Reference - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
tinyxml2::XMLComment Class Reference
-
-
- -

#include <tinyxml2.h>

-
-Inheritance diagram for tinyxml2::XMLComment:
-
-
- - -tinyxml2::XMLNode - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

-virtual XMLCommentToComment ()
 Safely cast to a Comment, or null.
 
virtual bool Accept (XMLVisitor *visitor) const
 
virtual XMLNodeShallowClone (XMLDocument *document) const
 
virtual bool ShallowEqual (const XMLNode *compare) const
 
- Public Member Functions inherited from tinyxml2::XMLNode
-const XMLDocumentGetDocument () const
 Get the XMLDocument that owns this XMLNode.
 
-XMLDocumentGetDocument ()
 Get the XMLDocument that owns this XMLNode.
 
-virtual XMLElementToElement ()
 Safely cast to an Element, or null.
 
-virtual XMLTextToText ()
 Safely cast to Text, or null.
 
-virtual XMLDocumentToDocument ()
 Safely cast to a Document, or null.
 
-virtual XMLDeclarationToDeclaration ()
 Safely cast to a Declaration, or null.
 
-virtual XMLUnknownToUnknown ()
 Safely cast to an Unknown, or null.
 
const char * Value () const
 
void SetValue (const char *val, bool staticMem=false)
 
-int GetLineNum () const
 Gets the line number the node is in, if the document was parsed from a file.
 
-const XMLNodeParent () const
 Get the parent of this node on the DOM.
 
-bool NoChildren () const
 Returns true if this node has no children.
 
-const XMLNodeFirstChild () const
 Get the first child node, or null if none exists.
 
const XMLElementFirstChildElement (const char *name=0) const
 
-const XMLNodeLastChild () const
 Get the last child node, or null if none exists.
 
const XMLElementLastChildElement (const char *name=0) const
 
-const XMLNodePreviousSibling () const
 Get the previous (left) sibling node of this node.
 
-const XMLElementPreviousSiblingElement (const char *name=0) const
 Get the previous (left) sibling element of this node, with an optionally supplied name.
 
-const XMLNodeNextSibling () const
 Get the next (right) sibling node of this node.
 
-const XMLElementNextSiblingElement (const char *name=0) const
 Get the next (right) sibling element of this node, with an optionally supplied name.
 
XMLNodeInsertEndChild (XMLNode *addThis)
 
XMLNodeInsertFirstChild (XMLNode *addThis)
 
XMLNodeInsertAfterChild (XMLNode *afterThis, XMLNode *addThis)
 
void DeleteChildren ()
 
void DeleteChild (XMLNode *node)
 
XMLNodeDeepClone (XMLDocument *target) const
 
void SetUserData (void *userData)
 
void * GetUserData () const
 
-

Detailed Description

-

An XML Comment.

-

Member Function Documentation

- -

◆ Accept()

- -
-
- - - - - -
- - - - - - - - -
virtual bool tinyxml2::XMLComment::Accept (XMLVisitorvisitor) const
-
-virtual
-
-

Accept a hierarchical visit of the nodes in the TinyXML-2 DOM. Every node in the XML tree will be conditionally visited and the host will be called back via the XMLVisitor interface.

-

This is essentially a SAX interface for TinyXML-2. (Note however it doesn't re-parse the XML for the callbacks, so the performance of TinyXML-2 is unchanged by using this interface versus any other.)

-

The interface has been based on ideas from:

- -

Which are both good references for "visiting".

-

An example of using Accept():

XMLPrinter printer;
-tinyxmlDoc.Accept( &printer );
-const char* xmlcstr = printer.CStr();
-
-

Implements tinyxml2::XMLNode.

- -
-
- -

◆ ShallowClone()

- -
-
- - - - - -
- - - - - - - - -
virtual XMLNode* tinyxml2::XMLComment::ShallowClone (XMLDocumentdocument) const
-
-virtual
-
-

Make a copy of this node, but not its children. You may pass in a Document pointer that will be the owner of the new Node. If the 'document' is null, then the node returned will be allocated from the current Document. (this->GetDocument())

-

Note: if called on a XMLDocument, this will return null.

- -

Implements tinyxml2::XMLNode.

- -
-
- -

◆ ShallowEqual()

- -
-
- - - - - -
- - - - - - - - -
virtual bool tinyxml2::XMLComment::ShallowEqual (const XMLNodecompare) const
-
-virtual
-
-

Test if 2 nodes are the same, but don't test children. The 2 nodes do not need to be in the same Document.

-

Note: if called on a XMLDocument, this will return false.

- -

Implements tinyxml2::XMLNode.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_comment.png b/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_comment.png deleted file mode 100644 index 3a076f05c0f83dc3e8e2d11062ee57c9d8c2a377..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 650 zcmeAS@N?(olHy`uVBq!ia0vp^y+9nm!3-pY71+{%lth3}i0l9V|AEXGZ@!lHADRGU zf$@O@2Ut7r$OE|?B|(0{3_wL7aP?G(5d#C0q^FBxNCo5Dxexo6Ce`0>f z0k-Im&&;f!T$0WzWSO;z@$czPI;TxGcwACx=~ej&!WL$k+LKC7-kNvmV)lL`=Kj;S zuJBG@BD}9xr~(H=9)QXy)0C>c`CP)|hUd|8DlT7c;t5WK;dOhGx$@Sn^}JvFgcb z?Ca${e+jmk?bkHk@-uYik2dd1tcl8=c9(DJoZfVX=>Y!+rWtK3bK=&|ELpax^0dzq z_!i{ad;5g=07T zI1VVUI+Dm-;6887)tjQ59hARmEX$vK{@3sLxrF>3m;jn6shG>G-nP36nI8mz>>KyChoLWBH}fax=@>dwunTdAd&( z&#s+qzj39%_agnjiodTc%a^|?Q=OD^xz*INxg_vi*eYAAXG#YHv+CZi+h+FEHaRQ& zMTW-gpU-0d%r*bgdUm><_`b8-_r-qXW&gk_%`pFEPLNlo*guA)_HxFp)r-1;35UVc L)z4*}Q$iB}2?{U4 diff --git a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_declaration-members.html b/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_declaration-members.html deleted file mode 100644 index c470c21b6..000000000 --- a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_declaration-members.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - -TinyXML-2: Member List - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
tinyxml2::XMLDeclaration Member List
-
-
- -

This is the complete list of members for tinyxml2::XMLDeclaration, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Accept(XMLVisitor *visitor) consttinyxml2::XMLDeclarationvirtual
DeepClone(XMLDocument *target) consttinyxml2::XMLNode
DeleteChild(XMLNode *node)tinyxml2::XMLNode
DeleteChildren()tinyxml2::XMLNode
FirstChild() consttinyxml2::XMLNodeinline
FirstChildElement(const char *name=0) consttinyxml2::XMLNode
GetDocument() consttinyxml2::XMLNodeinline
GetDocument()tinyxml2::XMLNodeinline
GetLineNum() consttinyxml2::XMLNodeinline
GetUserData() consttinyxml2::XMLNodeinline
InsertAfterChild(XMLNode *afterThis, XMLNode *addThis)tinyxml2::XMLNode
InsertEndChild(XMLNode *addThis)tinyxml2::XMLNode
InsertFirstChild(XMLNode *addThis)tinyxml2::XMLNode
LastChild() consttinyxml2::XMLNodeinline
LastChildElement(const char *name=0) consttinyxml2::XMLNode
NextSibling() consttinyxml2::XMLNodeinline
NextSiblingElement(const char *name=0) consttinyxml2::XMLNode
NoChildren() consttinyxml2::XMLNodeinline
Parent() consttinyxml2::XMLNodeinline
PreviousSibling() consttinyxml2::XMLNodeinline
PreviousSiblingElement(const char *name=0) consttinyxml2::XMLNode
SetUserData(void *userData)tinyxml2::XMLNodeinline
SetValue(const char *val, bool staticMem=false)tinyxml2::XMLNode
ShallowClone(XMLDocument *document) consttinyxml2::XMLDeclarationvirtual
ShallowEqual(const XMLNode *compare) consttinyxml2::XMLDeclarationvirtual
ToComment()tinyxml2::XMLNodeinlinevirtual
ToDeclaration()tinyxml2::XMLDeclarationinlinevirtual
ToDocument()tinyxml2::XMLNodeinlinevirtual
ToElement()tinyxml2::XMLNodeinlinevirtual
ToText()tinyxml2::XMLNodeinlinevirtual
ToUnknown()tinyxml2::XMLNodeinlinevirtual
Value() consttinyxml2::XMLNode
- - - - diff --git a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_declaration.html b/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_declaration.html deleted file mode 100644 index 6e8f9e2b2..000000000 --- a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_declaration.html +++ /dev/null @@ -1,303 +0,0 @@ - - - - - - - -TinyXML-2: tinyxml2::XMLDeclaration Class Reference - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
tinyxml2::XMLDeclaration Class Reference
-
-
- -

#include <tinyxml2.h>

-
-Inheritance diagram for tinyxml2::XMLDeclaration:
-
-
- - -tinyxml2::XMLNode - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

-virtual XMLDeclarationToDeclaration ()
 Safely cast to a Declaration, or null.
 
virtual bool Accept (XMLVisitor *visitor) const
 
virtual XMLNodeShallowClone (XMLDocument *document) const
 
virtual bool ShallowEqual (const XMLNode *compare) const
 
- Public Member Functions inherited from tinyxml2::XMLNode
-const XMLDocumentGetDocument () const
 Get the XMLDocument that owns this XMLNode.
 
-XMLDocumentGetDocument ()
 Get the XMLDocument that owns this XMLNode.
 
-virtual XMLElementToElement ()
 Safely cast to an Element, or null.
 
-virtual XMLTextToText ()
 Safely cast to Text, or null.
 
-virtual XMLCommentToComment ()
 Safely cast to a Comment, or null.
 
-virtual XMLDocumentToDocument ()
 Safely cast to a Document, or null.
 
-virtual XMLUnknownToUnknown ()
 Safely cast to an Unknown, or null.
 
const char * Value () const
 
void SetValue (const char *val, bool staticMem=false)
 
-int GetLineNum () const
 Gets the line number the node is in, if the document was parsed from a file.
 
-const XMLNodeParent () const
 Get the parent of this node on the DOM.
 
-bool NoChildren () const
 Returns true if this node has no children.
 
-const XMLNodeFirstChild () const
 Get the first child node, or null if none exists.
 
const XMLElementFirstChildElement (const char *name=0) const
 
-const XMLNodeLastChild () const
 Get the last child node, or null if none exists.
 
const XMLElementLastChildElement (const char *name=0) const
 
-const XMLNodePreviousSibling () const
 Get the previous (left) sibling node of this node.
 
-const XMLElementPreviousSiblingElement (const char *name=0) const
 Get the previous (left) sibling element of this node, with an optionally supplied name.
 
-const XMLNodeNextSibling () const
 Get the next (right) sibling node of this node.
 
-const XMLElementNextSiblingElement (const char *name=0) const
 Get the next (right) sibling element of this node, with an optionally supplied name.
 
XMLNodeInsertEndChild (XMLNode *addThis)
 
XMLNodeInsertFirstChild (XMLNode *addThis)
 
XMLNodeInsertAfterChild (XMLNode *afterThis, XMLNode *addThis)
 
void DeleteChildren ()
 
void DeleteChild (XMLNode *node)
 
XMLNodeDeepClone (XMLDocument *target) const
 
void SetUserData (void *userData)
 
void * GetUserData () const
 
-

Detailed Description

-

In correct XML the declaration is the first entry in the file.

    <?xml version="1.0" standalone="yes"?>
-

TinyXML-2 will happily read or write files without a declaration, however.

-

The text of the declaration isn't interpreted. It is parsed and written as a string.

-

Member Function Documentation

- -

◆ Accept()

- -
-
- - - - - -
- - - - - - - - -
virtual bool tinyxml2::XMLDeclaration::Accept (XMLVisitorvisitor) const
-
-virtual
-
-

Accept a hierarchical visit of the nodes in the TinyXML-2 DOM. Every node in the XML tree will be conditionally visited and the host will be called back via the XMLVisitor interface.

-

This is essentially a SAX interface for TinyXML-2. (Note however it doesn't re-parse the XML for the callbacks, so the performance of TinyXML-2 is unchanged by using this interface versus any other.)

-

The interface has been based on ideas from:

- -

Which are both good references for "visiting".

-

An example of using Accept():

XMLPrinter printer;
-tinyxmlDoc.Accept( &printer );
-const char* xmlcstr = printer.CStr();
-
-

Implements tinyxml2::XMLNode.

- -
-
- -

◆ ShallowClone()

- -
-
- - - - - -
- - - - - - - - -
virtual XMLNode* tinyxml2::XMLDeclaration::ShallowClone (XMLDocumentdocument) const
-
-virtual
-
-

Make a copy of this node, but not its children. You may pass in a Document pointer that will be the owner of the new Node. If the 'document' is null, then the node returned will be allocated from the current Document. (this->GetDocument())

-

Note: if called on a XMLDocument, this will return null.

- -

Implements tinyxml2::XMLNode.

- -
-
- -

◆ ShallowEqual()

- -
-
- - - - - -
- - - - - - - - -
virtual bool tinyxml2::XMLDeclaration::ShallowEqual (const XMLNodecompare) const
-
-virtual
-
-

Test if 2 nodes are the same, but don't test children. The 2 nodes do not need to be in the same Document.

-

Note: if called on a XMLDocument, this will return false.

- -

Implements tinyxml2::XMLNode.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_declaration.png b/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_declaration.png deleted file mode 100644 index c7aa6319fcb939dc39dc72310971fd68db7611eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 688 zcmV;h0#E&kP)vTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d0006%Nklb)L9y(^B)#yTuZ-F8Vj(?>Q*`lJ-Pg^R%Pr(xT#53#-TvAf>AMkW7g zq07kyn^}u)(u_&Fq{gmln%pPHWiEpopaO1425iRDA?=c^U9z>M%So(@!#a)Fh7KQM z%axFVu>)G>&0wbP_AKPf`%jWay2;kmBuLi!#&xkt(wSUr^(PyM(B_HE4G;FIBx^Tbcarp^?y`LW?JnCl(EjMRUXs46#U@F9P0qG$+cu{Fp3@J& zq?(xR=VxBHiP>Ig)56Wnw)zy{H(G1}el0ctzZM&SUyBXEuf+!7*J1`>vBc;UVnFw{oQP=!`Nm3jm8nq zLR&U~Pf9*oxCoqpD%;rQDI35+nJv9dUjItK93U;UaqqC%M8}Jr*uCys(u*wLQWD

!f9COP3$EE_MaT40qVt%(rLs82S@is>ERT z@kGSKaD<2j>q?!vBv;zaRx&}Lx4v;N*!qM8pwn;I%$dDp8x^mc?jtzZ+IBR90M+^` z^zrfy<^4A7(|Tt1*Ff8+M>fFP3}1^AwkbYjW41ZIv47%Q4=|Y)8-QPvvxN}Cocaes W_8~7%yCIwa0000 - - - - - - -TinyXML-2: Member List - - - - - - - - - -

-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
tinyxml2::XMLDocument Member List
-
-
- -

This is the complete list of members for tinyxml2::XMLDocument, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Accept(XMLVisitor *visitor) consttinyxml2::XMLDocumentvirtual
Clear()tinyxml2::XMLDocument
ClearError()tinyxml2::XMLDocument
DeepClone(XMLDocument *target) consttinyxml2::XMLNode
DeepCopy(XMLDocument *target) consttinyxml2::XMLDocument
DeleteChild(XMLNode *node)tinyxml2::XMLNode
DeleteChildren()tinyxml2::XMLNode
DeleteNode(XMLNode *node)tinyxml2::XMLDocument
Error() consttinyxml2::XMLDocumentinline
ErrorID() consttinyxml2::XMLDocumentinline
ErrorLineNum() consttinyxml2::XMLDocumentinline
ErrorStr() consttinyxml2::XMLDocument
FirstChild() consttinyxml2::XMLNodeinline
FirstChildElement(const char *name=0) consttinyxml2::XMLNode
GetDocument() consttinyxml2::XMLNodeinline
GetDocument()tinyxml2::XMLNodeinline
GetLineNum() consttinyxml2::XMLNodeinline
GetUserData() consttinyxml2::XMLNodeinline
HasBOM() consttinyxml2::XMLDocumentinline
InsertAfterChild(XMLNode *afterThis, XMLNode *addThis)tinyxml2::XMLNode
InsertEndChild(XMLNode *addThis)tinyxml2::XMLNode
InsertFirstChild(XMLNode *addThis)tinyxml2::XMLNode
LastChild() consttinyxml2::XMLNodeinline
LastChildElement(const char *name=0) consttinyxml2::XMLNode
LoadFile(const char *filename)tinyxml2::XMLDocument
LoadFile(FILE *)tinyxml2::XMLDocument
NewComment(const char *comment)tinyxml2::XMLDocument
NewDeclaration(const char *text=0)tinyxml2::XMLDocument
NewElement(const char *name)tinyxml2::XMLDocument
NewText(const char *text)tinyxml2::XMLDocument
NewUnknown(const char *text)tinyxml2::XMLDocument
NextSibling() consttinyxml2::XMLNodeinline
NextSiblingElement(const char *name=0) consttinyxml2::XMLNode
NoChildren() consttinyxml2::XMLNodeinline
Parent() consttinyxml2::XMLNodeinline
Parse(const char *xml, size_t nBytes=static_cast< size_t >(-1))tinyxml2::XMLDocument
PreviousSibling() consttinyxml2::XMLNodeinline
PreviousSiblingElement(const char *name=0) consttinyxml2::XMLNode
Print(XMLPrinter *streamer=0) consttinyxml2::XMLDocument
PrintError() consttinyxml2::XMLDocument
RootElement()tinyxml2::XMLDocumentinline
SaveFile(const char *filename, bool compact=false)tinyxml2::XMLDocument
SaveFile(FILE *fp, bool compact=false)tinyxml2::XMLDocument
SetBOM(bool useBOM)tinyxml2::XMLDocumentinline
SetUserData(void *userData)tinyxml2::XMLNodeinline
SetValue(const char *val, bool staticMem=false)tinyxml2::XMLNode
ShallowClone(XMLDocument *) consttinyxml2::XMLDocumentinlinevirtual
ShallowEqual(const XMLNode *) consttinyxml2::XMLDocumentinlinevirtual
ToComment()tinyxml2::XMLNodeinlinevirtual
ToDeclaration()tinyxml2::XMLNodeinlinevirtual
ToDocument()tinyxml2::XMLDocumentinlinevirtual
ToElement()tinyxml2::XMLNodeinlinevirtual
ToText()tinyxml2::XMLNodeinlinevirtual
ToUnknown()tinyxml2::XMLNodeinlinevirtual
Value() consttinyxml2::XMLNode
XMLDocument(bool processEntities=true, Whitespace whitespaceMode=PRESERVE_WHITESPACE)tinyxml2::XMLDocument
- - - - diff --git a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_document.html b/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_document.html deleted file mode 100644 index 43c6c5d22..000000000 --- a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_document.html +++ /dev/null @@ -1,747 +0,0 @@ - - - - - - - -TinyXML-2: tinyxml2::XMLDocument Class Reference - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
tinyxml2::XMLDocument Class Reference
-
-
- -

#include <tinyxml2.h>

-
-Inheritance diagram for tinyxml2::XMLDocument:
-
-
- - -tinyxml2::XMLNode - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

XMLDocument (bool processEntities=true, Whitespace whitespaceMode=PRESERVE_WHITESPACE)
 constructor
 
-virtual XMLDocumentToDocument ()
 Safely cast to a Document, or null.
 
XMLError Parse (const char *xml, size_t nBytes=static_cast< size_t >(-1))
 
XMLError LoadFile (const char *filename)
 
XMLError LoadFile (FILE *)
 
XMLError SaveFile (const char *filename, bool compact=false)
 
XMLError SaveFile (FILE *fp, bool compact=false)
 
bool HasBOM () const
 
void SetBOM (bool useBOM)
 
XMLElementRootElement ()
 
void Print (XMLPrinter *streamer=0) const
 
virtual bool Accept (XMLVisitor *visitor) const
 
XMLElementNewElement (const char *name)
 
XMLCommentNewComment (const char *comment)
 
XMLTextNewText (const char *text)
 
XMLDeclarationNewDeclaration (const char *text=0)
 
XMLUnknownNewUnknown (const char *text)
 
void DeleteNode (XMLNode *node)
 
-void ClearError ()
 Clears the error flags.
 
-bool Error () const
 Return true if there was an error parsing the document.
 
-XMLError ErrorID () const
 Return the errorID.
 
const char * ErrorStr () const
 
-void PrintError () const
 A (trivial) utility function that prints the ErrorStr() to stdout.
 
-int ErrorLineNum () const
 Return the line where the error occurred, or zero if unknown.
 
-void Clear ()
 Clear the document, resetting it to the initial state.
 
void DeepCopy (XMLDocument *target) const
 
virtual XMLNodeShallowClone (XMLDocument *) const
 
virtual bool ShallowEqual (const XMLNode *) const
 
- Public Member Functions inherited from tinyxml2::XMLNode
-const XMLDocumentGetDocument () const
 Get the XMLDocument that owns this XMLNode.
 
-XMLDocumentGetDocument ()
 Get the XMLDocument that owns this XMLNode.
 
-virtual XMLElementToElement ()
 Safely cast to an Element, or null.
 
-virtual XMLTextToText ()
 Safely cast to Text, or null.
 
-virtual XMLCommentToComment ()
 Safely cast to a Comment, or null.
 
-virtual XMLDeclarationToDeclaration ()
 Safely cast to a Declaration, or null.
 
-virtual XMLUnknownToUnknown ()
 Safely cast to an Unknown, or null.
 
const char * Value () const
 
void SetValue (const char *val, bool staticMem=false)
 
-int GetLineNum () const
 Gets the line number the node is in, if the document was parsed from a file.
 
-const XMLNodeParent () const
 Get the parent of this node on the DOM.
 
-bool NoChildren () const
 Returns true if this node has no children.
 
-const XMLNodeFirstChild () const
 Get the first child node, or null if none exists.
 
const XMLElementFirstChildElement (const char *name=0) const
 
-const XMLNodeLastChild () const
 Get the last child node, or null if none exists.
 
const XMLElementLastChildElement (const char *name=0) const
 
-const XMLNodePreviousSibling () const
 Get the previous (left) sibling node of this node.
 
-const XMLElementPreviousSiblingElement (const char *name=0) const
 Get the previous (left) sibling element of this node, with an optionally supplied name.
 
-const XMLNodeNextSibling () const
 Get the next (right) sibling node of this node.
 
-const XMLElementNextSiblingElement (const char *name=0) const
 Get the next (right) sibling element of this node, with an optionally supplied name.
 
XMLNodeInsertEndChild (XMLNode *addThis)
 
XMLNodeInsertFirstChild (XMLNode *addThis)
 
XMLNodeInsertAfterChild (XMLNode *afterThis, XMLNode *addThis)
 
void DeleteChildren ()
 
void DeleteChild (XMLNode *node)
 
XMLNodeDeepClone (XMLDocument *target) const
 
void SetUserData (void *userData)
 
void * GetUserData () const
 
-

Detailed Description

-

A Document binds together all the functionality. It can be saved, loaded, and printed to the screen. All Nodes are connected and allocated to a Document. If the Document is deleted, all its Nodes are also deleted.

-

Member Function Documentation

- -

◆ Accept()

- -
-
- - - - - -
- - - - - - - - -
virtual bool tinyxml2::XMLDocument::Accept (XMLVisitorvisitor) const
-
-virtual
-
-

Accept a hierarchical visit of the nodes in the TinyXML-2 DOM. Every node in the XML tree will be conditionally visited and the host will be called back via the XMLVisitor interface.

-

This is essentially a SAX interface for TinyXML-2. (Note however it doesn't re-parse the XML for the callbacks, so the performance of TinyXML-2 is unchanged by using this interface versus any other.)

-

The interface has been based on ideas from:

- -

Which are both good references for "visiting".

-

An example of using Accept():

XMLPrinter printer;
-tinyxmlDoc.Accept( &printer );
-const char* xmlcstr = printer.CStr();
-
-

Implements tinyxml2::XMLNode.

- -
-
- -

◆ DeepCopy()

- -
-
- - - - - - - - -
void tinyxml2::XMLDocument::DeepCopy (XMLDocumenttarget) const
-
-

Copies this document to a target document. The target will be completely cleared before the copy. If you want to copy a sub-tree, see XMLNode::DeepClone().

-

NOTE: that the 'target' must be non-null.

- -
-
- -

◆ DeleteNode()

- -
-
- - - - - - - - -
void tinyxml2::XMLDocument::DeleteNode (XMLNodenode)
-
-

Delete a node associated with this document. It will be unlinked from the DOM.

- -
-
- -

◆ ErrorStr()

- -
-
- - - - - - - -
const char* tinyxml2::XMLDocument::ErrorStr () const
-
-

Returns a "long form" error description. A hopefully helpful diagnostic with location, line number, and/or additional info.

- -
-
- -

◆ HasBOM()

- -
-
- - - - - -
- - - - - - - -
bool tinyxml2::XMLDocument::HasBOM () const
-
-inline
-
-

Returns true if this document has a leading Byte Order Mark of UTF8.

- -
-
- -

◆ LoadFile() [1/2]

- -
-
- - - - - - - - -
XMLError tinyxml2::XMLDocument::LoadFile (const char * filename)
-
-

Load an XML file from disk. Returns XML_SUCCESS (0) on success, or an errorID.

- -
-
- -

◆ LoadFile() [2/2]

- -
-
- - - - - - - - -
XMLError tinyxml2::XMLDocument::LoadFile (FILE * )
-
-

Load an XML file from disk. You are responsible for providing and closing the FILE*.

-

NOTE: The file should be opened as binary ("rb") not text in order for TinyXML-2 to correctly do newline normalization.

-

Returns XML_SUCCESS (0) on success, or an errorID.

- -
-
- -

◆ NewComment()

- -
-
- - - - - - - - -
XMLComment* tinyxml2::XMLDocument::NewComment (const char * comment)
-
-

Create a new Comment associated with this Document. The memory for the Comment is managed by the Document.

- -
-
- -

◆ NewDeclaration()

- -
-
- - - - - - - - -
XMLDeclaration* tinyxml2::XMLDocument::NewDeclaration (const char * text = 0)
-
-

Create a new Declaration associated with this Document. The memory for the object is managed by the Document.

-

If the 'text' param is null, the standard declaration is used.:

    <?xml version="1.0" encoding="UTF-8"?>
-
-
-
- -

◆ NewElement()

- -
-
- - - - - - - - -
XMLElement* tinyxml2::XMLDocument::NewElement (const char * name)
-
-

Create a new Element associated with this Document. The memory for the Element is managed by the Document.

- -
-
- -

◆ NewText()

- -
-
- - - - - - - - -
XMLText* tinyxml2::XMLDocument::NewText (const char * text)
-
-

Create a new Text associated with this Document. The memory for the Text is managed by the Document.

- -
-
- -

◆ NewUnknown()

- -
-
- - - - - - - - -
XMLUnknown* tinyxml2::XMLDocument::NewUnknown (const char * text)
-
-

Create a new Unknown associated with this Document. The memory for the object is managed by the Document.

- -
-
- -

◆ Parse()

- -
-
- - - - - - - - - - - - - - - - - - -
XMLError tinyxml2::XMLDocument::Parse (const char * xml,
size_t nBytes = static_cast< size_t >(-1) 
)
-
-

Parse an XML file from a character string. Returns XML_SUCCESS (0) on success, or an errorID.

-

You may optionally pass in the 'nBytes', which is the number of bytes which will be parsed. If not specified, TinyXML-2 will assume 'xml' points to a null terminated string.

- -
-
- -

◆ Print()

- -
-
- - - - - - - - -
void tinyxml2::XMLDocument::Print (XMLPrinterstreamer = 0) const
-
-

Print the Document. If the Printer is not provided, it will print to stdout. If you provide Printer, this can print to a file:

XMLPrinter printer( fp );
-doc.Print( &printer );
-

Or you can use a printer to print to memory:

XMLPrinter printer;
-doc.Print( &printer );
-// printer.CStr() has a const char* to the XML
-
-
-
- -

◆ RootElement()

- -
-
- - - - - -
- - - - - - - -
XMLElement* tinyxml2::XMLDocument::RootElement ()
-
-inline
-
-

Return the root element of DOM. Equivalent to FirstChildElement(). To get the first node, use FirstChild().

- -
-
- -

◆ SaveFile() [1/2]

- -
-
- - - - - - - - - - - - - - - - - - -
XMLError tinyxml2::XMLDocument::SaveFile (const char * filename,
bool compact = false 
)
-
-

Save the XML file to disk. Returns XML_SUCCESS (0) on success, or an errorID.

- -
-
- -

◆ SaveFile() [2/2]

- -
-
- - - - - - - - - - - - - - - - - - -
XMLError tinyxml2::XMLDocument::SaveFile (FILE * fp,
bool compact = false 
)
-
-

Save the XML file to disk. You are responsible for providing and closing the FILE*.

-

Returns XML_SUCCESS (0) on success, or an errorID.

- -
-
- -

◆ SetBOM()

- -
-
- - - - - -
- - - - - - - - -
void tinyxml2::XMLDocument::SetBOM (bool useBOM)
-
-inline
-
-

Sets whether to write the BOM when writing the file.

- -
-
- -

◆ ShallowClone()

- -
-
- - - - - -
- - - - - - - - -
virtual XMLNode* tinyxml2::XMLDocument::ShallowClone (XMLDocumentdocument) const
-
-inlinevirtual
-
-

Make a copy of this node, but not its children. You may pass in a Document pointer that will be the owner of the new Node. If the 'document' is null, then the node returned will be allocated from the current Document. (this->GetDocument())

-

Note: if called on a XMLDocument, this will return null.

- -

Implements tinyxml2::XMLNode.

- -
-
- -

◆ ShallowEqual()

- -
-
- - - - - -
- - - - - - - - -
virtual bool tinyxml2::XMLDocument::ShallowEqual (const XMLNodecompare) const
-
-inlinevirtual
-
-

Test if 2 nodes are the same, but don't test children. The 2 nodes do not need to be in the same Document.

-

Note: if called on a XMLDocument, this will return false.

- -

Implements tinyxml2::XMLNode.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_document.png b/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_document.png deleted file mode 100644 index 4fcf9f466dbe8299ecf452e000e909c62318e62f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 657 zcmeAS@N?(olHy`uVBq!ia0vp^lYlsYgBeI3ZM_4cBm#UwT>t<74`jZ0^R=}9&;%e0 zj1L?*z}k679?0b=3GxeO04f53tEWPY7#NroJY5_^Dj46+ecSh1frqtSc;);5C$@9O zw_P#~U9DSwv}?F>}esYbgapp0WN~6M) zS)0P28LfY)v4<_8Aw|cQrBZ0+S%1FBSQ)kC788>nazT9CMSQ9iPR*EkT;;l&P5JZr zDy6d=vY6ymZvPUh;q;uuHp^|*_apAF=1h~=UpoEPA){u6t76LeKW8=1V86HC!gHJN zo@FX8oo6}zid`hRBwp=Tz1{9fUrcjVJU?wwyHqH1Jc#K>PaZ>drtOm3xt7bmPI%|C z+EBM+i#FeZ>uyXRwoGKO$yH(Sm*zZh88^3HO0z}anh;}xDpYN-=q?bo;)` z%un}T35oeSsob>nMyO1}ZSngr{U_}EIaN}*_UrELpVGw>ctJkNR%#VE6!eQdTuk2O UU-YshVESS3boFyt=akR{09U0V`2YX_ diff --git a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_element.html b/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_element.html deleted file mode 100644 index 7a56950bf..000000000 --- a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_element.html +++ /dev/null @@ -1,774 +0,0 @@ - - - - - - - -TinyXML-2: tinyxml2::XMLElement Class Reference - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
tinyxml2::XMLElement Class Reference
-
-
- -

#include <tinyxml2.h>

-
-Inheritance diagram for tinyxml2::XMLElement:
-
-
- - -tinyxml2::XMLNode - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

-const char * Name () const
 Get the name of an element (which is the Value() of the node.)
 
-void SetName (const char *str, bool staticMem=false)
 Set the name of the element.
 
-virtual XMLElementToElement ()
 Safely cast to an Element, or null.
 
virtual bool Accept (XMLVisitor *visitor) const
 
const char * Attribute (const char *name, const char *value=0) const
 
int IntAttribute (const char *name, int defaultValue=0) const
 
-unsigned UnsignedAttribute (const char *name, unsigned defaultValue=0) const
 See IntAttribute()
 
-int64_t Int64Attribute (const char *name, int64_t defaultValue=0) const
 See IntAttribute()
 
-uint64_t Unsigned64Attribute (const char *name, uint64_t defaultValue=0) const
 See IntAttribute()
 
-bool BoolAttribute (const char *name, bool defaultValue=false) const
 See IntAttribute()
 
-double DoubleAttribute (const char *name, double defaultValue=0) const
 See IntAttribute()
 
-float FloatAttribute (const char *name, float defaultValue=0) const
 See IntAttribute()
 
XMLError QueryIntAttribute (const char *name, int *value) const
 
-XMLError QueryUnsignedAttribute (const char *name, unsigned int *value) const
 See QueryIntAttribute()
 
-XMLError QueryInt64Attribute (const char *name, int64_t *value) const
 See QueryIntAttribute()
 
-XMLError QueryUnsigned64Attribute (const char *name, uint64_t *value) const
 See QueryIntAttribute()
 
-XMLError QueryBoolAttribute (const char *name, bool *value) const
 See QueryIntAttribute()
 
-XMLError QueryDoubleAttribute (const char *name, double *value) const
 See QueryIntAttribute()
 
-XMLError QueryFloatAttribute (const char *name, float *value) const
 See QueryIntAttribute()
 
-XMLError QueryStringAttribute (const char *name, const char **value) const
 See QueryIntAttribute()
 
XMLError QueryAttribute (const char *name, int *value) const
 
-void SetAttribute (const char *name, const char *value)
 Sets the named attribute to value.
 
-void SetAttribute (const char *name, int value)
 Sets the named attribute to value.
 
-void SetAttribute (const char *name, unsigned value)
 Sets the named attribute to value.
 
-void SetAttribute (const char *name, int64_t value)
 Sets the named attribute to value.
 
-void SetAttribute (const char *name, uint64_t value)
 Sets the named attribute to value.
 
-void SetAttribute (const char *name, bool value)
 Sets the named attribute to value.
 
-void SetAttribute (const char *name, double value)
 Sets the named attribute to value.
 
-void SetAttribute (const char *name, float value)
 Sets the named attribute to value.
 
void DeleteAttribute (const char *name)
 
-const XMLAttributeFirstAttribute () const
 Return the first attribute in the list.
 
-const XMLAttributeFindAttribute (const char *name) const
 Query a specific attribute in the list.
 
const char * GetText () const
 
void SetText (const char *inText)
 
-void SetText (int value)
 Convenience method for setting text inside an element. See SetText() for important limitations.
 
-void SetText (unsigned value)
 Convenience method for setting text inside an element. See SetText() for important limitations.
 
-void SetText (int64_t value)
 Convenience method for setting text inside an element. See SetText() for important limitations.
 
-void SetText (uint64_t value)
 Convenience method for setting text inside an element. See SetText() for important limitations.
 
-void SetText (bool value)
 Convenience method for setting text inside an element. See SetText() for important limitations.
 
-void SetText (double value)
 Convenience method for setting text inside an element. See SetText() for important limitations.
 
-void SetText (float value)
 Convenience method for setting text inside an element. See SetText() for important limitations.
 
XMLError QueryIntText (int *ival) const
 
-XMLError QueryUnsignedText (unsigned *uval) const
 See QueryIntText()
 
-XMLError QueryInt64Text (int64_t *uval) const
 See QueryIntText()
 
-XMLError QueryUnsigned64Text (uint64_t *uval) const
 See QueryIntText()
 
-XMLError QueryBoolText (bool *bval) const
 See QueryIntText()
 
-XMLError QueryDoubleText (double *dval) const
 See QueryIntText()
 
-XMLError QueryFloatText (float *fval) const
 See QueryIntText()
 
-unsigned UnsignedText (unsigned defaultValue=0) const
 See QueryIntText()
 
-int64_t Int64Text (int64_t defaultValue=0) const
 See QueryIntText()
 
-uint64_t Unsigned64Text (uint64_t defaultValue=0) const
 See QueryIntText()
 
-bool BoolText (bool defaultValue=false) const
 See QueryIntText()
 
-double DoubleText (double defaultValue=0) const
 See QueryIntText()
 
-float FloatText (float defaultValue=0) const
 See QueryIntText()
 
XMLElementInsertNewChildElement (const char *name)
 
-XMLCommentInsertNewComment (const char *comment)
 See InsertNewChildElement()
 
-XMLTextInsertNewText (const char *text)
 See InsertNewChildElement()
 
-XMLDeclarationInsertNewDeclaration (const char *text)
 See InsertNewChildElement()
 
-XMLUnknownInsertNewUnknown (const char *text)
 See InsertNewChildElement()
 
virtual XMLNodeShallowClone (XMLDocument *document) const
 
virtual bool ShallowEqual (const XMLNode *compare) const
 
- Public Member Functions inherited from tinyxml2::XMLNode
-const XMLDocumentGetDocument () const
 Get the XMLDocument that owns this XMLNode.
 
-XMLDocumentGetDocument ()
 Get the XMLDocument that owns this XMLNode.
 
-virtual XMLTextToText ()
 Safely cast to Text, or null.
 
-virtual XMLCommentToComment ()
 Safely cast to a Comment, or null.
 
-virtual XMLDocumentToDocument ()
 Safely cast to a Document, or null.
 
-virtual XMLDeclarationToDeclaration ()
 Safely cast to a Declaration, or null.
 
-virtual XMLUnknownToUnknown ()
 Safely cast to an Unknown, or null.
 
const char * Value () const
 
void SetValue (const char *val, bool staticMem=false)
 
-int GetLineNum () const
 Gets the line number the node is in, if the document was parsed from a file.
 
-const XMLNodeParent () const
 Get the parent of this node on the DOM.
 
-bool NoChildren () const
 Returns true if this node has no children.
 
-const XMLNodeFirstChild () const
 Get the first child node, or null if none exists.
 
const XMLElementFirstChildElement (const char *name=0) const
 
-const XMLNodeLastChild () const
 Get the last child node, or null if none exists.
 
const XMLElementLastChildElement (const char *name=0) const
 
-const XMLNodePreviousSibling () const
 Get the previous (left) sibling node of this node.
 
-const XMLElementPreviousSiblingElement (const char *name=0) const
 Get the previous (left) sibling element of this node, with an optionally supplied name.
 
-const XMLNodeNextSibling () const
 Get the next (right) sibling node of this node.
 
-const XMLElementNextSiblingElement (const char *name=0) const
 Get the next (right) sibling element of this node, with an optionally supplied name.
 
XMLNodeInsertEndChild (XMLNode *addThis)
 
XMLNodeInsertFirstChild (XMLNode *addThis)
 
XMLNodeInsertAfterChild (XMLNode *afterThis, XMLNode *addThis)
 
void DeleteChildren ()
 
void DeleteChild (XMLNode *node)
 
XMLNodeDeepClone (XMLDocument *target) const
 
void SetUserData (void *userData)
 
void * GetUserData () const
 
-

Detailed Description

-

The element is a container class. It has a value, the element name, and can contain other elements, text, comments, and unknowns. Elements also contain an arbitrary number of attributes.

-

Member Function Documentation

- -

◆ Accept()

- -
-
- - - - - -
- - - - - - - - -
virtual bool tinyxml2::XMLElement::Accept (XMLVisitorvisitor) const
-
-virtual
-
-

Accept a hierarchical visit of the nodes in the TinyXML-2 DOM. Every node in the XML tree will be conditionally visited and the host will be called back via the XMLVisitor interface.

-

This is essentially a SAX interface for TinyXML-2. (Note however it doesn't re-parse the XML for the callbacks, so the performance of TinyXML-2 is unchanged by using this interface versus any other.)

-

The interface has been based on ideas from:

- -

Which are both good references for "visiting".

-

An example of using Accept():

XMLPrinter printer;
-tinyxmlDoc.Accept( &printer );
-const char* xmlcstr = printer.CStr();
-
-

Implements tinyxml2::XMLNode.

- -
-
- -

◆ Attribute()

- -
-
- - - - - - - - - - - - - - - - - - -
const char* tinyxml2::XMLElement::Attribute (const char * name,
const char * value = 0 
) const
-
-

Given an attribute name, Attribute() returns the value for the attribute of that name, or null if none exists. For example:

-
const char* value = ele->Attribute( "foo" );
-

The 'value' parameter is normally null. However, if specified, the attribute will only be returned if the 'name' and 'value' match. This allow you to write code:

-
if ( ele->Attribute( "foo", "bar" ) ) callFooIsBar();
-

rather than:

if ( ele->Attribute( "foo" ) ) {
-    if ( strcmp( ele->Attribute( "foo" ), "bar" ) == 0 ) callFooIsBar();
-}
-
-
-
- -

◆ DeleteAttribute()

- -
-
- - - - - - - - -
void tinyxml2::XMLElement::DeleteAttribute (const char * name)
-
-

Delete an attribute.

- -
-
- -

◆ GetText()

- -
-
- - - - - - - -
const char* tinyxml2::XMLElement::GetText () const
-
-

Convenience function for easy access to the text inside an element. Although easy and concise, GetText() is limited compared to getting the XMLText child and accessing it directly.

-

If the first child of 'this' is a XMLText, the GetText() returns the character string of the Text node, else null is returned.

-

This is a convenient method for getting the text of simple contained text:

<foo>This is text</foo>
-    const char* str = fooElement->GetText();
-

'str' will be a pointer to "This is text".

-

Note that this function can be misleading. If the element foo was created from this XML:

    <foo><b>This is text</b></foo>
-

then the value of str would be null. The first child node isn't a text node, it is another element. From this XML:

    <foo>This is <b>text</b></foo>
-

GetText() will return "This is ".

- -
-
- -

◆ InsertNewChildElement()

- -
-
- - - - - - - - -
XMLElement* tinyxml2::XMLElement::InsertNewChildElement (const char * name)
-
-

Convenience method to create a new XMLElement and add it as last (right) child of this node. Returns the created and inserted element.

- -
-
- -

◆ IntAttribute()

- -
-
- - - - - - - - - - - - - - - - - - -
int tinyxml2::XMLElement::IntAttribute (const char * name,
int defaultValue = 0 
) const
-
-

Given an attribute name, IntAttribute() returns the value of the attribute interpreted as an integer. The default value will be returned if the attribute isn't present, or if there is an error. (For a method with error checking, see QueryIntAttribute()).

- -
-
- -

◆ QueryAttribute()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
XMLError tinyxml2::XMLElement::QueryAttribute (const char * name,
int * value 
) const
-
-inline
-
-

Given an attribute name, QueryAttribute() returns XML_SUCCESS, XML_WRONG_ATTRIBUTE_TYPE if the conversion can't be performed, or XML_NO_ATTRIBUTE if the attribute doesn't exist. It is overloaded for the primitive types, and is a generally more convenient replacement of QueryIntAttribute() and related functions.

-

If successful, the result of the conversion will be written to 'value'. If not successful, nothing will be written to 'value'. This allows you to provide default value:

-
int value = 10;
-QueryAttribute( "foo", &value );        // if "foo" isn't found, value will still be 10
-
-
-
- -

◆ QueryIntAttribute()

- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
XMLError tinyxml2::XMLElement::QueryIntAttribute (const char * name,
int * value 
) const
-
-inline
-
-

Given an attribute name, QueryIntAttribute() returns XML_SUCCESS, XML_WRONG_ATTRIBUTE_TYPE if the conversion can't be performed, or XML_NO_ATTRIBUTE if the attribute doesn't exist. If successful, the result of the conversion will be written to 'value'. If not successful, nothing will be written to 'value'. This allows you to provide default value:

-
int value = 10;
-QueryIntAttribute( "foo", &value );     // if "foo" isn't found, value will still be 10
-
-
-
- -

◆ QueryIntText()

- -
-
- - - - - - - - -
XMLError tinyxml2::XMLElement::QueryIntText (int * ival) const
-
-

Convenience method to query the value of a child text node. This is probably best shown by example. Given you have a document is this form:

    <point>
-        <x>1</x>
-        <y>1.4</y>
-    </point>
-

The QueryIntText() and similar functions provide a safe and easier way to get to the "value" of x and y.

-
    int x = 0;
-    float y = 0;    // types of x and y are contrived for example
-    const XMLElement* xElement = pointElement->FirstChildElement( "x" );
-    const XMLElement* yElement = pointElement->FirstChildElement( "y" );
-    xElement->QueryIntText( &x );
-    yElement->QueryFloatText( &y );
-
Returns
XML_SUCCESS (0) on success, XML_CAN_NOT_CONVERT_TEXT if the text cannot be converted to the requested type, and XML_NO_TEXT_NODE if there is no child text to query.
- -
-
- -

◆ SetText()

- -
-
- - - - - - - - -
void tinyxml2::XMLElement::SetText (const char * inText)
-
-

Convenience function for easy access to the text inside an element. Although easy and concise, SetText() is limited compared to creating an XMLText child and mutating it directly.

-

If the first child of 'this' is a XMLText, SetText() sets its value to the given string, otherwise it will create a first child that is an XMLText.

-

This is a convenient method for setting the text of simple contained text:

<foo>This is text</foo>
-    fooElement->SetText( "Hullaballoo!" );
-<foo>Hullaballoo!</foo>
-

Note that this function can be misleading. If the element foo was created from this XML:

    <foo><b>This is text</b></foo>
-

then it will not change "This is text", but rather prefix it with a text element:

    <foo>Hullaballoo!<b>This is text</b></foo>
-

For this XML:

    <foo />
-

SetText() will generate

    <foo>Hullaballoo!</foo>
-
-
-
- -

◆ ShallowClone()

- -
-
- - - - - -
- - - - - - - - -
virtual XMLNode* tinyxml2::XMLElement::ShallowClone (XMLDocumentdocument) const
-
-virtual
-
-

Make a copy of this node, but not its children. You may pass in a Document pointer that will be the owner of the new Node. If the 'document' is null, then the node returned will be allocated from the current Document. (this->GetDocument())

-

Note: if called on a XMLDocument, this will return null.

- -

Implements tinyxml2::XMLNode.

- -
-
- -

◆ ShallowEqual()

- -
-
- - - - - -
- - - - - - - - -
virtual bool tinyxml2::XMLElement::ShallowEqual (const XMLNodecompare) const
-
-virtual
-
-

Test if 2 nodes are the same, but don't test children. The 2 nodes do not need to be in the same Document.

-

Note: if called on a XMLDocument, this will return false.

- -

Implements tinyxml2::XMLNode.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_element.png b/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_element.png deleted file mode 100644 index b76dc5b5465b9f7c5586846f92b117a0035c0983..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 618 zcmV-w0+s!VP)%jey0000OP)t-s|Ns90 z008Lh^>vTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d0005`NklyGOn41~vn)c1en)0CU-dP8znN}`o3Pk{jThk@iTN-5=jp^)U=N{qxH$w(eU zK1Py1YU>x7qiRh}oYm3grjw*mfI*UbYEdjlWvfkv@hQ(^Y^(fu`8cR*u3Cp%=>kLb zRX6R4O6Ja{G*8XPc-9$J?7^sl1{liIS2A}nZ0>t%W@nh_2qScO9;2s{6lGr&9j!B{ zjnkXii|t2p+AfAks*u|J)j5Shl12wG=Dx2nT%eK5(`Un82vresTFt6vGVp4^|J@Xl z+77%%Nb=X($GD1OALBBL{KAr)mKe{(D5aF!1pvR*3jprdGcaDSM{qm?<4y4dj)!36 zO#z@RF%km+A|*y*06?U~NDKgolo*Kt0Fe?SF#sS^V*F7I5s~`^0f4)e7>NM@kp{-Q zSOIPQ+o9HNGjUei@n5fTM4uP{u&3tMa#Xe!Te&^x)nT-&`~DlgYtL5L_-8R{0*9B` z-X8R+c2kh0Ff zc0Z{*Z_$h2tv_H~{f3V*F8|Kt7d9~fAkuR%L_}`aKX!Q>!ZILyHvj+t07*qoM6N<$ Ef;>?j^Z)<= diff --git a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_node-members.html b/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_node-members.html deleted file mode 100644 index 6359fb289..000000000 --- a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_node-members.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - -TinyXML-2: Member List - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
tinyxml2::XMLNode Member List
-
-
- -

This is the complete list of members for tinyxml2::XMLNode, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Accept(XMLVisitor *visitor) const =0tinyxml2::XMLNodepure virtual
DeepClone(XMLDocument *target) consttinyxml2::XMLNode
DeleteChild(XMLNode *node)tinyxml2::XMLNode
DeleteChildren()tinyxml2::XMLNode
FirstChild() consttinyxml2::XMLNodeinline
FirstChildElement(const char *name=0) consttinyxml2::XMLNode
GetDocument() consttinyxml2::XMLNodeinline
GetDocument()tinyxml2::XMLNodeinline
GetLineNum() consttinyxml2::XMLNodeinline
GetUserData() consttinyxml2::XMLNodeinline
InsertAfterChild(XMLNode *afterThis, XMLNode *addThis)tinyxml2::XMLNode
InsertEndChild(XMLNode *addThis)tinyxml2::XMLNode
InsertFirstChild(XMLNode *addThis)tinyxml2::XMLNode
LastChild() consttinyxml2::XMLNodeinline
LastChildElement(const char *name=0) consttinyxml2::XMLNode
NextSibling() consttinyxml2::XMLNodeinline
NextSiblingElement(const char *name=0) consttinyxml2::XMLNode
NoChildren() consttinyxml2::XMLNodeinline
Parent() consttinyxml2::XMLNodeinline
PreviousSibling() consttinyxml2::XMLNodeinline
PreviousSiblingElement(const char *name=0) consttinyxml2::XMLNode
SetUserData(void *userData)tinyxml2::XMLNodeinline
SetValue(const char *val, bool staticMem=false)tinyxml2::XMLNode
ShallowClone(XMLDocument *document) const =0tinyxml2::XMLNodepure virtual
ShallowEqual(const XMLNode *compare) const =0tinyxml2::XMLNodepure virtual
ToComment()tinyxml2::XMLNodeinlinevirtual
ToDeclaration()tinyxml2::XMLNodeinlinevirtual
ToDocument()tinyxml2::XMLNodeinlinevirtual
ToElement()tinyxml2::XMLNodeinlinevirtual
ToText()tinyxml2::XMLNodeinlinevirtual
ToUnknown()tinyxml2::XMLNodeinlinevirtual
Value() consttinyxml2::XMLNode
- - - - diff --git a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_node.html b/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_node.html deleted file mode 100644 index a6f21a6fd..000000000 --- a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_node.html +++ /dev/null @@ -1,582 +0,0 @@ - - - - - - - -TinyXML-2: tinyxml2::XMLNode Class Reference - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
tinyxml2::XMLNode Class Referenceabstract
-
-
- -

#include <tinyxml2.h>

-
-Inheritance diagram for tinyxml2::XMLNode:
-
-
- - -tinyxml2::XMLComment -tinyxml2::XMLDeclaration -tinyxml2::XMLDocument -tinyxml2::XMLElement -tinyxml2::XMLText -tinyxml2::XMLUnknown - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

-const XMLDocumentGetDocument () const
 Get the XMLDocument that owns this XMLNode.
 
-XMLDocumentGetDocument ()
 Get the XMLDocument that owns this XMLNode.
 
-virtual XMLElementToElement ()
 Safely cast to an Element, or null.
 
-virtual XMLTextToText ()
 Safely cast to Text, or null.
 
-virtual XMLCommentToComment ()
 Safely cast to a Comment, or null.
 
-virtual XMLDocumentToDocument ()
 Safely cast to a Document, or null.
 
-virtual XMLDeclarationToDeclaration ()
 Safely cast to a Declaration, or null.
 
-virtual XMLUnknownToUnknown ()
 Safely cast to an Unknown, or null.
 
const char * Value () const
 
void SetValue (const char *val, bool staticMem=false)
 
-int GetLineNum () const
 Gets the line number the node is in, if the document was parsed from a file.
 
-const XMLNodeParent () const
 Get the parent of this node on the DOM.
 
-bool NoChildren () const
 Returns true if this node has no children.
 
-const XMLNodeFirstChild () const
 Get the first child node, or null if none exists.
 
const XMLElementFirstChildElement (const char *name=0) const
 
-const XMLNodeLastChild () const
 Get the last child node, or null if none exists.
 
const XMLElementLastChildElement (const char *name=0) const
 
-const XMLNodePreviousSibling () const
 Get the previous (left) sibling node of this node.
 
-const XMLElementPreviousSiblingElement (const char *name=0) const
 Get the previous (left) sibling element of this node, with an optionally supplied name.
 
-const XMLNodeNextSibling () const
 Get the next (right) sibling node of this node.
 
-const XMLElementNextSiblingElement (const char *name=0) const
 Get the next (right) sibling element of this node, with an optionally supplied name.
 
XMLNodeInsertEndChild (XMLNode *addThis)
 
XMLNodeInsertFirstChild (XMLNode *addThis)
 
XMLNodeInsertAfterChild (XMLNode *afterThis, XMLNode *addThis)
 
void DeleteChildren ()
 
void DeleteChild (XMLNode *node)
 
virtual XMLNodeShallowClone (XMLDocument *document) const =0
 
XMLNodeDeepClone (XMLDocument *target) const
 
virtual bool ShallowEqual (const XMLNode *compare) const =0
 
virtual bool Accept (XMLVisitor *visitor) const =0
 
void SetUserData (void *userData)
 
void * GetUserData () const
 
-

Detailed Description

-

XMLNode is a base class for every object that is in the XML Document Object Model (DOM), except XMLAttributes. Nodes have siblings, a parent, and children which can be navigated. A node is always in a XMLDocument. The type of a XMLNode can be queried, and it can be cast to its more defined type.

-

A XMLDocument allocates memory for all its Nodes. When the XMLDocument gets deleted, all its Nodes will also be deleted.

-
A Document can contain: Element (container or leaf)
-                        Comment (leaf)
-                        Unknown (leaf)
-                        Declaration( leaf )
-
-An Element can contain: Element (container or leaf)
-                        Text    (leaf)
-                        Attributes (not on tree)
-                        Comment (leaf)
-                        Unknown (leaf)

Member Function Documentation

- -

◆ Accept()

- -
-
- - - - - -
- - - - - - - - -
virtual bool tinyxml2::XMLNode::Accept (XMLVisitorvisitor) const
-
-pure virtual
-
-

Accept a hierarchical visit of the nodes in the TinyXML-2 DOM. Every node in the XML tree will be conditionally visited and the host will be called back via the XMLVisitor interface.

-

This is essentially a SAX interface for TinyXML-2. (Note however it doesn't re-parse the XML for the callbacks, so the performance of TinyXML-2 is unchanged by using this interface versus any other.)

-

The interface has been based on ideas from:

- -

Which are both good references for "visiting".

-

An example of using Accept():

XMLPrinter printer;
-tinyxmlDoc.Accept( &printer );
-const char* xmlcstr = printer.CStr();
-
-

Implemented in tinyxml2::XMLDocument, tinyxml2::XMLElement, tinyxml2::XMLUnknown, tinyxml2::XMLDeclaration, tinyxml2::XMLComment, and tinyxml2::XMLText.

- -
-
- -

◆ DeepClone()

- -
-
- - - - - - - - -
XMLNode* tinyxml2::XMLNode::DeepClone (XMLDocumenttarget) const
-
-

Make a copy of this node and all its children.

-

If the 'target' is null, then the nodes will be allocated in the current document. If 'target' is specified, the memory will be allocated is the specified XMLDocument.

-

NOTE: This is probably not the correct tool to copy a document, since XMLDocuments can have multiple top level XMLNodes. You probably want to use XMLDocument::DeepCopy()

- -
-
- -

◆ DeleteChild()

- -
-
- - - - - - - - -
void tinyxml2::XMLNode::DeleteChild (XMLNodenode)
-
-

Delete a child of this node.

- -
-
- -

◆ DeleteChildren()

- -
-
- - - - - - - -
void tinyxml2::XMLNode::DeleteChildren ()
-
-

Delete all the children of this node.

- -
-
- -

◆ FirstChildElement()

- -
-
- - - - - - - - -
const XMLElement* tinyxml2::XMLNode::FirstChildElement (const char * name = 0) const
-
-

Get the first child element, or optionally the first child element with the specified name.

- -
-
- -

◆ GetUserData()

- -
-
- - - - - -
- - - - - - - -
void* tinyxml2::XMLNode::GetUserData () const
-
-inline
-
-

Get user data set into the XMLNode. TinyXML-2 in no way processes or interprets user data. It is initially 0.

- -
-
- -

◆ InsertAfterChild()

- -
-
- - - - - - - - - - - - - - - - - - -
XMLNode* tinyxml2::XMLNode::InsertAfterChild (XMLNodeafterThis,
XMLNodeaddThis 
)
-
-

Add a node after the specified child node. If the child node is already part of the document, it is moved from its old location to the new location. Returns the addThis argument or 0 if the afterThis node is not a child of this node, or if the node does not belong to the same document.

- -
-
- -

◆ InsertEndChild()

- -
-
- - - - - - - - -
XMLNode* tinyxml2::XMLNode::InsertEndChild (XMLNodeaddThis)
-
-

Add a child node as the last (right) child. If the child node is already part of the document, it is moved from its old location to the new location. Returns the addThis argument or 0 if the node does not belong to the same document.

- -
-
- -

◆ InsertFirstChild()

- -
-
- - - - - - - - -
XMLNode* tinyxml2::XMLNode::InsertFirstChild (XMLNodeaddThis)
-
-

Add a child node as the first (left) child. If the child node is already part of the document, it is moved from its old location to the new location. Returns the addThis argument or 0 if the node does not belong to the same document.

- -
-
- -

◆ LastChildElement()

- -
-
- - - - - - - - -
const XMLElement* tinyxml2::XMLNode::LastChildElement (const char * name = 0) const
-
-

Get the last child element or optionally the last child element with the specified name.

- -
-
- -

◆ SetUserData()

- -
-
- - - - - -
- - - - - - - - -
void tinyxml2::XMLNode::SetUserData (void * userData)
-
-inline
-
-

Set user data into the XMLNode. TinyXML-2 in no way processes or interprets user data. It is initially 0.

- -
-
- -

◆ SetValue()

- -
-
- - - - - - - - - - - - - - - - - - -
void tinyxml2::XMLNode::SetValue (const char * val,
bool staticMem = false 
)
-
-

Set the Value of an XML node.

See also
Value()
- -
-
- -

◆ ShallowClone()

- -
-
- - - - - -
- - - - - - - - -
virtual XMLNode* tinyxml2::XMLNode::ShallowClone (XMLDocumentdocument) const
-
-pure virtual
-
-

Make a copy of this node, but not its children. You may pass in a Document pointer that will be the owner of the new Node. If the 'document' is null, then the node returned will be allocated from the current Document. (this->GetDocument())

-

Note: if called on a XMLDocument, this will return null.

- -

Implemented in tinyxml2::XMLElement, tinyxml2::XMLUnknown, tinyxml2::XMLDeclaration, tinyxml2::XMLComment, tinyxml2::XMLText, and tinyxml2::XMLDocument.

- -
-
- -

◆ ShallowEqual()

- -
-
- - - - - -
- - - - - - - - -
virtual bool tinyxml2::XMLNode::ShallowEqual (const XMLNodecompare) const
-
-pure virtual
-
-

Test if 2 nodes are the same, but don't test children. The 2 nodes do not need to be in the same Document.

-

Note: if called on a XMLDocument, this will return false.

- -

Implemented in tinyxml2::XMLElement, tinyxml2::XMLUnknown, tinyxml2::XMLDeclaration, tinyxml2::XMLComment, tinyxml2::XMLText, and tinyxml2::XMLDocument.

- -
-
- -

◆ Value()

- -
-
- - - - - - - -
const char* tinyxml2::XMLNode::Value () const
-
-

The meaning of 'value' changes for the specific type.

Document:   empty (NULL is returned, not an empty string)
-Element:    name of the element
-Comment:    the comment text
-Unknown:    the tag contents
-Text:       the text string
-
-
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_node.png b/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_node.png deleted file mode 100644 index cb1e7ce191b61a5d9696a6ad4e8d0851896e182b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1845 zcmb_dc~BE)6b~R^X=ADt)SzVOghQfGsmdj{N0!?VP)3fHN~1sv0YXigERx8TmcCc{a*H>-?o#j7Y^U;&C06I&#^jV%lw#RoLd`IG zV^?1SJDS@{b&|^$!kJ)vHUn*7SyrrH;X-_Ui7K#G7B^Nqx;h!x^{L@E!xlsNwD8kA zFnU#s%BF*<s~2<2lKq1GjGtk(cDdtdNpFB1GG>r)O;0Em*3z)ma8az#Kq%$*}!ymwgx}#18DFJHWz1EP!7!4T`Z4 z59V1NLt6l1!mQ9Yqc9*YPzIbj94dP)Fnj7NEJd{~^l4s9WzD;2L>IUsUfnD6dvSbj z>?yv$4dd}!z%%iu?=i!m?3aUb|b*2gg5?XzsZgQsGnQsoG@GNZ15p+Z4tNkz}cdB;` z86P3ThK!EmguXIv<{N=rL0;UgXMg0!)505OE~NoHm+LkxlT`8P(&8N-sPdC|^YcYf z{8_R5z`(*VeR#}jEwZ=jVd(5z04FS}S@srNQ^tSdF`O$y$rHgHB%jgSqRGyDrF|E5 z7+0W9c{V=&Y*KPSwXe5+DYvlSsk8XZ!U09B!!XNB>@2=r&1riPYm*hy9##vAw$+oZ z6-1fEU6tpoNiDc%zWdrpWFGSkI;McXbg+B5Wcu-Bdl4%Ss7m&f{rq5`fA)DJBT+Qd zahLT#f2F&uZqoWVJM6}pg@lO|f~)HUy=yS%VJw}03RH-2PAO>|Od&r|QV9mKd>JuA zO#b*a8`L9t1L@%|<4PBB8E2d_`~BYbk$W+8b-jN2hm_o;&iAWd7Tx$t=$&Cj;g-n> z(p#M;DrR^i+4f6?v`lbtuDkC?F1V*^)`8$3l#cHn=qD%A6el@7>?UvVUU9=VXRO0# znP6IG-6@$ov40<>$uMH*p$K#>pe0J8R)1O?#Pa&gDeUvNY*YyrCJNTIuuih&2w2iYHn{($h9S^Iu^rzE0x3K(YKz~N) z+pQd@yQ+aPC(UIsC_ht_=~zfr-WK+f z-3{`o3QbPg3(KXkgdmybWY6eOgbbqD>{)%)d65^X{DQOm*fD&}rpu1Rc>UcV!J@dS z!4n6RJ`)F}pXZ-w9I44XtezXVgZd^lOwvcUF(N66K8!+goVK)evMMN@+M65^zEgRE zu$C-&Oy?Sr%m%aVMp^HqzFU1J_;;myNg6c@WaC%m)Ikqn=&i-T13)?xvqucfm8?q* z)?7XaJh%i)ZC!H=M*#X7KvG-R9CWnx{#m8185~I9QfB|A>!bEU3&VunPwwk)*fm5p Xzr(?>R=o-O$02}Yen;y(KKc3&bpL#% diff --git a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_printer-members.html b/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_printer-members.html deleted file mode 100644 index 81c731923..000000000 --- a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_printer-members.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - -TinyXML-2: Member List - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
tinyxml2::XMLPrinter Member List
-
-
- -

This is the complete list of members for tinyxml2::XMLPrinter, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
ClearBuffer(bool resetToFirstElement=true)tinyxml2::XMLPrinterinline
CloseElement(bool compactMode=false)tinyxml2::XMLPrintervirtual
CStr() consttinyxml2::XMLPrinterinline
CStrSize() consttinyxml2::XMLPrinterinline
OpenElement(const char *name, bool compactMode=false)tinyxml2::XMLPrinter
PrintSpace(int depth)tinyxml2::XMLPrinterprotectedvirtual
PushAttribute(const char *name, const char *value)tinyxml2::XMLPrinter
PushComment(const char *comment)tinyxml2::XMLPrinter
PushHeader(bool writeBOM, bool writeDeclaration)tinyxml2::XMLPrinter
PushText(const char *text, bool cdata=false)tinyxml2::XMLPrinter
PushText(int value)tinyxml2::XMLPrinter
PushText(unsigned value)tinyxml2::XMLPrinter
PushText(int64_t value)tinyxml2::XMLPrinter
PushText(uint64_t value)tinyxml2::XMLPrinter
PushText(bool value)tinyxml2::XMLPrinter
PushText(float value)tinyxml2::XMLPrinter
PushText(double value)tinyxml2::XMLPrinter
Visit(const XMLText &text)tinyxml2::XMLPrintervirtual
Visit(const XMLComment &comment)tinyxml2::XMLPrintervirtual
Visit(const XMLDeclaration &declaration)tinyxml2::XMLPrintervirtual
Visit(const XMLUnknown &unknown)tinyxml2::XMLPrintervirtual
VisitEnter(const XMLDocument &)tinyxml2::XMLPrintervirtual
VisitEnter(const XMLElement &element, const XMLAttribute *attribute)tinyxml2::XMLPrintervirtual
VisitExit(const XMLDocument &)tinyxml2::XMLPrinterinlinevirtual
VisitExit(const XMLElement &element)tinyxml2::XMLPrintervirtual
XMLPrinter(FILE *file=0, bool compact=false, int depth=0)tinyxml2::XMLPrinter
- - - - diff --git a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_printer.html b/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_printer.html deleted file mode 100644 index d04441937..000000000 --- a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_printer.html +++ /dev/null @@ -1,416 +0,0 @@ - - - - - - - -TinyXML-2: tinyxml2::XMLPrinter Class Reference - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
tinyxml2::XMLPrinter Class Reference
-
-
- -

#include <tinyxml2.h>

-
-Inheritance diagram for tinyxml2::XMLPrinter:
-
-
- - -tinyxml2::XMLVisitor - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

 XMLPrinter (FILE *file=0, bool compact=false, int depth=0)
 
void PushHeader (bool writeBOM, bool writeDeclaration)
 
void OpenElement (const char *name, bool compactMode=false)
 
-void PushAttribute (const char *name, const char *value)
 If streaming, add an attribute to an open element.
 
-virtual void CloseElement (bool compactMode=false)
 If streaming, close the Element.
 
-void PushText (const char *text, bool cdata=false)
 Add a text node.
 
-void PushText (int value)
 Add a text node from an integer.
 
-void PushText (unsigned value)
 Add a text node from an unsigned.
 
-void PushText (int64_t value)
 Add a text node from a signed 64bit integer.
 
-void PushText (uint64_t value)
 Add a text node from an unsigned 64bit integer.
 
-void PushText (bool value)
 Add a text node from a bool.
 
-void PushText (float value)
 Add a text node from a float.
 
-void PushText (double value)
 Add a text node from a double.
 
-void PushComment (const char *comment)
 Add a comment.
 
-virtual bool VisitEnter (const XMLDocument &)
 Visit a document.
 
-virtual bool VisitExit (const XMLDocument &)
 Visit a document.
 
-virtual bool VisitEnter (const XMLElement &element, const XMLAttribute *attribute)
 Visit an element.
 
-virtual bool VisitExit (const XMLElement &element)
 Visit an element.
 
-virtual bool Visit (const XMLText &text)
 Visit a text node.
 
-virtual bool Visit (const XMLComment &comment)
 Visit a comment node.
 
-virtual bool Visit (const XMLDeclaration &declaration)
 Visit a declaration.
 
-virtual bool Visit (const XMLUnknown &unknown)
 Visit an unknown node.
 
const char * CStr () const
 
int CStrSize () const
 
void ClearBuffer (bool resetToFirstElement=true)
 
- - - -

-Protected Member Functions

virtual void PrintSpace (int depth)
 
-

Detailed Description

-

Printing functionality. The XMLPrinter gives you more options than the XMLDocument::Print() method.

-

It can:

    -
  1. Print to memory.
  2. -
  3. Print to a file you provide.
  4. -
  5. Print XML without a XMLDocument.
  6. -
-

Print to Memory

-
XMLPrinter printer;
-doc.Print( &printer );
-SomeFunction( printer.CStr() );
-

Print to a File

-

You provide the file pointer.

XMLPrinter printer( fp );
-doc.Print( &printer );
-

Print without a XMLDocument

-

When loading, an XML parser is very useful. However, sometimes when saving, it just gets in the way. The code is often set up for streaming, and constructing the DOM is just overhead.

-

The Printer supports the streaming case. The following code prints out a trivially simple XML file without ever creating an XML document.

-
XMLPrinter printer( fp );
-printer.OpenElement( "foo" );
-printer.PushAttribute( "foo", "bar" );
-printer.CloseElement();
-

Constructor & Destructor Documentation

- -

◆ XMLPrinter()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
tinyxml2::XMLPrinter::XMLPrinter (FILE * file = 0,
bool compact = false,
int depth = 0 
)
-
-

Construct the printer. If the FILE* is specified, this will print to the FILE. Else it will print to memory, and the result is available in CStr(). If 'compact' is set to true, then output is created with only required whitespace and newlines.

- -
-
-

Member Function Documentation

- -

◆ ClearBuffer()

- -
-
- - - - - -
- - - - - - - - -
void tinyxml2::XMLPrinter::ClearBuffer (bool resetToFirstElement = true)
-
-inline
-
-

If in print to memory mode, reset the buffer to the beginning.

- -
-
- -

◆ CStr()

- -
-
- - - - - -
- - - - - - - -
const char* tinyxml2::XMLPrinter::CStr () const
-
-inline
-
-

If in print to memory mode, return a pointer to the XML file in memory.

- -
-
- -

◆ CStrSize()

- -
-
- - - - - -
- - - - - - - -
int tinyxml2::XMLPrinter::CStrSize () const
-
-inline
-
-

If in print to memory mode, return the size of the XML file in memory. (Note the size returned includes the terminating null.)

- -
-
- -

◆ OpenElement()

- -
-
- - - - - - - - - - - - - - - - - - -
void tinyxml2::XMLPrinter::OpenElement (const char * name,
bool compactMode = false 
)
-
-

If streaming, start writing an element. The element must be closed with CloseElement()

- -
-
- -

◆ PrintSpace()

- -
-
- - - - - -
- - - - - - - - -
virtual void tinyxml2::XMLPrinter::PrintSpace (int depth)
-
-protectedvirtual
-
-

Prints out the space before an element. You may override to change the space and tabs used. A PrintSpace() override should call Print().

- -
-
- -

◆ PushHeader()

- -
-
- - - - - - - - - - - - - - - - - - -
void tinyxml2::XMLPrinter::PushHeader (bool writeBOM,
bool writeDeclaration 
)
-
-

If streaming, write the BOM and declaration.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_printer.png b/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_printer.png deleted file mode 100644 index 9bc674855364f4b2b9731ddf08f0b2af7159034e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 586 zcmeAS@N?(olHy`uVBq!ia0vp^4L}^g!3-py-Rr#uq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IXgZ+f~ohEy=VotxcvSb?YIt>de|{d-hx z{&2K}Om*5?)G8fy_{U+1Pt$|EGM5K3HPnhRFe)(Am@v$U`euB3#id~3rPW1ezwk0J z#6(`*z|y+vj|{^PRtAH$%ulAue&*kpbiC!yhKcVPI#%!8T=Z@F#?U`|SVI^4z5Q=$ zrMkBClyk2k1J8?P6WJNeF6+uZDyhuz;bvH`uT|V2^p@qpWAhbav7)ihw`y%?_%-Xm zhqLnCrVIyG)iNmj-p#h*r(Am+!;PeHS+*rl`o}Xpdb7U zXUo3fVRf*b z@P7TeTOq3scim@wahX5;e^BFFv5?+Xcm8LWXsrs< - - - - - - -TinyXML-2: Member List - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
tinyxml2::XMLText Member List
-
-
- -

This is the complete list of members for tinyxml2::XMLText, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Accept(XMLVisitor *visitor) consttinyxml2::XMLTextvirtual
CData() consttinyxml2::XMLTextinline
DeepClone(XMLDocument *target) consttinyxml2::XMLNode
DeleteChild(XMLNode *node)tinyxml2::XMLNode
DeleteChildren()tinyxml2::XMLNode
FirstChild() consttinyxml2::XMLNodeinline
FirstChildElement(const char *name=0) consttinyxml2::XMLNode
GetDocument() consttinyxml2::XMLNodeinline
GetDocument()tinyxml2::XMLNodeinline
GetLineNum() consttinyxml2::XMLNodeinline
GetUserData() consttinyxml2::XMLNodeinline
InsertAfterChild(XMLNode *afterThis, XMLNode *addThis)tinyxml2::XMLNode
InsertEndChild(XMLNode *addThis)tinyxml2::XMLNode
InsertFirstChild(XMLNode *addThis)tinyxml2::XMLNode
LastChild() consttinyxml2::XMLNodeinline
LastChildElement(const char *name=0) consttinyxml2::XMLNode
NextSibling() consttinyxml2::XMLNodeinline
NextSiblingElement(const char *name=0) consttinyxml2::XMLNode
NoChildren() consttinyxml2::XMLNodeinline
Parent() consttinyxml2::XMLNodeinline
PreviousSibling() consttinyxml2::XMLNodeinline
PreviousSiblingElement(const char *name=0) consttinyxml2::XMLNode
SetCData(bool isCData)tinyxml2::XMLTextinline
SetUserData(void *userData)tinyxml2::XMLNodeinline
SetValue(const char *val, bool staticMem=false)tinyxml2::XMLNode
ShallowClone(XMLDocument *document) consttinyxml2::XMLTextvirtual
ShallowEqual(const XMLNode *compare) consttinyxml2::XMLTextvirtual
ToComment()tinyxml2::XMLNodeinlinevirtual
ToDeclaration()tinyxml2::XMLNodeinlinevirtual
ToDocument()tinyxml2::XMLNodeinlinevirtual
ToElement()tinyxml2::XMLNodeinlinevirtual
ToText()tinyxml2::XMLTextinlinevirtual
ToUnknown()tinyxml2::XMLNodeinlinevirtual
Value() consttinyxml2::XMLNode
- - - - diff --git a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_text.html b/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_text.html deleted file mode 100644 index 7317358c5..000000000 --- a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_text.html +++ /dev/null @@ -1,311 +0,0 @@ - - - - - - - -TinyXML-2: tinyxml2::XMLText Class Reference - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
tinyxml2::XMLText Class Reference
-
-
- -

#include <tinyxml2.h>

-
-Inheritance diagram for tinyxml2::XMLText:
-
-
- - -tinyxml2::XMLNode - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

virtual bool Accept (XMLVisitor *visitor) const
 
-virtual XMLTextToText ()
 Safely cast to Text, or null.
 
-void SetCData (bool isCData)
 Declare whether this should be CDATA or standard text.
 
-bool CData () const
 Returns true if this is a CDATA text element.
 
virtual XMLNodeShallowClone (XMLDocument *document) const
 
virtual bool ShallowEqual (const XMLNode *compare) const
 
- Public Member Functions inherited from tinyxml2::XMLNode
-const XMLDocumentGetDocument () const
 Get the XMLDocument that owns this XMLNode.
 
-XMLDocumentGetDocument ()
 Get the XMLDocument that owns this XMLNode.
 
-virtual XMLElementToElement ()
 Safely cast to an Element, or null.
 
-virtual XMLCommentToComment ()
 Safely cast to a Comment, or null.
 
-virtual XMLDocumentToDocument ()
 Safely cast to a Document, or null.
 
-virtual XMLDeclarationToDeclaration ()
 Safely cast to a Declaration, or null.
 
-virtual XMLUnknownToUnknown ()
 Safely cast to an Unknown, or null.
 
const char * Value () const
 
void SetValue (const char *val, bool staticMem=false)
 
-int GetLineNum () const
 Gets the line number the node is in, if the document was parsed from a file.
 
-const XMLNodeParent () const
 Get the parent of this node on the DOM.
 
-bool NoChildren () const
 Returns true if this node has no children.
 
-const XMLNodeFirstChild () const
 Get the first child node, or null if none exists.
 
const XMLElementFirstChildElement (const char *name=0) const
 
-const XMLNodeLastChild () const
 Get the last child node, or null if none exists.
 
const XMLElementLastChildElement (const char *name=0) const
 
-const XMLNodePreviousSibling () const
 Get the previous (left) sibling node of this node.
 
-const XMLElementPreviousSiblingElement (const char *name=0) const
 Get the previous (left) sibling element of this node, with an optionally supplied name.
 
-const XMLNodeNextSibling () const
 Get the next (right) sibling node of this node.
 
-const XMLElementNextSiblingElement (const char *name=0) const
 Get the next (right) sibling element of this node, with an optionally supplied name.
 
XMLNodeInsertEndChild (XMLNode *addThis)
 
XMLNodeInsertFirstChild (XMLNode *addThis)
 
XMLNodeInsertAfterChild (XMLNode *afterThis, XMLNode *addThis)
 
void DeleteChildren ()
 
void DeleteChild (XMLNode *node)
 
XMLNodeDeepClone (XMLDocument *target) const
 
void SetUserData (void *userData)
 
void * GetUserData () const
 
-

Detailed Description

-

XML text.

-

Note that a text node can have child element nodes, for example:

<root>This is <b>bold</b></root>
-

A text node can have 2 ways to output the next. "normal" output and CDATA. It will default to the mode it was parsed from the XML file and you generally want to leave it alone, but you can change the output mode with SetCData() and query it with CData().

-

Member Function Documentation

- -

◆ Accept()

- -
-
- - - - - -
- - - - - - - - -
virtual bool tinyxml2::XMLText::Accept (XMLVisitorvisitor) const
-
-virtual
-
-

Accept a hierarchical visit of the nodes in the TinyXML-2 DOM. Every node in the XML tree will be conditionally visited and the host will be called back via the XMLVisitor interface.

-

This is essentially a SAX interface for TinyXML-2. (Note however it doesn't re-parse the XML for the callbacks, so the performance of TinyXML-2 is unchanged by using this interface versus any other.)

-

The interface has been based on ideas from:

- -

Which are both good references for "visiting".

-

An example of using Accept():

XMLPrinter printer;
-tinyxmlDoc.Accept( &printer );
-const char* xmlcstr = printer.CStr();
-
-

Implements tinyxml2::XMLNode.

- -
-
- -

◆ ShallowClone()

- -
-
- - - - - -
- - - - - - - - -
virtual XMLNode* tinyxml2::XMLText::ShallowClone (XMLDocumentdocument) const
-
-virtual
-
-

Make a copy of this node, but not its children. You may pass in a Document pointer that will be the owner of the new Node. If the 'document' is null, then the node returned will be allocated from the current Document. (this->GetDocument())

-

Note: if called on a XMLDocument, this will return null.

- -

Implements tinyxml2::XMLNode.

- -
-
- -

◆ ShallowEqual()

- -
-
- - - - - -
- - - - - - - - -
virtual bool tinyxml2::XMLText::ShallowEqual (const XMLNodecompare) const
-
-virtual
-
-

Test if 2 nodes are the same, but don't test children. The 2 nodes do not need to be in the same Document.

-

Note: if called on a XMLDocument, this will return false.

- -

Implements tinyxml2::XMLNode.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_text.png b/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_text.png deleted file mode 100644 index 5a9863acc475a4164a359cdca7f2ba64ba74433f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 591 zcmeAS@N?(olHy`uVBq!ia0vp^6+j%o!3-pyx;pL#QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;un$8s_wr3PH5_!%PyN|NpG0hop@<-(1vAKPMTLvO}Er` z){c}s!+68x)64A%@fY{}v8s&Nr~D!DfLwvzgjEv1A3RGjx|-8|cTvsFf9npc3t5!4 zHuv-T1Iy=6X1@M+H@o>l@4Z&vZkVr^?8w?0p*_3R`}&>>x38|sTKjl&Sm@u~eh2!C z{STZkzJ7kus#g+!RV-Qr)HoiTuVOrNLFdD3(@q=iKhMr7`ZNDe2-i0_Afan;Kma>- z*zV$z#=$7Do|R2v(SN2ta(7cVp3Rrdd_Ol?^4UGsRWon1@f0i-x&He|j?g)ux?|RC z%ky9VUGLI8`Swxa{fzHV_Z8Nxy%n_ld(e?jI_aqys;i3(-=}QoFW!1wEi1C?`xn(S zJ7b!&C9MyvwA0=3^x2P@w;F;QcOOjU#YMK&OXfDq+j;pP^p}75I$bcKqfSUi$;k0PgPVlp+Lc99 R9f7gW;OXk;vd$@?2>?U}6ovo* diff --git a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_unknown-members.html b/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_unknown-members.html deleted file mode 100644 index 31f01b973..000000000 --- a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_unknown-members.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - -TinyXML-2: Member List - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
tinyxml2::XMLUnknown Member List
-
-
- -

This is the complete list of members for tinyxml2::XMLUnknown, including all inherited members.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Accept(XMLVisitor *visitor) consttinyxml2::XMLUnknownvirtual
DeepClone(XMLDocument *target) consttinyxml2::XMLNode
DeleteChild(XMLNode *node)tinyxml2::XMLNode
DeleteChildren()tinyxml2::XMLNode
FirstChild() consttinyxml2::XMLNodeinline
FirstChildElement(const char *name=0) consttinyxml2::XMLNode
GetDocument() consttinyxml2::XMLNodeinline
GetDocument()tinyxml2::XMLNodeinline
GetLineNum() consttinyxml2::XMLNodeinline
GetUserData() consttinyxml2::XMLNodeinline
InsertAfterChild(XMLNode *afterThis, XMLNode *addThis)tinyxml2::XMLNode
InsertEndChild(XMLNode *addThis)tinyxml2::XMLNode
InsertFirstChild(XMLNode *addThis)tinyxml2::XMLNode
LastChild() consttinyxml2::XMLNodeinline
LastChildElement(const char *name=0) consttinyxml2::XMLNode
NextSibling() consttinyxml2::XMLNodeinline
NextSiblingElement(const char *name=0) consttinyxml2::XMLNode
NoChildren() consttinyxml2::XMLNodeinline
Parent() consttinyxml2::XMLNodeinline
PreviousSibling() consttinyxml2::XMLNodeinline
PreviousSiblingElement(const char *name=0) consttinyxml2::XMLNode
SetUserData(void *userData)tinyxml2::XMLNodeinline
SetValue(const char *val, bool staticMem=false)tinyxml2::XMLNode
ShallowClone(XMLDocument *document) consttinyxml2::XMLUnknownvirtual
ShallowEqual(const XMLNode *compare) consttinyxml2::XMLUnknownvirtual
ToComment()tinyxml2::XMLNodeinlinevirtual
ToDeclaration()tinyxml2::XMLNodeinlinevirtual
ToDocument()tinyxml2::XMLNodeinlinevirtual
ToElement()tinyxml2::XMLNodeinlinevirtual
ToText()tinyxml2::XMLNodeinlinevirtual
ToUnknown()tinyxml2::XMLUnknowninlinevirtual
Value() consttinyxml2::XMLNode
- - - - diff --git a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_unknown.html b/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_unknown.html deleted file mode 100644 index 8b10ba7b4..000000000 --- a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_unknown.html +++ /dev/null @@ -1,302 +0,0 @@ - - - - - - - -TinyXML-2: tinyxml2::XMLUnknown Class Reference - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
tinyxml2::XMLUnknown Class Reference
-
-
- -

#include <tinyxml2.h>

-
-Inheritance diagram for tinyxml2::XMLUnknown:
-
-
- - -tinyxml2::XMLNode - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

-virtual XMLUnknownToUnknown ()
 Safely cast to an Unknown, or null.
 
virtual bool Accept (XMLVisitor *visitor) const
 
virtual XMLNodeShallowClone (XMLDocument *document) const
 
virtual bool ShallowEqual (const XMLNode *compare) const
 
- Public Member Functions inherited from tinyxml2::XMLNode
-const XMLDocumentGetDocument () const
 Get the XMLDocument that owns this XMLNode.
 
-XMLDocumentGetDocument ()
 Get the XMLDocument that owns this XMLNode.
 
-virtual XMLElementToElement ()
 Safely cast to an Element, or null.
 
-virtual XMLTextToText ()
 Safely cast to Text, or null.
 
-virtual XMLCommentToComment ()
 Safely cast to a Comment, or null.
 
-virtual XMLDocumentToDocument ()
 Safely cast to a Document, or null.
 
-virtual XMLDeclarationToDeclaration ()
 Safely cast to a Declaration, or null.
 
const char * Value () const
 
void SetValue (const char *val, bool staticMem=false)
 
-int GetLineNum () const
 Gets the line number the node is in, if the document was parsed from a file.
 
-const XMLNodeParent () const
 Get the parent of this node on the DOM.
 
-bool NoChildren () const
 Returns true if this node has no children.
 
-const XMLNodeFirstChild () const
 Get the first child node, or null if none exists.
 
const XMLElementFirstChildElement (const char *name=0) const
 
-const XMLNodeLastChild () const
 Get the last child node, or null if none exists.
 
const XMLElementLastChildElement (const char *name=0) const
 
-const XMLNodePreviousSibling () const
 Get the previous (left) sibling node of this node.
 
-const XMLElementPreviousSiblingElement (const char *name=0) const
 Get the previous (left) sibling element of this node, with an optionally supplied name.
 
-const XMLNodeNextSibling () const
 Get the next (right) sibling node of this node.
 
-const XMLElementNextSiblingElement (const char *name=0) const
 Get the next (right) sibling element of this node, with an optionally supplied name.
 
XMLNodeInsertEndChild (XMLNode *addThis)
 
XMLNodeInsertFirstChild (XMLNode *addThis)
 
XMLNodeInsertAfterChild (XMLNode *afterThis, XMLNode *addThis)
 
void DeleteChildren ()
 
void DeleteChild (XMLNode *node)
 
XMLNodeDeepClone (XMLDocument *target) const
 
void SetUserData (void *userData)
 
void * GetUserData () const
 
-

Detailed Description

-

Any tag that TinyXML-2 doesn't recognize is saved as an unknown. It is a tag of text, but should not be modified. It will be written back to the XML, unchanged, when the file is saved.

-

DTD tags get thrown into XMLUnknowns.

-

Member Function Documentation

- -

◆ Accept()

- -
-
- - - - - -
- - - - - - - - -
virtual bool tinyxml2::XMLUnknown::Accept (XMLVisitorvisitor) const
-
-virtual
-
-

Accept a hierarchical visit of the nodes in the TinyXML-2 DOM. Every node in the XML tree will be conditionally visited and the host will be called back via the XMLVisitor interface.

-

This is essentially a SAX interface for TinyXML-2. (Note however it doesn't re-parse the XML for the callbacks, so the performance of TinyXML-2 is unchanged by using this interface versus any other.)

-

The interface has been based on ideas from:

- -

Which are both good references for "visiting".

-

An example of using Accept():

XMLPrinter printer;
-tinyxmlDoc.Accept( &printer );
-const char* xmlcstr = printer.CStr();
-
-

Implements tinyxml2::XMLNode.

- -
-
- -

◆ ShallowClone()

- -
-
- - - - - -
- - - - - - - - -
virtual XMLNode* tinyxml2::XMLUnknown::ShallowClone (XMLDocumentdocument) const
-
-virtual
-
-

Make a copy of this node, but not its children. You may pass in a Document pointer that will be the owner of the new Node. If the 'document' is null, then the node returned will be allocated from the current Document. (this->GetDocument())

-

Note: if called on a XMLDocument, this will return null.

- -

Implements tinyxml2::XMLNode.

- -
-
- -

◆ ShallowEqual()

- -
-
- - - - - -
- - - - - - - - -
virtual bool tinyxml2::XMLUnknown::ShallowEqual (const XMLNodecompare) const
-
-virtual
-
-

Test if 2 nodes are the same, but don't test children. The 2 nodes do not need to be in the same Document.

-

Note: if called on a XMLDocument, this will return false.

- -

Implements tinyxml2::XMLNode.

- -
-
-
The documentation for this class was generated from the following file: -
- - - - diff --git a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_unknown.png b/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_unknown.png deleted file mode 100644 index 217b62c5590fd41f7e30a49d292a0a03662d9083..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 647 zcmeAS@N?(olHy`uVBq!ia0vp^y+9nm!3-pY71+{%lth3}i0l9V|AEXGZ@!lHADRGU zf$@O@2Ut7r$OE|?B|(0{3_wL7aP?G(5d#C0n5Tv(X1Z$W+JwA7hwVxF^FwoF_y1B4GO%W<8g7x~-!<>GJCc5XC} zzFx3fWo}2V%1hBwqxGA$-`V$`4f}s1t@fGj4YBm)Zfj%@7vH}zW1p?h-lU-F{XwP) zyjR!Bu5w$ra@I~}Y2lYsZdFU~S8!icl|JL|2{oP{$+MOB2N^z9DVC7aN;7@SC4cpo zx@VuY^z@fXH;v>r?cX$UiSYZIUu+BWjn7;+`hB_faerT?$ja%qSHsTQHcNi+PxqRn zo4=<{<)!kSTYr|FS$lTqkezT*3o63I7ytn1$$6x)n`^#ocd!M-Um4$TT z-m(=^t;=p{885qS(w}!*e(Sb3x%ZCgcT{gM{9E=q=2po{!yVk!>A}TTw|b1yJQv0O z5u82mB$Klw|IKK#x{Tdr_a z{mLr|b}?(vy= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IXg?|Zs9hEy=Vo%?!Sivmx}a@CK2<$tb- zsS-SLR&A4I=B0IObT6Oh`XTP(qAkn9@Y;rf$${b9>z=0_@~^}Gn+vB_aQ1%TWnj2d zd2s{FOs)TK8Gf)cB&=baBD?dy$yFIEy=|X_891+gSXgtUc-@uKx7t#vS-ZnuPT6wp zr1;ci2968MCR#IWyS!CasHAp{k1)gf_0x}WD1`53`0-10RoM4a*N<1QT$snnl3y2n zhLIuY8)L(s`<4xF%lCg_IiOc&s^IYEPlKeCcC^qLznt|B@0)IV{&i0R7CQWtETEz3+#Pf^sj7T451LOOZ7q?f^s3g+MMWYF*Gn&mGu(c8i;r`cUf42j zhgjyY0PpYO3w_@J{k+v{?YsEPq6-$>W!{pWlmzs34cCKfk7dEWj+8QPsAGSV6waI^ zcAEE!Nmz)`E`}=cJM&xk`&iSSy{~2X5cQYwK=s$h*%A!)j1z*qxc~CcJ|-QRW+x*J PjD7}BS3j3^P6 - - - - - - -TinyXML-2: Class Members - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- a -

-
- - - - diff --git a/Engine/lib/tinyxml/docs/functions_c.html b/Engine/lib/tinyxml/docs/functions_c.html deleted file mode 100644 index 9050d9518..000000000 --- a/Engine/lib/tinyxml/docs/functions_c.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -TinyXML-2: Class Members - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- c -

-
- - - - diff --git a/Engine/lib/tinyxml/docs/functions_d.html b/Engine/lib/tinyxml/docs/functions_d.html deleted file mode 100644 index 1d214aa8f..000000000 --- a/Engine/lib/tinyxml/docs/functions_d.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - -TinyXML-2: Class Members - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- d -

-
- - - - diff --git a/Engine/lib/tinyxml/docs/functions_f.html b/Engine/lib/tinyxml/docs/functions_f.html deleted file mode 100644 index 4d4cce5b4..000000000 --- a/Engine/lib/tinyxml/docs/functions_f.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - -TinyXML-2: Class Members - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- f -

-
- - - - diff --git a/Engine/lib/tinyxml/docs/functions_func.html b/Engine/lib/tinyxml/docs/functions_func.html deleted file mode 100644 index dd3c76d2c..000000000 --- a/Engine/lib/tinyxml/docs/functions_func.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -TinyXML-2: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/Engine/lib/tinyxml/docs/functions_func_b.html b/Engine/lib/tinyxml/docs/functions_func_b.html deleted file mode 100644 index da6fdf4e1..000000000 --- a/Engine/lib/tinyxml/docs/functions_func_b.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -TinyXML-2: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- b -

-
- - - - diff --git a/Engine/lib/tinyxml/docs/functions_func_c.html b/Engine/lib/tinyxml/docs/functions_func_c.html deleted file mode 100644 index a9c8d30fb..000000000 --- a/Engine/lib/tinyxml/docs/functions_func_c.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - -TinyXML-2: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- c -

-
- - - - diff --git a/Engine/lib/tinyxml/docs/functions_func_d.html b/Engine/lib/tinyxml/docs/functions_func_d.html deleted file mode 100644 index 272ba3c68..000000000 --- a/Engine/lib/tinyxml/docs/functions_func_d.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - -TinyXML-2: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- d -

-
- - - - diff --git a/Engine/lib/tinyxml/docs/functions_func_e.html b/Engine/lib/tinyxml/docs/functions_func_e.html deleted file mode 100644 index 194408c5d..000000000 --- a/Engine/lib/tinyxml/docs/functions_func_e.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -TinyXML-2: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- e -

-
- - - - diff --git a/Engine/lib/tinyxml/docs/functions_func_f.html b/Engine/lib/tinyxml/docs/functions_func_f.html deleted file mode 100644 index 95f324f76..000000000 --- a/Engine/lib/tinyxml/docs/functions_func_f.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - -TinyXML-2: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- f -

-
- - - - diff --git a/Engine/lib/tinyxml/docs/functions_func_g.html b/Engine/lib/tinyxml/docs/functions_func_g.html deleted file mode 100644 index 06909ed0c..000000000 --- a/Engine/lib/tinyxml/docs/functions_func_g.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -TinyXML-2: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- g -

-
- - - - diff --git a/Engine/lib/tinyxml/docs/functions_func_i.html b/Engine/lib/tinyxml/docs/functions_func_i.html deleted file mode 100644 index 195a666ab..000000000 --- a/Engine/lib/tinyxml/docs/functions_func_i.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - -TinyXML-2: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- i -

-
- - - - diff --git a/Engine/lib/tinyxml/docs/functions_func_l.html b/Engine/lib/tinyxml/docs/functions_func_l.html deleted file mode 100644 index 41da93c0f..000000000 --- a/Engine/lib/tinyxml/docs/functions_func_l.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -TinyXML-2: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- l -

-
- - - - diff --git a/Engine/lib/tinyxml/docs/functions_func_n.html b/Engine/lib/tinyxml/docs/functions_func_n.html deleted file mode 100644 index 195bdb506..000000000 --- a/Engine/lib/tinyxml/docs/functions_func_n.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - -TinyXML-2: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- n -

-
- - - - diff --git a/Engine/lib/tinyxml/docs/functions_func_p.html b/Engine/lib/tinyxml/docs/functions_func_p.html deleted file mode 100644 index 59bab84df..000000000 --- a/Engine/lib/tinyxml/docs/functions_func_p.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - -TinyXML-2: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- p -

-
- - - - diff --git a/Engine/lib/tinyxml/docs/functions_func_q.html b/Engine/lib/tinyxml/docs/functions_func_q.html deleted file mode 100644 index 9f97d62d0..000000000 --- a/Engine/lib/tinyxml/docs/functions_func_q.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - -TinyXML-2: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- q -

-
- - - - diff --git a/Engine/lib/tinyxml/docs/functions_func_s.html b/Engine/lib/tinyxml/docs/functions_func_s.html deleted file mode 100644 index ddc052454..000000000 --- a/Engine/lib/tinyxml/docs/functions_func_s.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -TinyXML-2: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/Engine/lib/tinyxml/docs/functions_func_t.html b/Engine/lib/tinyxml/docs/functions_func_t.html deleted file mode 100644 index afb9ff638..000000000 --- a/Engine/lib/tinyxml/docs/functions_func_t.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - -TinyXML-2: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/Engine/lib/tinyxml/docs/functions_func_u.html b/Engine/lib/tinyxml/docs/functions_func_u.html deleted file mode 100644 index ef4de8ce3..000000000 --- a/Engine/lib/tinyxml/docs/functions_func_u.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -TinyXML-2: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- u -

-
- - - - diff --git a/Engine/lib/tinyxml/docs/functions_func_v.html b/Engine/lib/tinyxml/docs/functions_func_v.html deleted file mode 100644 index b189d4e3b..000000000 --- a/Engine/lib/tinyxml/docs/functions_func_v.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -TinyXML-2: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- - - - - - diff --git a/Engine/lib/tinyxml/docs/functions_func_x.html b/Engine/lib/tinyxml/docs/functions_func_x.html deleted file mode 100644 index dd3040fd4..000000000 --- a/Engine/lib/tinyxml/docs/functions_func_x.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -TinyXML-2: Class Members - Functions - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- x -

-
- - - - diff --git a/Engine/lib/tinyxml/docs/functions_g.html b/Engine/lib/tinyxml/docs/functions_g.html deleted file mode 100644 index d788ac5ea..000000000 --- a/Engine/lib/tinyxml/docs/functions_g.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -TinyXML-2: Class Members - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- g -

-
- - - - diff --git a/Engine/lib/tinyxml/docs/functions_i.html b/Engine/lib/tinyxml/docs/functions_i.html deleted file mode 100644 index 26f42e1eb..000000000 --- a/Engine/lib/tinyxml/docs/functions_i.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - -TinyXML-2: Class Members - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- i -

-
- - - - diff --git a/Engine/lib/tinyxml/docs/functions_l.html b/Engine/lib/tinyxml/docs/functions_l.html deleted file mode 100644 index fdaeaa84b..000000000 --- a/Engine/lib/tinyxml/docs/functions_l.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - - -TinyXML-2: Class Members - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- l -

-
- - - - diff --git a/Engine/lib/tinyxml/docs/functions_n.html b/Engine/lib/tinyxml/docs/functions_n.html deleted file mode 100644 index da911b636..000000000 --- a/Engine/lib/tinyxml/docs/functions_n.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - -TinyXML-2: Class Members - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- n -

-
- - - - diff --git a/Engine/lib/tinyxml/docs/functions_p.html b/Engine/lib/tinyxml/docs/functions_p.html deleted file mode 100644 index 3411ec0ec..000000000 --- a/Engine/lib/tinyxml/docs/functions_p.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - -TinyXML-2: Class Members - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- p -

-
- - - - diff --git a/Engine/lib/tinyxml/docs/functions_q.html b/Engine/lib/tinyxml/docs/functions_q.html deleted file mode 100644 index 6df8d6e35..000000000 --- a/Engine/lib/tinyxml/docs/functions_q.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - -TinyXML-2: Class Members - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- q -

-
- - - - diff --git a/Engine/lib/tinyxml/docs/functions_s.html b/Engine/lib/tinyxml/docs/functions_s.html deleted file mode 100644 index 7d81025c4..000000000 --- a/Engine/lib/tinyxml/docs/functions_s.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -TinyXML-2: Class Members - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- s -

-
- - - - diff --git a/Engine/lib/tinyxml/docs/functions_t.html b/Engine/lib/tinyxml/docs/functions_t.html deleted file mode 100644 index 4afc96c82..000000000 --- a/Engine/lib/tinyxml/docs/functions_t.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - -TinyXML-2: Class Members - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- t -

-
- - - - diff --git a/Engine/lib/tinyxml/docs/functions_u.html b/Engine/lib/tinyxml/docs/functions_u.html deleted file mode 100644 index b2a403172..000000000 --- a/Engine/lib/tinyxml/docs/functions_u.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - -TinyXML-2: Class Members - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- u -

-
- - - - diff --git a/Engine/lib/tinyxml/docs/functions_v.html b/Engine/lib/tinyxml/docs/functions_v.html deleted file mode 100644 index 2b0b5d98f..000000000 --- a/Engine/lib/tinyxml/docs/functions_v.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - -TinyXML-2: Class Members - - - - - - - - - -
-
- - - - - - -
-
TinyXML-2 -  9.0.0 -
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented class members with links to the class documentation for each member:
- -

- v -

-
- - - - diff --git a/Engine/lib/tinyxml/docs/jquery.js b/Engine/lib/tinyxml/docs/jquery.js deleted file mode 100644 index 103c32d79..000000000 --- a/Engine/lib/tinyxml/docs/jquery.js +++ /dev/null @@ -1,35 +0,0 @@ -/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element -},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** - * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler - * Licensed under MIT - * @author Ariel Flesler - * @version 2.1.2 - */ -;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 - * http://www.smartmenus.org/ - * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/Engine/lib/tinyxml/docs/menu.js b/Engine/lib/tinyxml/docs/menu.js deleted file mode 100644 index 2fe2214f2..000000000 --- a/Engine/lib/tinyxml/docs/menu.js +++ /dev/null @@ -1,51 +0,0 @@ -/* - @licstart The following is the entire license notice for the JavaScript code in this file. - - The MIT License (MIT) - - Copyright (C) 1997-2020 by Dimitri van Heesch - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software - and associated documentation files (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, publish, distribute, - sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or - substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - @licend The above is the entire license notice for the JavaScript code in this file - */ -function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { - function makeTree(data,relPath) { - var result=''; - if ('children' in data) { - result+=''; - } - return result; - } - - $('#main-nav').append(makeTree(menudata,relPath)); - $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); - if (searchEnabled) { - if (serverSide) { - $('#main-menu').append('
  • '); - } else { - $('#main-menu').append('
  • '); - } - } - $('#main-menu').smartmenus(); -} -/* @license-end */ diff --git a/Engine/lib/tinyxml/docs/search/all_0.js b/Engine/lib/tinyxml/docs/search/all_0.js deleted file mode 100644 index 69ff10e1a..000000000 --- a/Engine/lib/tinyxml/docs/search/all_0.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['accept_0',['Accept',['../classtinyxml2_1_1_x_m_l_node.html#a81e66df0a44c67a7af17f3b77a152785',1,'tinyxml2::XMLNode::Accept()'],['../classtinyxml2_1_1_x_m_l_text.html#a1b2c1448f1a21299d0a7913f18b55206',1,'tinyxml2::XMLText::Accept()'],['../classtinyxml2_1_1_x_m_l_comment.html#a4a33dc32fae0285b03f9cfcb3e43e122',1,'tinyxml2::XMLComment::Accept()'],['../classtinyxml2_1_1_x_m_l_declaration.html#a5f376019fb34752eb248548f42f32045',1,'tinyxml2::XMLDeclaration::Accept()'],['../classtinyxml2_1_1_x_m_l_unknown.html#a70983aa1b1cff3d3aa6d4d0a80e5ee48',1,'tinyxml2::XMLUnknown::Accept()'],['../classtinyxml2_1_1_x_m_l_element.html#a3ea8a40e788fb9ad876c28a32932c6d5',1,'tinyxml2::XMLElement::Accept()'],['../classtinyxml2_1_1_x_m_l_document.html#a9efa54f7ecb37c17ab1fa2b3078ccca1',1,'tinyxml2::XMLDocument::Accept()']]], - ['attribute_1',['Attribute',['../classtinyxml2_1_1_x_m_l_element.html#a70e49ed60b11212ae35f7e354cfe1de9',1,'tinyxml2::XMLElement']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/all_10.js b/Engine/lib/tinyxml/docs/search/all_10.js deleted file mode 100644 index cac5f2a79..000000000 --- a/Engine/lib/tinyxml/docs/search/all_10.js +++ /dev/null @@ -1,11 +0,0 @@ -var searchData= -[ - ['tinyxml_2d2_113',['TinyXML-2',['../index.html',1,'']]], - ['tocomment_114',['ToComment',['../classtinyxml2_1_1_x_m_l_node.html#aff47671055aa99840a1c1ebd661e63e3',1,'tinyxml2::XMLNode::ToComment()'],['../classtinyxml2_1_1_x_m_l_comment.html#a8093e1dc8a34fa446d9dc3fde0e6c0ee',1,'tinyxml2::XMLComment::ToComment()']]], - ['todeclaration_115',['ToDeclaration',['../classtinyxml2_1_1_x_m_l_node.html#a174fd4c22c010b58138c1b84a0dfbd51',1,'tinyxml2::XMLNode::ToDeclaration()'],['../classtinyxml2_1_1_x_m_l_declaration.html#a159d8ac45865215e88059ea1e5b52fc5',1,'tinyxml2::XMLDeclaration::ToDeclaration()'],['../classtinyxml2_1_1_x_m_l_handle.html#a108858be7ee3eb53f73b5194c1aa8ff0',1,'tinyxml2::XMLHandle::ToDeclaration()']]], - ['todocument_116',['ToDocument',['../classtinyxml2_1_1_x_m_l_node.html#a836e2966ed736fc3c94f70e12a2a3357',1,'tinyxml2::XMLNode::ToDocument()'],['../classtinyxml2_1_1_x_m_l_document.html#a3e185f880882bd978367bb55937735ec',1,'tinyxml2::XMLDocument::ToDocument()']]], - ['toelement_117',['ToElement',['../classtinyxml2_1_1_x_m_l_node.html#aab516e699567f75cc9ab2ef2eee501e8',1,'tinyxml2::XMLNode::ToElement()'],['../classtinyxml2_1_1_x_m_l_element.html#ad9ff5c2dbc15df36cf664ce1b0ea0a5d',1,'tinyxml2::XMLElement::ToElement()'],['../classtinyxml2_1_1_x_m_l_handle.html#a5e73ed8f3f6f9619d5a8bb1862c47d99',1,'tinyxml2::XMLHandle::ToElement()']]], - ['tonode_118',['ToNode',['../classtinyxml2_1_1_x_m_l_handle.html#a03ea6ec970a021b71bf1219a0f6717df',1,'tinyxml2::XMLHandle']]], - ['totext_119',['ToText',['../classtinyxml2_1_1_x_m_l_node.html#a41c55dab9162d1eb62db2008430e376b',1,'tinyxml2::XMLNode::ToText()'],['../classtinyxml2_1_1_x_m_l_text.html#ab1213b4ddebe9b17ec7e7040e9f1caf7',1,'tinyxml2::XMLText::ToText()'],['../classtinyxml2_1_1_x_m_l_handle.html#a6ab9e8cbfb41417246e5657e3842c62a',1,'tinyxml2::XMLHandle::ToText()']]], - ['tounknown_120',['ToUnknown',['../classtinyxml2_1_1_x_m_l_node.html#a8675a74aa0ada6eccab0c77ef3e5b9bd',1,'tinyxml2::XMLNode::ToUnknown()'],['../classtinyxml2_1_1_x_m_l_unknown.html#af4374856421921cad578c8affae872b6',1,'tinyxml2::XMLUnknown::ToUnknown()'],['../classtinyxml2_1_1_x_m_l_handle.html#aa387368a1ad8d843a9f12df863d298de',1,'tinyxml2::XMLHandle::ToUnknown()']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/all_11.js b/Engine/lib/tinyxml/docs/search/all_11.js deleted file mode 100644 index aa21f644e..000000000 --- a/Engine/lib/tinyxml/docs/search/all_11.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['unsigned64attribute_121',['Unsigned64Attribute',['../classtinyxml2_1_1_x_m_l_element.html#a226502bab8f1be7ede1fdd255398eb85',1,'tinyxml2::XMLElement']]], - ['unsigned64text_122',['Unsigned64Text',['../classtinyxml2_1_1_x_m_l_element.html#af48c1023abbac1acdf4927c51c3a5f0c',1,'tinyxml2::XMLElement']]], - ['unsignedattribute_123',['UnsignedAttribute',['../classtinyxml2_1_1_x_m_l_element.html#afea43a1d4aa33e3703ddee5fc9adc26c',1,'tinyxml2::XMLElement']]], - ['unsignedtext_124',['UnsignedText',['../classtinyxml2_1_1_x_m_l_element.html#a49bad014ffcc17b0b6119d5b2c97dfb5',1,'tinyxml2::XMLElement']]], - ['unsignedvalue_125',['UnsignedValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a0be5343b08a957c42c02c5d32c35d338',1,'tinyxml2::XMLAttribute']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/all_12.js b/Engine/lib/tinyxml/docs/search/all_12.js deleted file mode 100644 index 886312d96..000000000 --- a/Engine/lib/tinyxml/docs/search/all_12.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['value_126',['Value',['../classtinyxml2_1_1_x_m_l_node.html#a66344989a4b436155bcda72bd6b07b82',1,'tinyxml2::XMLNode::Value()'],['../classtinyxml2_1_1_x_m_l_attribute.html#a1aab1dd0e43ecbcfa306adbcf3a3d853',1,'tinyxml2::XMLAttribute::Value()']]], - ['visit_127',['Visit',['../classtinyxml2_1_1_x_m_l_visitor.html#adc75bd459fc7ba8223b50f0616767f9a',1,'tinyxml2::XMLVisitor::Visit(const XMLDeclaration &)'],['../classtinyxml2_1_1_x_m_l_visitor.html#af30233565856480ea48b6fa0d6dec65b',1,'tinyxml2::XMLVisitor::Visit(const XMLText &)'],['../classtinyxml2_1_1_x_m_l_visitor.html#acc8147fb5a85f6c65721654e427752d7',1,'tinyxml2::XMLVisitor::Visit(const XMLComment &)'],['../classtinyxml2_1_1_x_m_l_visitor.html#a14e4748387c34bf53d24e8119bb1f292',1,'tinyxml2::XMLVisitor::Visit(const XMLUnknown &)'],['../classtinyxml2_1_1_x_m_l_printer.html#a275ae25544a12199ae40b6994ca6e4de',1,'tinyxml2::XMLPrinter::Visit(const XMLText &text)'],['../classtinyxml2_1_1_x_m_l_printer.html#a3f16a30be1537ac141d9bd2db824ba9e',1,'tinyxml2::XMLPrinter::Visit(const XMLComment &comment)'],['../classtinyxml2_1_1_x_m_l_printer.html#a9ceff5cd85e5db65838962174fcdcc46',1,'tinyxml2::XMLPrinter::Visit(const XMLDeclaration &declaration)'],['../classtinyxml2_1_1_x_m_l_printer.html#aa15e1da81e17dea5da6499ac5b08d9d8',1,'tinyxml2::XMLPrinter::Visit(const XMLUnknown &unknown)']]], - ['visitenter_128',['VisitEnter',['../classtinyxml2_1_1_x_m_l_visitor.html#acb3c22fc5f60eb9db98f533f2761f67d',1,'tinyxml2::XMLVisitor::VisitEnter(const XMLDocument &)'],['../classtinyxml2_1_1_x_m_l_visitor.html#af97980a17dd4e37448b181f5ddfa92b5',1,'tinyxml2::XMLVisitor::VisitEnter(const XMLElement &, const XMLAttribute *)'],['../classtinyxml2_1_1_x_m_l_printer.html#ae966b988a7a28c41e91c5ca17fb2054b',1,'tinyxml2::XMLPrinter::VisitEnter(const XMLDocument &)'],['../classtinyxml2_1_1_x_m_l_printer.html#a2ce2aa508c21ac91615093ddb9c282c5',1,'tinyxml2::XMLPrinter::VisitEnter(const XMLElement &element, const XMLAttribute *attribute)']]], - ['visitexit_129',['VisitExit',['../classtinyxml2_1_1_x_m_l_visitor.html#a170e9989cd046ba904f302d087e07086',1,'tinyxml2::XMLVisitor::VisitExit(const XMLDocument &)'],['../classtinyxml2_1_1_x_m_l_visitor.html#a772f10ddc83f881956d32628faa16eb6',1,'tinyxml2::XMLVisitor::VisitExit(const XMLElement &)'],['../classtinyxml2_1_1_x_m_l_printer.html#a15fc1f2b922f540917dcf52808737b29',1,'tinyxml2::XMLPrinter::VisitExit(const XMLDocument &)'],['../classtinyxml2_1_1_x_m_l_printer.html#ae99e0a7086543591edfb565f24689098',1,'tinyxml2::XMLPrinter::VisitExit(const XMLElement &element)']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/all_13.js b/Engine/lib/tinyxml/docs/search/all_13.js deleted file mode 100644 index a438148c9..000000000 --- a/Engine/lib/tinyxml/docs/search/all_13.js +++ /dev/null @@ -1,15 +0,0 @@ -var searchData= -[ - ['xmlattribute_130',['XMLAttribute',['../classtinyxml2_1_1_x_m_l_attribute.html',1,'tinyxml2']]], - ['xmlcomment_131',['XMLComment',['../classtinyxml2_1_1_x_m_l_comment.html',1,'tinyxml2']]], - ['xmlconsthandle_132',['XMLConstHandle',['../classtinyxml2_1_1_x_m_l_const_handle.html',1,'tinyxml2']]], - ['xmldeclaration_133',['XMLDeclaration',['../classtinyxml2_1_1_x_m_l_declaration.html',1,'tinyxml2']]], - ['xmldocument_134',['XMLDocument',['../classtinyxml2_1_1_x_m_l_document.html',1,'tinyxml2::XMLDocument'],['../classtinyxml2_1_1_x_m_l_document.html#a57ddf17b6e054dda10af98991b1b8f70',1,'tinyxml2::XMLDocument::XMLDocument()']]], - ['xmlelement_135',['XMLElement',['../classtinyxml2_1_1_x_m_l_element.html',1,'tinyxml2']]], - ['xmlhandle_136',['XMLHandle',['../classtinyxml2_1_1_x_m_l_handle.html',1,'tinyxml2::XMLHandle'],['../classtinyxml2_1_1_x_m_l_handle.html#a9c240a35c18f053509b4b97ddccd9793',1,'tinyxml2::XMLHandle::XMLHandle(XMLNode *node)'],['../classtinyxml2_1_1_x_m_l_handle.html#aa2edbc1c0d3e3e8259bd98de7f1cf500',1,'tinyxml2::XMLHandle::XMLHandle(XMLNode &node)'],['../classtinyxml2_1_1_x_m_l_handle.html#afd8e01e6018c07347b8e6d80272466aa',1,'tinyxml2::XMLHandle::XMLHandle(const XMLHandle &ref)']]], - ['xmlnode_137',['XMLNode',['../classtinyxml2_1_1_x_m_l_node.html',1,'tinyxml2']]], - ['xmlprinter_138',['XMLPrinter',['../classtinyxml2_1_1_x_m_l_printer.html',1,'tinyxml2::XMLPrinter'],['../classtinyxml2_1_1_x_m_l_printer.html#aa6d3841c069085f5b8a27bc7103c04f7',1,'tinyxml2::XMLPrinter::XMLPrinter()']]], - ['xmltext_139',['XMLText',['../classtinyxml2_1_1_x_m_l_text.html',1,'tinyxml2']]], - ['xmlunknown_140',['XMLUnknown',['../classtinyxml2_1_1_x_m_l_unknown.html',1,'tinyxml2']]], - ['xmlvisitor_141',['XMLVisitor',['../classtinyxml2_1_1_x_m_l_visitor.html',1,'tinyxml2']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/all_2.js b/Engine/lib/tinyxml/docs/search/all_2.js deleted file mode 100644 index 211e24efc..000000000 --- a/Engine/lib/tinyxml/docs/search/all_2.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['cdata_5',['CData',['../classtinyxml2_1_1_x_m_l_text.html#ac1bb5ea4166c320882d9e0ad16fd385b',1,'tinyxml2::XMLText']]], - ['clear_6',['Clear',['../classtinyxml2_1_1_x_m_l_document.html#a65656b0b2cbc822708eb351504178aaf',1,'tinyxml2::XMLDocument']]], - ['clearbuffer_7',['ClearBuffer',['../classtinyxml2_1_1_x_m_l_printer.html#a690cb140ba98b7339734ff865f56b0b3',1,'tinyxml2::XMLPrinter']]], - ['clearerror_8',['ClearError',['../classtinyxml2_1_1_x_m_l_document.html#a4085d9c52f1d93214311459d6d1fcf17',1,'tinyxml2::XMLDocument']]], - ['closeelement_9',['CloseElement',['../classtinyxml2_1_1_x_m_l_printer.html#ad04d29562b46fcdb23ab320f8b664240',1,'tinyxml2::XMLPrinter']]], - ['cstr_10',['CStr',['../classtinyxml2_1_1_x_m_l_printer.html#a180671d73844f159f2d4aafbc11d106e',1,'tinyxml2::XMLPrinter']]], - ['cstrsize_11',['CStrSize',['../classtinyxml2_1_1_x_m_l_printer.html#a3256cf3523d4898b91abb18b924be04c',1,'tinyxml2::XMLPrinter']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/all_3.js b/Engine/lib/tinyxml/docs/search/all_3.js deleted file mode 100644 index 6520bfaac..000000000 --- a/Engine/lib/tinyxml/docs/search/all_3.js +++ /dev/null @@ -1,12 +0,0 @@ -var searchData= -[ - ['deepclone_12',['DeepClone',['../classtinyxml2_1_1_x_m_l_node.html#a62c71b6bf8734b5424063b8d9a61c266',1,'tinyxml2::XMLNode']]], - ['deepcopy_13',['DeepCopy',['../classtinyxml2_1_1_x_m_l_document.html#af592ffc91514e25a39664521ac83db45',1,'tinyxml2::XMLDocument']]], - ['deleteattribute_14',['DeleteAttribute',['../classtinyxml2_1_1_x_m_l_element.html#aebd45aa7118964c30b32fe12e944628a',1,'tinyxml2::XMLElement']]], - ['deletechild_15',['DeleteChild',['../classtinyxml2_1_1_x_m_l_node.html#a363b6edbd6ebd55f8387d2b89f2b0921',1,'tinyxml2::XMLNode']]], - ['deletechildren_16',['DeleteChildren',['../classtinyxml2_1_1_x_m_l_node.html#a0360085cc54df5bff85d5c5da13afdce',1,'tinyxml2::XMLNode']]], - ['deletenode_17',['DeleteNode',['../classtinyxml2_1_1_x_m_l_document.html#ac1d6e2c7fcc1a660624ac4f68e96380d',1,'tinyxml2::XMLDocument']]], - ['doubleattribute_18',['DoubleAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a10a90c505aea716bf073eea1c97f33b5',1,'tinyxml2::XMLElement']]], - ['doubletext_19',['DoubleText',['../classtinyxml2_1_1_x_m_l_element.html#a81b1ff0cf2f2cd09be8badc08b39a2b7',1,'tinyxml2::XMLElement']]], - ['doublevalue_20',['DoubleValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a4aa73513f54ff0087d3e804f0f54e30f',1,'tinyxml2::XMLAttribute']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/all_4.js b/Engine/lib/tinyxml/docs/search/all_4.js deleted file mode 100644 index 52bdc46bd..000000000 --- a/Engine/lib/tinyxml/docs/search/all_4.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['error_21',['Error',['../classtinyxml2_1_1_x_m_l_document.html#a34e6318e182e40e3cc4f4ba5d59ed9ed',1,'tinyxml2::XMLDocument']]], - ['errorid_22',['ErrorID',['../classtinyxml2_1_1_x_m_l_document.html#afa3ed33b3107f920ec2b301f805ac17d',1,'tinyxml2::XMLDocument']]], - ['errorlinenum_23',['ErrorLineNum',['../classtinyxml2_1_1_x_m_l_document.html#a57400f816dbe7799ece33615ead9ab76',1,'tinyxml2::XMLDocument']]], - ['errorstr_24',['ErrorStr',['../classtinyxml2_1_1_x_m_l_document.html#ad75aa9d32c4e8b300655186808aa9abf',1,'tinyxml2::XMLDocument']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/all_5.js b/Engine/lib/tinyxml/docs/search/all_5.js deleted file mode 100644 index 1d4413afa..000000000 --- a/Engine/lib/tinyxml/docs/search/all_5.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['findattribute_25',['FindAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a2dcd4d5d6fb63396cd2f257c318b42c4',1,'tinyxml2::XMLElement']]], - ['firstattribute_26',['FirstAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a3e191704c8d499906ec11fe2f60c6686',1,'tinyxml2::XMLElement']]], - ['firstchild_27',['FirstChild',['../classtinyxml2_1_1_x_m_l_node.html#ae7dc225e1018cdd685f7563593a1fe08',1,'tinyxml2::XMLNode::FirstChild()'],['../classtinyxml2_1_1_x_m_l_handle.html#a536447dc7f54c0cd11e031dad94795ae',1,'tinyxml2::XMLHandle::FirstChild()']]], - ['firstchildelement_28',['FirstChildElement',['../classtinyxml2_1_1_x_m_l_node.html#a1795a35852dc8aae877cc8ded986e59b',1,'tinyxml2::XMLNode::FirstChildElement()'],['../classtinyxml2_1_1_x_m_l_handle.html#a74b04dd0f15e0bf01860e282b840b6a3',1,'tinyxml2::XMLHandle::FirstChildElement()']]], - ['floatattribute_29',['FloatAttribute',['../classtinyxml2_1_1_x_m_l_element.html#ab1f4be2332e27dc640e9b6abd01d64dd',1,'tinyxml2::XMLElement']]], - ['floattext_30',['FloatText',['../classtinyxml2_1_1_x_m_l_element.html#a45444eb21f99ca46101545992dc2e927',1,'tinyxml2::XMLElement']]], - ['floatvalue_31',['FloatValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a27797b45d21c981257720db94f5f8801',1,'tinyxml2::XMLAttribute']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/all_6.js b/Engine/lib/tinyxml/docs/search/all_6.js deleted file mode 100644 index 9dddc4ff7..000000000 --- a/Engine/lib/tinyxml/docs/search/all_6.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['get_20information_20out_20of_20xml_32',['Get information out of XML',['../_example_3.html',1,'']]], - ['getdocument_33',['GetDocument',['../classtinyxml2_1_1_x_m_l_node.html#a2de84cfa4ec3fe249bad745069d145f1',1,'tinyxml2::XMLNode::GetDocument() const'],['../classtinyxml2_1_1_x_m_l_node.html#af343d1ef0b45c0020e62d784d7e67a68',1,'tinyxml2::XMLNode::GetDocument()']]], - ['getlinenum_34',['GetLineNum',['../classtinyxml2_1_1_x_m_l_node.html#a9b5fc636646fda761d342c72e91cb286',1,'tinyxml2::XMLNode::GetLineNum()'],['../classtinyxml2_1_1_x_m_l_attribute.html#a02d5ea924586e35f9c13857d1671b765',1,'tinyxml2::XMLAttribute::GetLineNum()']]], - ['gettext_35',['GetText',['../classtinyxml2_1_1_x_m_l_element.html#a6d5c8d115561ade4e4456b71d91b6f51',1,'tinyxml2::XMLElement']]], - ['getuserdata_36',['GetUserData',['../classtinyxml2_1_1_x_m_l_node.html#a7f0687574afa03bc479dc44f29db0afe',1,'tinyxml2::XMLNode']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/all_7.js b/Engine/lib/tinyxml/docs/search/all_7.js deleted file mode 100644 index 118d61e26..000000000 --- a/Engine/lib/tinyxml/docs/search/all_7.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['hasbom_37',['HasBOM',['../classtinyxml2_1_1_x_m_l_document.html#a33fc5d159db873a179fa26338adb05bd',1,'tinyxml2::XMLDocument']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/all_8.js b/Engine/lib/tinyxml/docs/search/all_8.js deleted file mode 100644 index 9256a19a6..000000000 --- a/Engine/lib/tinyxml/docs/search/all_8.js +++ /dev/null @@ -1,15 +0,0 @@ -var searchData= -[ - ['insertafterchild_38',['InsertAfterChild',['../classtinyxml2_1_1_x_m_l_node.html#a85adb8f0b7477eec30f9a41d420b09c2',1,'tinyxml2::XMLNode']]], - ['insertendchild_39',['InsertEndChild',['../classtinyxml2_1_1_x_m_l_node.html#aeb249ed60f4e8bfad3709151c3ee4286',1,'tinyxml2::XMLNode']]], - ['insertfirstchild_40',['InsertFirstChild',['../classtinyxml2_1_1_x_m_l_node.html#a8ff7dc071f3a1a6ae2ac25a37492865d',1,'tinyxml2::XMLNode']]], - ['insertnewchildelement_41',['InsertNewChildElement',['../classtinyxml2_1_1_x_m_l_element.html#abc9506eff9780f666f49dc3d5e5cae13',1,'tinyxml2::XMLElement']]], - ['insertnewcomment_42',['InsertNewComment',['../classtinyxml2_1_1_x_m_l_element.html#ae4f2c2e781b8dc030411d84cd20fa46d',1,'tinyxml2::XMLElement']]], - ['insertnewdeclaration_43',['InsertNewDeclaration',['../classtinyxml2_1_1_x_m_l_element.html#adec237e788b50c4ed73c918a166adde6',1,'tinyxml2::XMLElement']]], - ['insertnewtext_44',['InsertNewText',['../classtinyxml2_1_1_x_m_l_element.html#a189e155810fc9fdd4da1409cbadee187',1,'tinyxml2::XMLElement']]], - ['insertnewunknown_45',['InsertNewUnknown',['../classtinyxml2_1_1_x_m_l_element.html#acaa5fe3957760e68185006965e2c11c2',1,'tinyxml2::XMLElement']]], - ['int64attribute_46',['Int64Attribute',['../classtinyxml2_1_1_x_m_l_element.html#a66d96972adecd816194191f13cc4a0a0',1,'tinyxml2::XMLElement']]], - ['int64text_47',['Int64Text',['../classtinyxml2_1_1_x_m_l_element.html#aab6151f7e3b4c2c0a8234e262d7b6b8a',1,'tinyxml2::XMLElement']]], - ['intattribute_48',['IntAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a95a89b13bb14a2d4655e2b5b406c00d4',1,'tinyxml2::XMLElement']]], - ['intvalue_49',['IntValue',['../classtinyxml2_1_1_x_m_l_attribute.html#adfa2433f0fdafd5c3880936de9affa80',1,'tinyxml2::XMLAttribute']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/all_9.js b/Engine/lib/tinyxml/docs/search/all_9.js deleted file mode 100644 index f6023fe35..000000000 --- a/Engine/lib/tinyxml/docs/search/all_9.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['lastchild_50',['LastChild',['../classtinyxml2_1_1_x_m_l_node.html#a9b8583a277e8e26f4cbbb5492786778e',1,'tinyxml2::XMLNode::LastChild()'],['../classtinyxml2_1_1_x_m_l_handle.html#a9d09f04435f0f2f7d0816b0198d0517b',1,'tinyxml2::XMLHandle::LastChild()']]], - ['lastchildelement_51',['LastChildElement',['../classtinyxml2_1_1_x_m_l_node.html#a173e9d1341bc56992e2d320a35936551',1,'tinyxml2::XMLNode::LastChildElement()'],['../classtinyxml2_1_1_x_m_l_handle.html#a42cccd0ce8b1ce704f431025e9f19e0c',1,'tinyxml2::XMLHandle::LastChildElement()']]], - ['load_20an_20xml_20file_52',['Load an XML File',['../_example_1.html',1,'']]], - ['loadfile_53',['LoadFile',['../classtinyxml2_1_1_x_m_l_document.html#a2ebd4647a8af5fc6831b294ac26a150a',1,'tinyxml2::XMLDocument::LoadFile(const char *filename)'],['../classtinyxml2_1_1_x_m_l_document.html#a5f1d330fad44c52f3d265338dd2a6dc2',1,'tinyxml2::XMLDocument::LoadFile(FILE *)']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/all_a.js b/Engine/lib/tinyxml/docs/search/all_a.js deleted file mode 100644 index 5211f98c9..000000000 --- a/Engine/lib/tinyxml/docs/search/all_a.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['name_54',['Name',['../classtinyxml2_1_1_x_m_l_attribute.html#ab886c486ec19f02ed826f8dc129e5ad8',1,'tinyxml2::XMLAttribute::Name()'],['../classtinyxml2_1_1_x_m_l_element.html#a63e057fb5baee1dd29f323cb85907b35',1,'tinyxml2::XMLElement::Name()']]], - ['newcomment_55',['NewComment',['../classtinyxml2_1_1_x_m_l_document.html#ade4874bcb439954972ef2b3723ff3259',1,'tinyxml2::XMLDocument']]], - ['newdeclaration_56',['NewDeclaration',['../classtinyxml2_1_1_x_m_l_document.html#aee2eb3435923f5494dcc70ac225b60a2',1,'tinyxml2::XMLDocument']]], - ['newelement_57',['NewElement',['../classtinyxml2_1_1_x_m_l_document.html#a8aa7817d4a1001364b06373763ab99d6',1,'tinyxml2::XMLDocument']]], - ['newtext_58',['NewText',['../classtinyxml2_1_1_x_m_l_document.html#ab7e8b29ae4099092a8bb947da6361296',1,'tinyxml2::XMLDocument']]], - ['newunknown_59',['NewUnknown',['../classtinyxml2_1_1_x_m_l_document.html#a5385c937734ff6db9226ab707d2c7147',1,'tinyxml2::XMLDocument']]], - ['next_60',['Next',['../classtinyxml2_1_1_x_m_l_attribute.html#aee53571b21e7ce5421eb929523a8bbe6',1,'tinyxml2::XMLAttribute']]], - ['nextsibling_61',['NextSibling',['../classtinyxml2_1_1_x_m_l_node.html#a79db9ef0fe014d27790f2218b87bcbb5',1,'tinyxml2::XMLNode::NextSibling()'],['../classtinyxml2_1_1_x_m_l_handle.html#aad2eccc7c7c7b18145877c978c3850b5',1,'tinyxml2::XMLHandle::NextSibling()']]], - ['nextsiblingelement_62',['NextSiblingElement',['../classtinyxml2_1_1_x_m_l_node.html#a1264c86233328f0cd36297552d982f80',1,'tinyxml2::XMLNode::NextSiblingElement()'],['../classtinyxml2_1_1_x_m_l_handle.html#ae41d88ee061f3c49a081630ff753b2c5',1,'tinyxml2::XMLHandle::NextSiblingElement()']]], - ['nochildren_63',['NoChildren',['../classtinyxml2_1_1_x_m_l_node.html#ac3ab489e6e202a3cd1762d3b332e89d4',1,'tinyxml2::XMLNode']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/all_b.js b/Engine/lib/tinyxml/docs/search/all_b.js deleted file mode 100644 index 38c0c2a36..000000000 --- a/Engine/lib/tinyxml/docs/search/all_b.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['openelement_64',['OpenElement',['../classtinyxml2_1_1_x_m_l_printer.html#a20fb06c83bd13e5140d7dd13af06c010',1,'tinyxml2::XMLPrinter']]], - ['operator_3d_65',['operator=',['../classtinyxml2_1_1_x_m_l_handle.html#a75b908322bb4b83be3281b6845252b20',1,'tinyxml2::XMLHandle']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/all_c.js b/Engine/lib/tinyxml/docs/search/all_c.js deleted file mode 100644 index 1ec43192f..000000000 --- a/Engine/lib/tinyxml/docs/search/all_c.js +++ /dev/null @@ -1,15 +0,0 @@ -var searchData= -[ - ['parent_66',['Parent',['../classtinyxml2_1_1_x_m_l_node.html#ae0f62bc186c56c2e0483ebd52dbfbe34',1,'tinyxml2::XMLNode']]], - ['parse_67',['Parse',['../classtinyxml2_1_1_x_m_l_document.html#af2b616169e6517182f6725f2498e9a01',1,'tinyxml2::XMLDocument']]], - ['parse_20an_20xml_20from_20char_20buffer_68',['Parse an XML from char buffer',['../_example_2.html',1,'']]], - ['previoussibling_69',['PreviousSibling',['../classtinyxml2_1_1_x_m_l_node.html#aac667c513d445f8b783e1e15ef9d3551',1,'tinyxml2::XMLNode::PreviousSibling()'],['../classtinyxml2_1_1_x_m_l_handle.html#a428374e756f4db4cbc287fec64eae02c',1,'tinyxml2::XMLHandle::PreviousSibling()']]], - ['previoussiblingelement_70',['PreviousSiblingElement',['../classtinyxml2_1_1_x_m_l_node.html#a872936cae46fb473eb47fec99129fc70',1,'tinyxml2::XMLNode::PreviousSiblingElement()'],['../classtinyxml2_1_1_x_m_l_handle.html#a786957e498039554ed334cdc36612a7e',1,'tinyxml2::XMLHandle::PreviousSiblingElement()']]], - ['print_71',['Print',['../classtinyxml2_1_1_x_m_l_document.html#a867cf5fa3e3ff6ae4847a8b7ee8ec083',1,'tinyxml2::XMLDocument']]], - ['printerror_72',['PrintError',['../classtinyxml2_1_1_x_m_l_document.html#a1d033945b42e125d933d6231e4571552',1,'tinyxml2::XMLDocument']]], - ['printspace_73',['PrintSpace',['../classtinyxml2_1_1_x_m_l_printer.html#a01148e2ebe6776e38c5a3e41bc5feb74',1,'tinyxml2::XMLPrinter']]], - ['pushattribute_74',['PushAttribute',['../classtinyxml2_1_1_x_m_l_printer.html#a9a4e2c9348b42e147629d5a99f4af3f0',1,'tinyxml2::XMLPrinter']]], - ['pushcomment_75',['PushComment',['../classtinyxml2_1_1_x_m_l_printer.html#afc8416814219591c2fd5656e0c233140',1,'tinyxml2::XMLPrinter']]], - ['pushheader_76',['PushHeader',['../classtinyxml2_1_1_x_m_l_printer.html#a178c608ce8476043d5d6513819cde903',1,'tinyxml2::XMLPrinter']]], - ['pushtext_77',['PushText',['../classtinyxml2_1_1_x_m_l_printer.html#a1cc16a9362df4332012cb13cff6441b3',1,'tinyxml2::XMLPrinter::PushText(const char *text, bool cdata=false)'],['../classtinyxml2_1_1_x_m_l_printer.html#a3e0d4d78de25d4cf081009e1431cea7e',1,'tinyxml2::XMLPrinter::PushText(int value)'],['../classtinyxml2_1_1_x_m_l_printer.html#a661fb50e7e0a4918d2d259cb0fae647e',1,'tinyxml2::XMLPrinter::PushText(unsigned value)'],['../classtinyxml2_1_1_x_m_l_printer.html#a96b0a0bfe105154a0a6c37d725258f0a',1,'tinyxml2::XMLPrinter::PushText(int64_t value)'],['../classtinyxml2_1_1_x_m_l_printer.html#a60b0a4cf57371ff8679c2c7556ccb708',1,'tinyxml2::XMLPrinter::PushText(uint64_t value)'],['../classtinyxml2_1_1_x_m_l_printer.html#a4390e5fa1ed05189a8686647345ab29f',1,'tinyxml2::XMLPrinter::PushText(bool value)'],['../classtinyxml2_1_1_x_m_l_printer.html#a1dbb1390e829d0673af66b9cd1928bd7',1,'tinyxml2::XMLPrinter::PushText(float value)'],['../classtinyxml2_1_1_x_m_l_printer.html#aa715302dfc09473c77c853cbd5431965',1,'tinyxml2::XMLPrinter::PushText(double value)']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/all_d.js b/Engine/lib/tinyxml/docs/search/all_d.js deleted file mode 100644 index cab2932b6..000000000 --- a/Engine/lib/tinyxml/docs/search/all_d.js +++ /dev/null @@ -1,26 +0,0 @@ -var searchData= -[ - ['queryattribute_78',['QueryAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a5b7df3bed2b8954eabf227fa204522eb',1,'tinyxml2::XMLElement']]], - ['queryboolattribute_79',['QueryBoolAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a14c1bb77c39689838be01838d86ca872',1,'tinyxml2::XMLElement']]], - ['querybooltext_80',['QueryBoolText',['../classtinyxml2_1_1_x_m_l_element.html#a3fe5417d59eb8f5c4afe924b7d332736',1,'tinyxml2::XMLElement']]], - ['queryboolvalue_81',['QueryBoolValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a5f32e038954256f61c21ff20fd13a09c',1,'tinyxml2::XMLAttribute']]], - ['querydoubleattribute_82',['QueryDoubleAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a5f0964e2dbd8e2ee7fce9beab689443c',1,'tinyxml2::XMLElement']]], - ['querydoubletext_83',['QueryDoubleText',['../classtinyxml2_1_1_x_m_l_element.html#a684679c99bb036a25652744cec6c4d96',1,'tinyxml2::XMLElement']]], - ['querydoublevalue_84',['QueryDoubleValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a2aa6e55e8ea03af0609cf6690bff79b9',1,'tinyxml2::XMLAttribute']]], - ['queryfloatattribute_85',['QueryFloatAttribute',['../classtinyxml2_1_1_x_m_l_element.html#acd5eeddf6002ef90806af794b9d9a5a5',1,'tinyxml2::XMLElement']]], - ['queryfloattext_86',['QueryFloatText',['../classtinyxml2_1_1_x_m_l_element.html#afa332afedd93210daa6d44b88eb11e29',1,'tinyxml2::XMLElement']]], - ['queryfloatvalue_87',['QueryFloatValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a049dea6449a6259b6cfed44a9427b607',1,'tinyxml2::XMLAttribute']]], - ['queryint64attribute_88',['QueryInt64Attribute',['../classtinyxml2_1_1_x_m_l_element.html#a7c0955d80b6f8d196744eacb0f6e90a8',1,'tinyxml2::XMLElement']]], - ['queryint64text_89',['QueryInt64Text',['../classtinyxml2_1_1_x_m_l_element.html#a120c538c8eead169e635dbc70fb226d8',1,'tinyxml2::XMLElement']]], - ['queryint64value_90',['QueryInt64Value',['../classtinyxml2_1_1_x_m_l_attribute.html#a4e25344d6e4159026be34dbddf1dcac2',1,'tinyxml2::XMLAttribute']]], - ['queryintattribute_91',['QueryIntAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a8a78bc1187c1c45ad89f2690eab567b1',1,'tinyxml2::XMLElement']]], - ['queryinttext_92',['QueryIntText',['../classtinyxml2_1_1_x_m_l_element.html#a926357996bef633cb736e1a558419632',1,'tinyxml2::XMLElement']]], - ['queryintvalue_93',['QueryIntValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a6d5176260db00ea301c01af8457cd993',1,'tinyxml2::XMLAttribute']]], - ['querystringattribute_94',['QueryStringAttribute',['../classtinyxml2_1_1_x_m_l_element.html#adb8ae765f98d0c5037faec48deea78bc',1,'tinyxml2::XMLElement']]], - ['queryunsigned64attribute_95',['QueryUnsigned64Attribute',['../classtinyxml2_1_1_x_m_l_element.html#a13dd590b5d3958ce2ed79844aacd9405',1,'tinyxml2::XMLElement']]], - ['queryunsigned64text_96',['QueryUnsigned64Text',['../classtinyxml2_1_1_x_m_l_element.html#ac2239b3bd172ad8f5b78d04d4236144b',1,'tinyxml2::XMLElement']]], - ['queryunsigned64value_97',['QueryUnsigned64Value',['../classtinyxml2_1_1_x_m_l_attribute.html#af793c695e7ee65cf20b8010d38b1d157',1,'tinyxml2::XMLAttribute']]], - ['queryunsignedattribute_98',['QueryUnsignedAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a26fc84cbfba6769dafcfbf256c05e22f',1,'tinyxml2::XMLElement']]], - ['queryunsignedtext_99',['QueryUnsignedText',['../classtinyxml2_1_1_x_m_l_element.html#a14d38aa4b5e18a46274a27425188a6a1',1,'tinyxml2::XMLElement']]], - ['queryunsignedvalue_100',['QueryUnsignedValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a48a7f3496f1415832e451bd8d09c9cb9',1,'tinyxml2::XMLAttribute']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/all_e.js b/Engine/lib/tinyxml/docs/search/all_e.js deleted file mode 100644 index 0ccf8e1ac..000000000 --- a/Engine/lib/tinyxml/docs/search/all_e.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['read_20attributes_20and_20text_20information_2e_101',['Read attributes and text information.',['../_example_4.html',1,'']]], - ['rootelement_102',['RootElement',['../classtinyxml2_1_1_x_m_l_document.html#ad2b70320d3c2a071c2f36928edff3e1c',1,'tinyxml2::XMLDocument']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/all_f.js b/Engine/lib/tinyxml/docs/search/all_f.js deleted file mode 100644 index 54bdc74a8..000000000 --- a/Engine/lib/tinyxml/docs/search/all_f.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['savefile_103',['SaveFile',['../classtinyxml2_1_1_x_m_l_document.html#a73ac416b4a2aa0952e841220eb3da18f',1,'tinyxml2::XMLDocument::SaveFile(const char *filename, bool compact=false)'],['../classtinyxml2_1_1_x_m_l_document.html#a8b95779479a0035acc67b3a61dfe1b74',1,'tinyxml2::XMLDocument::SaveFile(FILE *fp, bool compact=false)']]], - ['setattribute_104',['SetAttribute',['../classtinyxml2_1_1_x_m_l_attribute.html#a406d2c4a13c7af99a65edb59dd9f7581',1,'tinyxml2::XMLAttribute::SetAttribute(const char *value)'],['../classtinyxml2_1_1_x_m_l_attribute.html#ad86d7d7058d76761c3a80662566a57e5',1,'tinyxml2::XMLAttribute::SetAttribute(int value)'],['../classtinyxml2_1_1_x_m_l_attribute.html#ae70468c0f6df2748ba3529c716999fae',1,'tinyxml2::XMLAttribute::SetAttribute(unsigned value)'],['../classtinyxml2_1_1_x_m_l_attribute.html#a7c1240f479722b9aa29b6c030aa116c2',1,'tinyxml2::XMLAttribute::SetAttribute(int64_t value)'],['../classtinyxml2_1_1_x_m_l_attribute.html#a10964060a5c0d92486ecf8705bdf37da',1,'tinyxml2::XMLAttribute::SetAttribute(uint64_t value)'],['../classtinyxml2_1_1_x_m_l_attribute.html#ab3516def4fe058fe328f2b89fc2d77da',1,'tinyxml2::XMLAttribute::SetAttribute(bool value)'],['../classtinyxml2_1_1_x_m_l_attribute.html#a9a65ab3147abe8ccbbd373ce8791e818',1,'tinyxml2::XMLAttribute::SetAttribute(double value)'],['../classtinyxml2_1_1_x_m_l_attribute.html#ae95e843313aaf5d56c32530b6456df02',1,'tinyxml2::XMLAttribute::SetAttribute(float value)'],['../classtinyxml2_1_1_x_m_l_element.html#a11943abf2d0831548c3790dd5d9f119c',1,'tinyxml2::XMLElement::SetAttribute(const char *name, const char *value)'],['../classtinyxml2_1_1_x_m_l_element.html#aae6568c64c7f1cc88be8461ba41a79cf',1,'tinyxml2::XMLElement::SetAttribute(const char *name, int value)'],['../classtinyxml2_1_1_x_m_l_element.html#ae143997e90064ba82326b29a9930ea8f',1,'tinyxml2::XMLElement::SetAttribute(const char *name, unsigned value)'],['../classtinyxml2_1_1_x_m_l_element.html#aaeefdf9171fec91b13a776b42299b0dd',1,'tinyxml2::XMLElement::SetAttribute(const char *name, int64_t value)'],['../classtinyxml2_1_1_x_m_l_element.html#ad598868c0599ddc4695dab18552c308d',1,'tinyxml2::XMLElement::SetAttribute(const char *name, uint64_t value)'],['../classtinyxml2_1_1_x_m_l_element.html#aa848b696e6a75e4e545c6da9893b11e1',1,'tinyxml2::XMLElement::SetAttribute(const char *name, bool value)'],['../classtinyxml2_1_1_x_m_l_element.html#a233397ee81e70eb5d4b814c5f8698533',1,'tinyxml2::XMLElement::SetAttribute(const char *name, double value)'],['../classtinyxml2_1_1_x_m_l_element.html#a554b70d882e65b28fc084b23df9b9759',1,'tinyxml2::XMLElement::SetAttribute(const char *name, float value)']]], - ['setbom_105',['SetBOM',['../classtinyxml2_1_1_x_m_l_document.html#a14419b698f7c4b140df4e80f3f0c93b0',1,'tinyxml2::XMLDocument']]], - ['setcdata_106',['SetCData',['../classtinyxml2_1_1_x_m_l_text.html#ad080357d76ab7cc59d7651249949329d',1,'tinyxml2::XMLText']]], - ['setname_107',['SetName',['../classtinyxml2_1_1_x_m_l_element.html#a97712009a530d8cb8a63bf705f02b4f1',1,'tinyxml2::XMLElement']]], - ['settext_108',['SetText',['../classtinyxml2_1_1_x_m_l_element.html#a1f9c2cd61b72af5ae708d37b7ad283ce',1,'tinyxml2::XMLElement::SetText(const char *inText)'],['../classtinyxml2_1_1_x_m_l_element.html#aeae8917b5ea6060b3c08d4e3d8d632d7',1,'tinyxml2::XMLElement::SetText(int value)'],['../classtinyxml2_1_1_x_m_l_element.html#a7bbfcc11d516598bc924a8fba4d08597',1,'tinyxml2::XMLElement::SetText(unsigned value)'],['../classtinyxml2_1_1_x_m_l_element.html#a7b62cd33acdfeff7ea2b1b330d4368e4',1,'tinyxml2::XMLElement::SetText(int64_t value)'],['../classtinyxml2_1_1_x_m_l_element.html#a6e615bc745afd1ca8ded56d7aac02657',1,'tinyxml2::XMLElement::SetText(uint64_t value)'],['../classtinyxml2_1_1_x_m_l_element.html#ae4b543d6770de76fb6ab68e541c192a4',1,'tinyxml2::XMLElement::SetText(bool value)'],['../classtinyxml2_1_1_x_m_l_element.html#a67bd77ac9aaeff58ff20b4275a65ba4e',1,'tinyxml2::XMLElement::SetText(double value)'],['../classtinyxml2_1_1_x_m_l_element.html#a51d560da5ae3ad6b75e0ab9ffb2ae42a',1,'tinyxml2::XMLElement::SetText(float value)']]], - ['setuserdata_109',['SetUserData',['../classtinyxml2_1_1_x_m_l_node.html#a002978fc889cc011d143185f2377eca2',1,'tinyxml2::XMLNode']]], - ['setvalue_110',['SetValue',['../classtinyxml2_1_1_x_m_l_node.html#a09dd68cf9eae137579f6e50f36487513',1,'tinyxml2::XMLNode']]], - ['shallowclone_111',['ShallowClone',['../classtinyxml2_1_1_x_m_l_node.html#a8402cbd3129d20e9e6024bbcc0531283',1,'tinyxml2::XMLNode::ShallowClone()'],['../classtinyxml2_1_1_x_m_l_text.html#af3a81ed4dd49d5151c477b3f265a3011',1,'tinyxml2::XMLText::ShallowClone()'],['../classtinyxml2_1_1_x_m_l_comment.html#a08991cc63fadf7e95078ac4f9ea1b073',1,'tinyxml2::XMLComment::ShallowClone()'],['../classtinyxml2_1_1_x_m_l_declaration.html#a118d47518dd9e522644e42efa259aed7',1,'tinyxml2::XMLDeclaration::ShallowClone()'],['../classtinyxml2_1_1_x_m_l_unknown.html#a0125f41c89763dea06619b5fd5246b4c',1,'tinyxml2::XMLUnknown::ShallowClone()'],['../classtinyxml2_1_1_x_m_l_element.html#ac035742d68b0c50c3f676374e59fe750',1,'tinyxml2::XMLElement::ShallowClone()'],['../classtinyxml2_1_1_x_m_l_document.html#aa37cc1709d7e1e988bc17dcfb24a69b8',1,'tinyxml2::XMLDocument::ShallowClone()']]], - ['shallowequal_112',['ShallowEqual',['../classtinyxml2_1_1_x_m_l_node.html#a7ce18b751c3ea09eac292dca264f9226',1,'tinyxml2::XMLNode::ShallowEqual()'],['../classtinyxml2_1_1_x_m_l_text.html#ae0fff8a24e2de7eb073fd192e9db0331',1,'tinyxml2::XMLText::ShallowEqual()'],['../classtinyxml2_1_1_x_m_l_comment.html#a6f7d227b25afa8cc3c763b7cc8833739',1,'tinyxml2::XMLComment::ShallowEqual()'],['../classtinyxml2_1_1_x_m_l_declaration.html#aa26b70011694e9b9e9480b929e9b78d6',1,'tinyxml2::XMLDeclaration::ShallowEqual()'],['../classtinyxml2_1_1_x_m_l_unknown.html#a0715ab2c05d7f74845c188122213b116',1,'tinyxml2::XMLUnknown::ShallowEqual()'],['../classtinyxml2_1_1_x_m_l_element.html#ad9ea913a460b48979bd83cf9871c99f6',1,'tinyxml2::XMLElement::ShallowEqual()'],['../classtinyxml2_1_1_x_m_l_document.html#a6fe5ef18699091844fcf64b56ffa5bf9',1,'tinyxml2::XMLDocument::ShallowEqual()']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/classes_0.js b/Engine/lib/tinyxml/docs/search/classes_0.js deleted file mode 100644 index a9be1214f..000000000 --- a/Engine/lib/tinyxml/docs/search/classes_0.js +++ /dev/null @@ -1,15 +0,0 @@ -var searchData= -[ - ['xmlattribute_142',['XMLAttribute',['../classtinyxml2_1_1_x_m_l_attribute.html',1,'tinyxml2']]], - ['xmlcomment_143',['XMLComment',['../classtinyxml2_1_1_x_m_l_comment.html',1,'tinyxml2']]], - ['xmlconsthandle_144',['XMLConstHandle',['../classtinyxml2_1_1_x_m_l_const_handle.html',1,'tinyxml2']]], - ['xmldeclaration_145',['XMLDeclaration',['../classtinyxml2_1_1_x_m_l_declaration.html',1,'tinyxml2']]], - ['xmldocument_146',['XMLDocument',['../classtinyxml2_1_1_x_m_l_document.html',1,'tinyxml2']]], - ['xmlelement_147',['XMLElement',['../classtinyxml2_1_1_x_m_l_element.html',1,'tinyxml2']]], - ['xmlhandle_148',['XMLHandle',['../classtinyxml2_1_1_x_m_l_handle.html',1,'tinyxml2']]], - ['xmlnode_149',['XMLNode',['../classtinyxml2_1_1_x_m_l_node.html',1,'tinyxml2']]], - ['xmlprinter_150',['XMLPrinter',['../classtinyxml2_1_1_x_m_l_printer.html',1,'tinyxml2']]], - ['xmltext_151',['XMLText',['../classtinyxml2_1_1_x_m_l_text.html',1,'tinyxml2']]], - ['xmlunknown_152',['XMLUnknown',['../classtinyxml2_1_1_x_m_l_unknown.html',1,'tinyxml2']]], - ['xmlvisitor_153',['XMLVisitor',['../classtinyxml2_1_1_x_m_l_visitor.html',1,'tinyxml2']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/functions_0.js b/Engine/lib/tinyxml/docs/search/functions_0.js deleted file mode 100644 index 782a66289..000000000 --- a/Engine/lib/tinyxml/docs/search/functions_0.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['accept_154',['Accept',['../classtinyxml2_1_1_x_m_l_node.html#a81e66df0a44c67a7af17f3b77a152785',1,'tinyxml2::XMLNode::Accept()'],['../classtinyxml2_1_1_x_m_l_text.html#a1b2c1448f1a21299d0a7913f18b55206',1,'tinyxml2::XMLText::Accept()'],['../classtinyxml2_1_1_x_m_l_comment.html#a4a33dc32fae0285b03f9cfcb3e43e122',1,'tinyxml2::XMLComment::Accept()'],['../classtinyxml2_1_1_x_m_l_declaration.html#a5f376019fb34752eb248548f42f32045',1,'tinyxml2::XMLDeclaration::Accept()'],['../classtinyxml2_1_1_x_m_l_unknown.html#a70983aa1b1cff3d3aa6d4d0a80e5ee48',1,'tinyxml2::XMLUnknown::Accept()'],['../classtinyxml2_1_1_x_m_l_element.html#a3ea8a40e788fb9ad876c28a32932c6d5',1,'tinyxml2::XMLElement::Accept()'],['../classtinyxml2_1_1_x_m_l_document.html#a9efa54f7ecb37c17ab1fa2b3078ccca1',1,'tinyxml2::XMLDocument::Accept()']]], - ['attribute_155',['Attribute',['../classtinyxml2_1_1_x_m_l_element.html#a70e49ed60b11212ae35f7e354cfe1de9',1,'tinyxml2::XMLElement']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/functions_1.js b/Engine/lib/tinyxml/docs/search/functions_1.js deleted file mode 100644 index 44f3cf941..000000000 --- a/Engine/lib/tinyxml/docs/search/functions_1.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['boolattribute_156',['BoolAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a53eda26131e1ad1031ef8ec8adb51bd8',1,'tinyxml2::XMLElement']]], - ['booltext_157',['BoolText',['../classtinyxml2_1_1_x_m_l_element.html#a68569f59f6382bcea7f5013ec59736d2',1,'tinyxml2::XMLElement']]], - ['boolvalue_158',['BoolValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a98ce5207344ad33a265b0422addae1ff',1,'tinyxml2::XMLAttribute']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/functions_10.js b/Engine/lib/tinyxml/docs/search/functions_10.js deleted file mode 100644 index d3cd46f95..000000000 --- a/Engine/lib/tinyxml/docs/search/functions_10.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['tocomment_263',['ToComment',['../classtinyxml2_1_1_x_m_l_node.html#aff47671055aa99840a1c1ebd661e63e3',1,'tinyxml2::XMLNode::ToComment()'],['../classtinyxml2_1_1_x_m_l_comment.html#a8093e1dc8a34fa446d9dc3fde0e6c0ee',1,'tinyxml2::XMLComment::ToComment()']]], - ['todeclaration_264',['ToDeclaration',['../classtinyxml2_1_1_x_m_l_node.html#a174fd4c22c010b58138c1b84a0dfbd51',1,'tinyxml2::XMLNode::ToDeclaration()'],['../classtinyxml2_1_1_x_m_l_declaration.html#a159d8ac45865215e88059ea1e5b52fc5',1,'tinyxml2::XMLDeclaration::ToDeclaration()'],['../classtinyxml2_1_1_x_m_l_handle.html#a108858be7ee3eb53f73b5194c1aa8ff0',1,'tinyxml2::XMLHandle::ToDeclaration()']]], - ['todocument_265',['ToDocument',['../classtinyxml2_1_1_x_m_l_node.html#a836e2966ed736fc3c94f70e12a2a3357',1,'tinyxml2::XMLNode::ToDocument()'],['../classtinyxml2_1_1_x_m_l_document.html#a3e185f880882bd978367bb55937735ec',1,'tinyxml2::XMLDocument::ToDocument()']]], - ['toelement_266',['ToElement',['../classtinyxml2_1_1_x_m_l_node.html#aab516e699567f75cc9ab2ef2eee501e8',1,'tinyxml2::XMLNode::ToElement()'],['../classtinyxml2_1_1_x_m_l_element.html#ad9ff5c2dbc15df36cf664ce1b0ea0a5d',1,'tinyxml2::XMLElement::ToElement()'],['../classtinyxml2_1_1_x_m_l_handle.html#a5e73ed8f3f6f9619d5a8bb1862c47d99',1,'tinyxml2::XMLHandle::ToElement()']]], - ['tonode_267',['ToNode',['../classtinyxml2_1_1_x_m_l_handle.html#a03ea6ec970a021b71bf1219a0f6717df',1,'tinyxml2::XMLHandle']]], - ['totext_268',['ToText',['../classtinyxml2_1_1_x_m_l_node.html#a41c55dab9162d1eb62db2008430e376b',1,'tinyxml2::XMLNode::ToText()'],['../classtinyxml2_1_1_x_m_l_text.html#ab1213b4ddebe9b17ec7e7040e9f1caf7',1,'tinyxml2::XMLText::ToText()'],['../classtinyxml2_1_1_x_m_l_handle.html#a6ab9e8cbfb41417246e5657e3842c62a',1,'tinyxml2::XMLHandle::ToText()']]], - ['tounknown_269',['ToUnknown',['../classtinyxml2_1_1_x_m_l_node.html#a8675a74aa0ada6eccab0c77ef3e5b9bd',1,'tinyxml2::XMLNode::ToUnknown()'],['../classtinyxml2_1_1_x_m_l_unknown.html#af4374856421921cad578c8affae872b6',1,'tinyxml2::XMLUnknown::ToUnknown()'],['../classtinyxml2_1_1_x_m_l_handle.html#aa387368a1ad8d843a9f12df863d298de',1,'tinyxml2::XMLHandle::ToUnknown()']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/functions_11.js b/Engine/lib/tinyxml/docs/search/functions_11.js deleted file mode 100644 index 11799315f..000000000 --- a/Engine/lib/tinyxml/docs/search/functions_11.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['unsigned64attribute_270',['Unsigned64Attribute',['../classtinyxml2_1_1_x_m_l_element.html#a226502bab8f1be7ede1fdd255398eb85',1,'tinyxml2::XMLElement']]], - ['unsigned64text_271',['Unsigned64Text',['../classtinyxml2_1_1_x_m_l_element.html#af48c1023abbac1acdf4927c51c3a5f0c',1,'tinyxml2::XMLElement']]], - ['unsignedattribute_272',['UnsignedAttribute',['../classtinyxml2_1_1_x_m_l_element.html#afea43a1d4aa33e3703ddee5fc9adc26c',1,'tinyxml2::XMLElement']]], - ['unsignedtext_273',['UnsignedText',['../classtinyxml2_1_1_x_m_l_element.html#a49bad014ffcc17b0b6119d5b2c97dfb5',1,'tinyxml2::XMLElement']]], - ['unsignedvalue_274',['UnsignedValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a0be5343b08a957c42c02c5d32c35d338',1,'tinyxml2::XMLAttribute']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/functions_12.js b/Engine/lib/tinyxml/docs/search/functions_12.js deleted file mode 100644 index 6ec91512c..000000000 --- a/Engine/lib/tinyxml/docs/search/functions_12.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['value_275',['Value',['../classtinyxml2_1_1_x_m_l_node.html#a66344989a4b436155bcda72bd6b07b82',1,'tinyxml2::XMLNode::Value()'],['../classtinyxml2_1_1_x_m_l_attribute.html#a1aab1dd0e43ecbcfa306adbcf3a3d853',1,'tinyxml2::XMLAttribute::Value()']]], - ['visit_276',['Visit',['../classtinyxml2_1_1_x_m_l_visitor.html#adc75bd459fc7ba8223b50f0616767f9a',1,'tinyxml2::XMLVisitor::Visit(const XMLDeclaration &)'],['../classtinyxml2_1_1_x_m_l_visitor.html#af30233565856480ea48b6fa0d6dec65b',1,'tinyxml2::XMLVisitor::Visit(const XMLText &)'],['../classtinyxml2_1_1_x_m_l_visitor.html#acc8147fb5a85f6c65721654e427752d7',1,'tinyxml2::XMLVisitor::Visit(const XMLComment &)'],['../classtinyxml2_1_1_x_m_l_visitor.html#a14e4748387c34bf53d24e8119bb1f292',1,'tinyxml2::XMLVisitor::Visit(const XMLUnknown &)'],['../classtinyxml2_1_1_x_m_l_printer.html#a275ae25544a12199ae40b6994ca6e4de',1,'tinyxml2::XMLPrinter::Visit(const XMLText &text)'],['../classtinyxml2_1_1_x_m_l_printer.html#a3f16a30be1537ac141d9bd2db824ba9e',1,'tinyxml2::XMLPrinter::Visit(const XMLComment &comment)'],['../classtinyxml2_1_1_x_m_l_printer.html#a9ceff5cd85e5db65838962174fcdcc46',1,'tinyxml2::XMLPrinter::Visit(const XMLDeclaration &declaration)'],['../classtinyxml2_1_1_x_m_l_printer.html#aa15e1da81e17dea5da6499ac5b08d9d8',1,'tinyxml2::XMLPrinter::Visit(const XMLUnknown &unknown)']]], - ['visitenter_277',['VisitEnter',['../classtinyxml2_1_1_x_m_l_visitor.html#acb3c22fc5f60eb9db98f533f2761f67d',1,'tinyxml2::XMLVisitor::VisitEnter(const XMLDocument &)'],['../classtinyxml2_1_1_x_m_l_visitor.html#af97980a17dd4e37448b181f5ddfa92b5',1,'tinyxml2::XMLVisitor::VisitEnter(const XMLElement &, const XMLAttribute *)'],['../classtinyxml2_1_1_x_m_l_printer.html#ae966b988a7a28c41e91c5ca17fb2054b',1,'tinyxml2::XMLPrinter::VisitEnter(const XMLDocument &)'],['../classtinyxml2_1_1_x_m_l_printer.html#a2ce2aa508c21ac91615093ddb9c282c5',1,'tinyxml2::XMLPrinter::VisitEnter(const XMLElement &element, const XMLAttribute *attribute)']]], - ['visitexit_278',['VisitExit',['../classtinyxml2_1_1_x_m_l_visitor.html#a170e9989cd046ba904f302d087e07086',1,'tinyxml2::XMLVisitor::VisitExit(const XMLDocument &)'],['../classtinyxml2_1_1_x_m_l_visitor.html#a772f10ddc83f881956d32628faa16eb6',1,'tinyxml2::XMLVisitor::VisitExit(const XMLElement &)'],['../classtinyxml2_1_1_x_m_l_printer.html#a15fc1f2b922f540917dcf52808737b29',1,'tinyxml2::XMLPrinter::VisitExit(const XMLDocument &)'],['../classtinyxml2_1_1_x_m_l_printer.html#ae99e0a7086543591edfb565f24689098',1,'tinyxml2::XMLPrinter::VisitExit(const XMLElement &element)']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/functions_13.js b/Engine/lib/tinyxml/docs/search/functions_13.js deleted file mode 100644 index 195574aa7..000000000 --- a/Engine/lib/tinyxml/docs/search/functions_13.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['xmldocument_279',['XMLDocument',['../classtinyxml2_1_1_x_m_l_document.html#a57ddf17b6e054dda10af98991b1b8f70',1,'tinyxml2::XMLDocument']]], - ['xmlhandle_280',['XMLHandle',['../classtinyxml2_1_1_x_m_l_handle.html#a9c240a35c18f053509b4b97ddccd9793',1,'tinyxml2::XMLHandle::XMLHandle(XMLNode *node)'],['../classtinyxml2_1_1_x_m_l_handle.html#aa2edbc1c0d3e3e8259bd98de7f1cf500',1,'tinyxml2::XMLHandle::XMLHandle(XMLNode &node)'],['../classtinyxml2_1_1_x_m_l_handle.html#afd8e01e6018c07347b8e6d80272466aa',1,'tinyxml2::XMLHandle::XMLHandle(const XMLHandle &ref)']]], - ['xmlprinter_281',['XMLPrinter',['../classtinyxml2_1_1_x_m_l_printer.html#aa6d3841c069085f5b8a27bc7103c04f7',1,'tinyxml2::XMLPrinter']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/functions_2.js b/Engine/lib/tinyxml/docs/search/functions_2.js deleted file mode 100644 index 497e75a70..000000000 --- a/Engine/lib/tinyxml/docs/search/functions_2.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['cdata_159',['CData',['../classtinyxml2_1_1_x_m_l_text.html#ac1bb5ea4166c320882d9e0ad16fd385b',1,'tinyxml2::XMLText']]], - ['clear_160',['Clear',['../classtinyxml2_1_1_x_m_l_document.html#a65656b0b2cbc822708eb351504178aaf',1,'tinyxml2::XMLDocument']]], - ['clearbuffer_161',['ClearBuffer',['../classtinyxml2_1_1_x_m_l_printer.html#a690cb140ba98b7339734ff865f56b0b3',1,'tinyxml2::XMLPrinter']]], - ['clearerror_162',['ClearError',['../classtinyxml2_1_1_x_m_l_document.html#a4085d9c52f1d93214311459d6d1fcf17',1,'tinyxml2::XMLDocument']]], - ['closeelement_163',['CloseElement',['../classtinyxml2_1_1_x_m_l_printer.html#ad04d29562b46fcdb23ab320f8b664240',1,'tinyxml2::XMLPrinter']]], - ['cstr_164',['CStr',['../classtinyxml2_1_1_x_m_l_printer.html#a180671d73844f159f2d4aafbc11d106e',1,'tinyxml2::XMLPrinter']]], - ['cstrsize_165',['CStrSize',['../classtinyxml2_1_1_x_m_l_printer.html#a3256cf3523d4898b91abb18b924be04c',1,'tinyxml2::XMLPrinter']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/functions_3.js b/Engine/lib/tinyxml/docs/search/functions_3.js deleted file mode 100644 index f54c8935e..000000000 --- a/Engine/lib/tinyxml/docs/search/functions_3.js +++ /dev/null @@ -1,12 +0,0 @@ -var searchData= -[ - ['deepclone_166',['DeepClone',['../classtinyxml2_1_1_x_m_l_node.html#a62c71b6bf8734b5424063b8d9a61c266',1,'tinyxml2::XMLNode']]], - ['deepcopy_167',['DeepCopy',['../classtinyxml2_1_1_x_m_l_document.html#af592ffc91514e25a39664521ac83db45',1,'tinyxml2::XMLDocument']]], - ['deleteattribute_168',['DeleteAttribute',['../classtinyxml2_1_1_x_m_l_element.html#aebd45aa7118964c30b32fe12e944628a',1,'tinyxml2::XMLElement']]], - ['deletechild_169',['DeleteChild',['../classtinyxml2_1_1_x_m_l_node.html#a363b6edbd6ebd55f8387d2b89f2b0921',1,'tinyxml2::XMLNode']]], - ['deletechildren_170',['DeleteChildren',['../classtinyxml2_1_1_x_m_l_node.html#a0360085cc54df5bff85d5c5da13afdce',1,'tinyxml2::XMLNode']]], - ['deletenode_171',['DeleteNode',['../classtinyxml2_1_1_x_m_l_document.html#ac1d6e2c7fcc1a660624ac4f68e96380d',1,'tinyxml2::XMLDocument']]], - ['doubleattribute_172',['DoubleAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a10a90c505aea716bf073eea1c97f33b5',1,'tinyxml2::XMLElement']]], - ['doubletext_173',['DoubleText',['../classtinyxml2_1_1_x_m_l_element.html#a81b1ff0cf2f2cd09be8badc08b39a2b7',1,'tinyxml2::XMLElement']]], - ['doublevalue_174',['DoubleValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a4aa73513f54ff0087d3e804f0f54e30f',1,'tinyxml2::XMLAttribute']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/functions_4.js b/Engine/lib/tinyxml/docs/search/functions_4.js deleted file mode 100644 index 55d93b477..000000000 --- a/Engine/lib/tinyxml/docs/search/functions_4.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['error_175',['Error',['../classtinyxml2_1_1_x_m_l_document.html#a34e6318e182e40e3cc4f4ba5d59ed9ed',1,'tinyxml2::XMLDocument']]], - ['errorid_176',['ErrorID',['../classtinyxml2_1_1_x_m_l_document.html#afa3ed33b3107f920ec2b301f805ac17d',1,'tinyxml2::XMLDocument']]], - ['errorlinenum_177',['ErrorLineNum',['../classtinyxml2_1_1_x_m_l_document.html#a57400f816dbe7799ece33615ead9ab76',1,'tinyxml2::XMLDocument']]], - ['errorstr_178',['ErrorStr',['../classtinyxml2_1_1_x_m_l_document.html#ad75aa9d32c4e8b300655186808aa9abf',1,'tinyxml2::XMLDocument']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/functions_5.js b/Engine/lib/tinyxml/docs/search/functions_5.js deleted file mode 100644 index 6a7db0b85..000000000 --- a/Engine/lib/tinyxml/docs/search/functions_5.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['findattribute_179',['FindAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a2dcd4d5d6fb63396cd2f257c318b42c4',1,'tinyxml2::XMLElement']]], - ['firstattribute_180',['FirstAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a3e191704c8d499906ec11fe2f60c6686',1,'tinyxml2::XMLElement']]], - ['firstchild_181',['FirstChild',['../classtinyxml2_1_1_x_m_l_node.html#ae7dc225e1018cdd685f7563593a1fe08',1,'tinyxml2::XMLNode::FirstChild()'],['../classtinyxml2_1_1_x_m_l_handle.html#a536447dc7f54c0cd11e031dad94795ae',1,'tinyxml2::XMLHandle::FirstChild()']]], - ['firstchildelement_182',['FirstChildElement',['../classtinyxml2_1_1_x_m_l_node.html#a1795a35852dc8aae877cc8ded986e59b',1,'tinyxml2::XMLNode::FirstChildElement()'],['../classtinyxml2_1_1_x_m_l_handle.html#a74b04dd0f15e0bf01860e282b840b6a3',1,'tinyxml2::XMLHandle::FirstChildElement()']]], - ['floatattribute_183',['FloatAttribute',['../classtinyxml2_1_1_x_m_l_element.html#ab1f4be2332e27dc640e9b6abd01d64dd',1,'tinyxml2::XMLElement']]], - ['floattext_184',['FloatText',['../classtinyxml2_1_1_x_m_l_element.html#a45444eb21f99ca46101545992dc2e927',1,'tinyxml2::XMLElement']]], - ['floatvalue_185',['FloatValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a27797b45d21c981257720db94f5f8801',1,'tinyxml2::XMLAttribute']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/functions_6.js b/Engine/lib/tinyxml/docs/search/functions_6.js deleted file mode 100644 index 71d809055..000000000 --- a/Engine/lib/tinyxml/docs/search/functions_6.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['getdocument_186',['GetDocument',['../classtinyxml2_1_1_x_m_l_node.html#a2de84cfa4ec3fe249bad745069d145f1',1,'tinyxml2::XMLNode::GetDocument() const'],['../classtinyxml2_1_1_x_m_l_node.html#af343d1ef0b45c0020e62d784d7e67a68',1,'tinyxml2::XMLNode::GetDocument()']]], - ['getlinenum_187',['GetLineNum',['../classtinyxml2_1_1_x_m_l_node.html#a9b5fc636646fda761d342c72e91cb286',1,'tinyxml2::XMLNode::GetLineNum()'],['../classtinyxml2_1_1_x_m_l_attribute.html#a02d5ea924586e35f9c13857d1671b765',1,'tinyxml2::XMLAttribute::GetLineNum()']]], - ['gettext_188',['GetText',['../classtinyxml2_1_1_x_m_l_element.html#a6d5c8d115561ade4e4456b71d91b6f51',1,'tinyxml2::XMLElement']]], - ['getuserdata_189',['GetUserData',['../classtinyxml2_1_1_x_m_l_node.html#a7f0687574afa03bc479dc44f29db0afe',1,'tinyxml2::XMLNode']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/functions_7.js b/Engine/lib/tinyxml/docs/search/functions_7.js deleted file mode 100644 index 676d3b56b..000000000 --- a/Engine/lib/tinyxml/docs/search/functions_7.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['hasbom_190',['HasBOM',['../classtinyxml2_1_1_x_m_l_document.html#a33fc5d159db873a179fa26338adb05bd',1,'tinyxml2::XMLDocument']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/functions_8.js b/Engine/lib/tinyxml/docs/search/functions_8.js deleted file mode 100644 index f64483102..000000000 --- a/Engine/lib/tinyxml/docs/search/functions_8.js +++ /dev/null @@ -1,15 +0,0 @@ -var searchData= -[ - ['insertafterchild_191',['InsertAfterChild',['../classtinyxml2_1_1_x_m_l_node.html#a85adb8f0b7477eec30f9a41d420b09c2',1,'tinyxml2::XMLNode']]], - ['insertendchild_192',['InsertEndChild',['../classtinyxml2_1_1_x_m_l_node.html#aeb249ed60f4e8bfad3709151c3ee4286',1,'tinyxml2::XMLNode']]], - ['insertfirstchild_193',['InsertFirstChild',['../classtinyxml2_1_1_x_m_l_node.html#a8ff7dc071f3a1a6ae2ac25a37492865d',1,'tinyxml2::XMLNode']]], - ['insertnewchildelement_194',['InsertNewChildElement',['../classtinyxml2_1_1_x_m_l_element.html#abc9506eff9780f666f49dc3d5e5cae13',1,'tinyxml2::XMLElement']]], - ['insertnewcomment_195',['InsertNewComment',['../classtinyxml2_1_1_x_m_l_element.html#ae4f2c2e781b8dc030411d84cd20fa46d',1,'tinyxml2::XMLElement']]], - ['insertnewdeclaration_196',['InsertNewDeclaration',['../classtinyxml2_1_1_x_m_l_element.html#adec237e788b50c4ed73c918a166adde6',1,'tinyxml2::XMLElement']]], - ['insertnewtext_197',['InsertNewText',['../classtinyxml2_1_1_x_m_l_element.html#a189e155810fc9fdd4da1409cbadee187',1,'tinyxml2::XMLElement']]], - ['insertnewunknown_198',['InsertNewUnknown',['../classtinyxml2_1_1_x_m_l_element.html#acaa5fe3957760e68185006965e2c11c2',1,'tinyxml2::XMLElement']]], - ['int64attribute_199',['Int64Attribute',['../classtinyxml2_1_1_x_m_l_element.html#a66d96972adecd816194191f13cc4a0a0',1,'tinyxml2::XMLElement']]], - ['int64text_200',['Int64Text',['../classtinyxml2_1_1_x_m_l_element.html#aab6151f7e3b4c2c0a8234e262d7b6b8a',1,'tinyxml2::XMLElement']]], - ['intattribute_201',['IntAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a95a89b13bb14a2d4655e2b5b406c00d4',1,'tinyxml2::XMLElement']]], - ['intvalue_202',['IntValue',['../classtinyxml2_1_1_x_m_l_attribute.html#adfa2433f0fdafd5c3880936de9affa80',1,'tinyxml2::XMLAttribute']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/functions_9.js b/Engine/lib/tinyxml/docs/search/functions_9.js deleted file mode 100644 index 1cf1c10be..000000000 --- a/Engine/lib/tinyxml/docs/search/functions_9.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['lastchild_203',['LastChild',['../classtinyxml2_1_1_x_m_l_node.html#a9b8583a277e8e26f4cbbb5492786778e',1,'tinyxml2::XMLNode::LastChild()'],['../classtinyxml2_1_1_x_m_l_handle.html#a9d09f04435f0f2f7d0816b0198d0517b',1,'tinyxml2::XMLHandle::LastChild()']]], - ['lastchildelement_204',['LastChildElement',['../classtinyxml2_1_1_x_m_l_node.html#a173e9d1341bc56992e2d320a35936551',1,'tinyxml2::XMLNode::LastChildElement()'],['../classtinyxml2_1_1_x_m_l_handle.html#a42cccd0ce8b1ce704f431025e9f19e0c',1,'tinyxml2::XMLHandle::LastChildElement()']]], - ['loadfile_205',['LoadFile',['../classtinyxml2_1_1_x_m_l_document.html#a2ebd4647a8af5fc6831b294ac26a150a',1,'tinyxml2::XMLDocument::LoadFile(const char *filename)'],['../classtinyxml2_1_1_x_m_l_document.html#a5f1d330fad44c52f3d265338dd2a6dc2',1,'tinyxml2::XMLDocument::LoadFile(FILE *)']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/functions_a.js b/Engine/lib/tinyxml/docs/search/functions_a.js deleted file mode 100644 index 28686f0d4..000000000 --- a/Engine/lib/tinyxml/docs/search/functions_a.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['name_206',['Name',['../classtinyxml2_1_1_x_m_l_attribute.html#ab886c486ec19f02ed826f8dc129e5ad8',1,'tinyxml2::XMLAttribute::Name()'],['../classtinyxml2_1_1_x_m_l_element.html#a63e057fb5baee1dd29f323cb85907b35',1,'tinyxml2::XMLElement::Name()']]], - ['newcomment_207',['NewComment',['../classtinyxml2_1_1_x_m_l_document.html#ade4874bcb439954972ef2b3723ff3259',1,'tinyxml2::XMLDocument']]], - ['newdeclaration_208',['NewDeclaration',['../classtinyxml2_1_1_x_m_l_document.html#aee2eb3435923f5494dcc70ac225b60a2',1,'tinyxml2::XMLDocument']]], - ['newelement_209',['NewElement',['../classtinyxml2_1_1_x_m_l_document.html#a8aa7817d4a1001364b06373763ab99d6',1,'tinyxml2::XMLDocument']]], - ['newtext_210',['NewText',['../classtinyxml2_1_1_x_m_l_document.html#ab7e8b29ae4099092a8bb947da6361296',1,'tinyxml2::XMLDocument']]], - ['newunknown_211',['NewUnknown',['../classtinyxml2_1_1_x_m_l_document.html#a5385c937734ff6db9226ab707d2c7147',1,'tinyxml2::XMLDocument']]], - ['next_212',['Next',['../classtinyxml2_1_1_x_m_l_attribute.html#aee53571b21e7ce5421eb929523a8bbe6',1,'tinyxml2::XMLAttribute']]], - ['nextsibling_213',['NextSibling',['../classtinyxml2_1_1_x_m_l_node.html#a79db9ef0fe014d27790f2218b87bcbb5',1,'tinyxml2::XMLNode::NextSibling()'],['../classtinyxml2_1_1_x_m_l_handle.html#aad2eccc7c7c7b18145877c978c3850b5',1,'tinyxml2::XMLHandle::NextSibling()']]], - ['nextsiblingelement_214',['NextSiblingElement',['../classtinyxml2_1_1_x_m_l_node.html#a1264c86233328f0cd36297552d982f80',1,'tinyxml2::XMLNode::NextSiblingElement()'],['../classtinyxml2_1_1_x_m_l_handle.html#ae41d88ee061f3c49a081630ff753b2c5',1,'tinyxml2::XMLHandle::NextSiblingElement()']]], - ['nochildren_215',['NoChildren',['../classtinyxml2_1_1_x_m_l_node.html#ac3ab489e6e202a3cd1762d3b332e89d4',1,'tinyxml2::XMLNode']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/functions_b.js b/Engine/lib/tinyxml/docs/search/functions_b.js deleted file mode 100644 index 22db1d696..000000000 --- a/Engine/lib/tinyxml/docs/search/functions_b.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['openelement_216',['OpenElement',['../classtinyxml2_1_1_x_m_l_printer.html#a20fb06c83bd13e5140d7dd13af06c010',1,'tinyxml2::XMLPrinter']]], - ['operator_3d_217',['operator=',['../classtinyxml2_1_1_x_m_l_handle.html#a75b908322bb4b83be3281b6845252b20',1,'tinyxml2::XMLHandle']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/functions_c.js b/Engine/lib/tinyxml/docs/search/functions_c.js deleted file mode 100644 index ffa085637..000000000 --- a/Engine/lib/tinyxml/docs/search/functions_c.js +++ /dev/null @@ -1,14 +0,0 @@ -var searchData= -[ - ['parent_218',['Parent',['../classtinyxml2_1_1_x_m_l_node.html#ae0f62bc186c56c2e0483ebd52dbfbe34',1,'tinyxml2::XMLNode']]], - ['parse_219',['Parse',['../classtinyxml2_1_1_x_m_l_document.html#af2b616169e6517182f6725f2498e9a01',1,'tinyxml2::XMLDocument']]], - ['previoussibling_220',['PreviousSibling',['../classtinyxml2_1_1_x_m_l_node.html#aac667c513d445f8b783e1e15ef9d3551',1,'tinyxml2::XMLNode::PreviousSibling()'],['../classtinyxml2_1_1_x_m_l_handle.html#a428374e756f4db4cbc287fec64eae02c',1,'tinyxml2::XMLHandle::PreviousSibling()']]], - ['previoussiblingelement_221',['PreviousSiblingElement',['../classtinyxml2_1_1_x_m_l_node.html#a872936cae46fb473eb47fec99129fc70',1,'tinyxml2::XMLNode::PreviousSiblingElement()'],['../classtinyxml2_1_1_x_m_l_handle.html#a786957e498039554ed334cdc36612a7e',1,'tinyxml2::XMLHandle::PreviousSiblingElement()']]], - ['print_222',['Print',['../classtinyxml2_1_1_x_m_l_document.html#a867cf5fa3e3ff6ae4847a8b7ee8ec083',1,'tinyxml2::XMLDocument']]], - ['printerror_223',['PrintError',['../classtinyxml2_1_1_x_m_l_document.html#a1d033945b42e125d933d6231e4571552',1,'tinyxml2::XMLDocument']]], - ['printspace_224',['PrintSpace',['../classtinyxml2_1_1_x_m_l_printer.html#a01148e2ebe6776e38c5a3e41bc5feb74',1,'tinyxml2::XMLPrinter']]], - ['pushattribute_225',['PushAttribute',['../classtinyxml2_1_1_x_m_l_printer.html#a9a4e2c9348b42e147629d5a99f4af3f0',1,'tinyxml2::XMLPrinter']]], - ['pushcomment_226',['PushComment',['../classtinyxml2_1_1_x_m_l_printer.html#afc8416814219591c2fd5656e0c233140',1,'tinyxml2::XMLPrinter']]], - ['pushheader_227',['PushHeader',['../classtinyxml2_1_1_x_m_l_printer.html#a178c608ce8476043d5d6513819cde903',1,'tinyxml2::XMLPrinter']]], - ['pushtext_228',['PushText',['../classtinyxml2_1_1_x_m_l_printer.html#a1cc16a9362df4332012cb13cff6441b3',1,'tinyxml2::XMLPrinter::PushText(const char *text, bool cdata=false)'],['../classtinyxml2_1_1_x_m_l_printer.html#a3e0d4d78de25d4cf081009e1431cea7e',1,'tinyxml2::XMLPrinter::PushText(int value)'],['../classtinyxml2_1_1_x_m_l_printer.html#a661fb50e7e0a4918d2d259cb0fae647e',1,'tinyxml2::XMLPrinter::PushText(unsigned value)'],['../classtinyxml2_1_1_x_m_l_printer.html#a96b0a0bfe105154a0a6c37d725258f0a',1,'tinyxml2::XMLPrinter::PushText(int64_t value)'],['../classtinyxml2_1_1_x_m_l_printer.html#a60b0a4cf57371ff8679c2c7556ccb708',1,'tinyxml2::XMLPrinter::PushText(uint64_t value)'],['../classtinyxml2_1_1_x_m_l_printer.html#a4390e5fa1ed05189a8686647345ab29f',1,'tinyxml2::XMLPrinter::PushText(bool value)'],['../classtinyxml2_1_1_x_m_l_printer.html#a1dbb1390e829d0673af66b9cd1928bd7',1,'tinyxml2::XMLPrinter::PushText(float value)'],['../classtinyxml2_1_1_x_m_l_printer.html#aa715302dfc09473c77c853cbd5431965',1,'tinyxml2::XMLPrinter::PushText(double value)']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/functions_d.js b/Engine/lib/tinyxml/docs/search/functions_d.js deleted file mode 100644 index 080168cc5..000000000 --- a/Engine/lib/tinyxml/docs/search/functions_d.js +++ /dev/null @@ -1,26 +0,0 @@ -var searchData= -[ - ['queryattribute_229',['QueryAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a5b7df3bed2b8954eabf227fa204522eb',1,'tinyxml2::XMLElement']]], - ['queryboolattribute_230',['QueryBoolAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a14c1bb77c39689838be01838d86ca872',1,'tinyxml2::XMLElement']]], - ['querybooltext_231',['QueryBoolText',['../classtinyxml2_1_1_x_m_l_element.html#a3fe5417d59eb8f5c4afe924b7d332736',1,'tinyxml2::XMLElement']]], - ['queryboolvalue_232',['QueryBoolValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a5f32e038954256f61c21ff20fd13a09c',1,'tinyxml2::XMLAttribute']]], - ['querydoubleattribute_233',['QueryDoubleAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a5f0964e2dbd8e2ee7fce9beab689443c',1,'tinyxml2::XMLElement']]], - ['querydoubletext_234',['QueryDoubleText',['../classtinyxml2_1_1_x_m_l_element.html#a684679c99bb036a25652744cec6c4d96',1,'tinyxml2::XMLElement']]], - ['querydoublevalue_235',['QueryDoubleValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a2aa6e55e8ea03af0609cf6690bff79b9',1,'tinyxml2::XMLAttribute']]], - ['queryfloatattribute_236',['QueryFloatAttribute',['../classtinyxml2_1_1_x_m_l_element.html#acd5eeddf6002ef90806af794b9d9a5a5',1,'tinyxml2::XMLElement']]], - ['queryfloattext_237',['QueryFloatText',['../classtinyxml2_1_1_x_m_l_element.html#afa332afedd93210daa6d44b88eb11e29',1,'tinyxml2::XMLElement']]], - ['queryfloatvalue_238',['QueryFloatValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a049dea6449a6259b6cfed44a9427b607',1,'tinyxml2::XMLAttribute']]], - ['queryint64attribute_239',['QueryInt64Attribute',['../classtinyxml2_1_1_x_m_l_element.html#a7c0955d80b6f8d196744eacb0f6e90a8',1,'tinyxml2::XMLElement']]], - ['queryint64text_240',['QueryInt64Text',['../classtinyxml2_1_1_x_m_l_element.html#a120c538c8eead169e635dbc70fb226d8',1,'tinyxml2::XMLElement']]], - ['queryint64value_241',['QueryInt64Value',['../classtinyxml2_1_1_x_m_l_attribute.html#a4e25344d6e4159026be34dbddf1dcac2',1,'tinyxml2::XMLAttribute']]], - ['queryintattribute_242',['QueryIntAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a8a78bc1187c1c45ad89f2690eab567b1',1,'tinyxml2::XMLElement']]], - ['queryinttext_243',['QueryIntText',['../classtinyxml2_1_1_x_m_l_element.html#a926357996bef633cb736e1a558419632',1,'tinyxml2::XMLElement']]], - ['queryintvalue_244',['QueryIntValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a6d5176260db00ea301c01af8457cd993',1,'tinyxml2::XMLAttribute']]], - ['querystringattribute_245',['QueryStringAttribute',['../classtinyxml2_1_1_x_m_l_element.html#adb8ae765f98d0c5037faec48deea78bc',1,'tinyxml2::XMLElement']]], - ['queryunsigned64attribute_246',['QueryUnsigned64Attribute',['../classtinyxml2_1_1_x_m_l_element.html#a13dd590b5d3958ce2ed79844aacd9405',1,'tinyxml2::XMLElement']]], - ['queryunsigned64text_247',['QueryUnsigned64Text',['../classtinyxml2_1_1_x_m_l_element.html#ac2239b3bd172ad8f5b78d04d4236144b',1,'tinyxml2::XMLElement']]], - ['queryunsigned64value_248',['QueryUnsigned64Value',['../classtinyxml2_1_1_x_m_l_attribute.html#af793c695e7ee65cf20b8010d38b1d157',1,'tinyxml2::XMLAttribute']]], - ['queryunsignedattribute_249',['QueryUnsignedAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a26fc84cbfba6769dafcfbf256c05e22f',1,'tinyxml2::XMLElement']]], - ['queryunsignedtext_250',['QueryUnsignedText',['../classtinyxml2_1_1_x_m_l_element.html#a14d38aa4b5e18a46274a27425188a6a1',1,'tinyxml2::XMLElement']]], - ['queryunsignedvalue_251',['QueryUnsignedValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a48a7f3496f1415832e451bd8d09c9cb9',1,'tinyxml2::XMLAttribute']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/functions_e.js b/Engine/lib/tinyxml/docs/search/functions_e.js deleted file mode 100644 index a61c42748..000000000 --- a/Engine/lib/tinyxml/docs/search/functions_e.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['rootelement_252',['RootElement',['../classtinyxml2_1_1_x_m_l_document.html#ad2b70320d3c2a071c2f36928edff3e1c',1,'tinyxml2::XMLDocument']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/functions_f.js b/Engine/lib/tinyxml/docs/search/functions_f.js deleted file mode 100644 index 83d3b690c..000000000 --- a/Engine/lib/tinyxml/docs/search/functions_f.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['savefile_253',['SaveFile',['../classtinyxml2_1_1_x_m_l_document.html#a73ac416b4a2aa0952e841220eb3da18f',1,'tinyxml2::XMLDocument::SaveFile(const char *filename, bool compact=false)'],['../classtinyxml2_1_1_x_m_l_document.html#a8b95779479a0035acc67b3a61dfe1b74',1,'tinyxml2::XMLDocument::SaveFile(FILE *fp, bool compact=false)']]], - ['setattribute_254',['SetAttribute',['../classtinyxml2_1_1_x_m_l_attribute.html#a406d2c4a13c7af99a65edb59dd9f7581',1,'tinyxml2::XMLAttribute::SetAttribute(const char *value)'],['../classtinyxml2_1_1_x_m_l_attribute.html#ad86d7d7058d76761c3a80662566a57e5',1,'tinyxml2::XMLAttribute::SetAttribute(int value)'],['../classtinyxml2_1_1_x_m_l_attribute.html#ae70468c0f6df2748ba3529c716999fae',1,'tinyxml2::XMLAttribute::SetAttribute(unsigned value)'],['../classtinyxml2_1_1_x_m_l_attribute.html#a7c1240f479722b9aa29b6c030aa116c2',1,'tinyxml2::XMLAttribute::SetAttribute(int64_t value)'],['../classtinyxml2_1_1_x_m_l_attribute.html#a10964060a5c0d92486ecf8705bdf37da',1,'tinyxml2::XMLAttribute::SetAttribute(uint64_t value)'],['../classtinyxml2_1_1_x_m_l_attribute.html#ab3516def4fe058fe328f2b89fc2d77da',1,'tinyxml2::XMLAttribute::SetAttribute(bool value)'],['../classtinyxml2_1_1_x_m_l_attribute.html#a9a65ab3147abe8ccbbd373ce8791e818',1,'tinyxml2::XMLAttribute::SetAttribute(double value)'],['../classtinyxml2_1_1_x_m_l_attribute.html#ae95e843313aaf5d56c32530b6456df02',1,'tinyxml2::XMLAttribute::SetAttribute(float value)'],['../classtinyxml2_1_1_x_m_l_element.html#a11943abf2d0831548c3790dd5d9f119c',1,'tinyxml2::XMLElement::SetAttribute(const char *name, const char *value)'],['../classtinyxml2_1_1_x_m_l_element.html#aae6568c64c7f1cc88be8461ba41a79cf',1,'tinyxml2::XMLElement::SetAttribute(const char *name, int value)'],['../classtinyxml2_1_1_x_m_l_element.html#ae143997e90064ba82326b29a9930ea8f',1,'tinyxml2::XMLElement::SetAttribute(const char *name, unsigned value)'],['../classtinyxml2_1_1_x_m_l_element.html#aaeefdf9171fec91b13a776b42299b0dd',1,'tinyxml2::XMLElement::SetAttribute(const char *name, int64_t value)'],['../classtinyxml2_1_1_x_m_l_element.html#ad598868c0599ddc4695dab18552c308d',1,'tinyxml2::XMLElement::SetAttribute(const char *name, uint64_t value)'],['../classtinyxml2_1_1_x_m_l_element.html#aa848b696e6a75e4e545c6da9893b11e1',1,'tinyxml2::XMLElement::SetAttribute(const char *name, bool value)'],['../classtinyxml2_1_1_x_m_l_element.html#a233397ee81e70eb5d4b814c5f8698533',1,'tinyxml2::XMLElement::SetAttribute(const char *name, double value)'],['../classtinyxml2_1_1_x_m_l_element.html#a554b70d882e65b28fc084b23df9b9759',1,'tinyxml2::XMLElement::SetAttribute(const char *name, float value)']]], - ['setbom_255',['SetBOM',['../classtinyxml2_1_1_x_m_l_document.html#a14419b698f7c4b140df4e80f3f0c93b0',1,'tinyxml2::XMLDocument']]], - ['setcdata_256',['SetCData',['../classtinyxml2_1_1_x_m_l_text.html#ad080357d76ab7cc59d7651249949329d',1,'tinyxml2::XMLText']]], - ['setname_257',['SetName',['../classtinyxml2_1_1_x_m_l_element.html#a97712009a530d8cb8a63bf705f02b4f1',1,'tinyxml2::XMLElement']]], - ['settext_258',['SetText',['../classtinyxml2_1_1_x_m_l_element.html#a1f9c2cd61b72af5ae708d37b7ad283ce',1,'tinyxml2::XMLElement::SetText(const char *inText)'],['../classtinyxml2_1_1_x_m_l_element.html#aeae8917b5ea6060b3c08d4e3d8d632d7',1,'tinyxml2::XMLElement::SetText(int value)'],['../classtinyxml2_1_1_x_m_l_element.html#a7bbfcc11d516598bc924a8fba4d08597',1,'tinyxml2::XMLElement::SetText(unsigned value)'],['../classtinyxml2_1_1_x_m_l_element.html#a7b62cd33acdfeff7ea2b1b330d4368e4',1,'tinyxml2::XMLElement::SetText(int64_t value)'],['../classtinyxml2_1_1_x_m_l_element.html#a6e615bc745afd1ca8ded56d7aac02657',1,'tinyxml2::XMLElement::SetText(uint64_t value)'],['../classtinyxml2_1_1_x_m_l_element.html#ae4b543d6770de76fb6ab68e541c192a4',1,'tinyxml2::XMLElement::SetText(bool value)'],['../classtinyxml2_1_1_x_m_l_element.html#a67bd77ac9aaeff58ff20b4275a65ba4e',1,'tinyxml2::XMLElement::SetText(double value)'],['../classtinyxml2_1_1_x_m_l_element.html#a51d560da5ae3ad6b75e0ab9ffb2ae42a',1,'tinyxml2::XMLElement::SetText(float value)']]], - ['setuserdata_259',['SetUserData',['../classtinyxml2_1_1_x_m_l_node.html#a002978fc889cc011d143185f2377eca2',1,'tinyxml2::XMLNode']]], - ['setvalue_260',['SetValue',['../classtinyxml2_1_1_x_m_l_node.html#a09dd68cf9eae137579f6e50f36487513',1,'tinyxml2::XMLNode']]], - ['shallowclone_261',['ShallowClone',['../classtinyxml2_1_1_x_m_l_node.html#a8402cbd3129d20e9e6024bbcc0531283',1,'tinyxml2::XMLNode::ShallowClone()'],['../classtinyxml2_1_1_x_m_l_text.html#af3a81ed4dd49d5151c477b3f265a3011',1,'tinyxml2::XMLText::ShallowClone()'],['../classtinyxml2_1_1_x_m_l_comment.html#a08991cc63fadf7e95078ac4f9ea1b073',1,'tinyxml2::XMLComment::ShallowClone()'],['../classtinyxml2_1_1_x_m_l_declaration.html#a118d47518dd9e522644e42efa259aed7',1,'tinyxml2::XMLDeclaration::ShallowClone()'],['../classtinyxml2_1_1_x_m_l_unknown.html#a0125f41c89763dea06619b5fd5246b4c',1,'tinyxml2::XMLUnknown::ShallowClone()'],['../classtinyxml2_1_1_x_m_l_element.html#ac035742d68b0c50c3f676374e59fe750',1,'tinyxml2::XMLElement::ShallowClone()'],['../classtinyxml2_1_1_x_m_l_document.html#aa37cc1709d7e1e988bc17dcfb24a69b8',1,'tinyxml2::XMLDocument::ShallowClone()']]], - ['shallowequal_262',['ShallowEqual',['../classtinyxml2_1_1_x_m_l_node.html#a7ce18b751c3ea09eac292dca264f9226',1,'tinyxml2::XMLNode::ShallowEqual()'],['../classtinyxml2_1_1_x_m_l_text.html#ae0fff8a24e2de7eb073fd192e9db0331',1,'tinyxml2::XMLText::ShallowEqual()'],['../classtinyxml2_1_1_x_m_l_comment.html#a6f7d227b25afa8cc3c763b7cc8833739',1,'tinyxml2::XMLComment::ShallowEqual()'],['../classtinyxml2_1_1_x_m_l_declaration.html#aa26b70011694e9b9e9480b929e9b78d6',1,'tinyxml2::XMLDeclaration::ShallowEqual()'],['../classtinyxml2_1_1_x_m_l_unknown.html#a0715ab2c05d7f74845c188122213b116',1,'tinyxml2::XMLUnknown::ShallowEqual()'],['../classtinyxml2_1_1_x_m_l_element.html#ad9ea913a460b48979bd83cf9871c99f6',1,'tinyxml2::XMLElement::ShallowEqual()'],['../classtinyxml2_1_1_x_m_l_document.html#a6fe5ef18699091844fcf64b56ffa5bf9',1,'tinyxml2::XMLDocument::ShallowEqual()']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/mag_sel.svg b/Engine/lib/tinyxml/docs/search/mag_sel.svg deleted file mode 100644 index 03626f64a..000000000 --- a/Engine/lib/tinyxml/docs/search/mag_sel.svg +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - diff --git a/Engine/lib/tinyxml/docs/search/pages_0.js b/Engine/lib/tinyxml/docs/search/pages_0.js deleted file mode 100644 index d992ed086..000000000 --- a/Engine/lib/tinyxml/docs/search/pages_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['get_20information_20out_20of_20xml_282',['Get information out of XML',['../_example_3.html',1,'']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/pages_1.js b/Engine/lib/tinyxml/docs/search/pages_1.js deleted file mode 100644 index 2d10aa6f7..000000000 --- a/Engine/lib/tinyxml/docs/search/pages_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['load_20an_20xml_20file_283',['Load an XML File',['../_example_1.html',1,'']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/pages_2.js b/Engine/lib/tinyxml/docs/search/pages_2.js deleted file mode 100644 index e7cdf36f3..000000000 --- a/Engine/lib/tinyxml/docs/search/pages_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['parse_20an_20xml_20from_20char_20buffer_284',['Parse an XML from char buffer',['../_example_2.html',1,'']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/pages_3.js b/Engine/lib/tinyxml/docs/search/pages_3.js deleted file mode 100644 index 8f6a8fc81..000000000 --- a/Engine/lib/tinyxml/docs/search/pages_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['read_20attributes_20and_20text_20information_2e_285',['Read attributes and text information.',['../_example_4.html',1,'']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/pages_4.js b/Engine/lib/tinyxml/docs/search/pages_4.js deleted file mode 100644 index e97fabfa8..000000000 --- a/Engine/lib/tinyxml/docs/search/pages_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['tinyxml_2d2_286',['TinyXML-2',['../index.html',1,'']]] -]; diff --git a/Engine/lib/tinyxml/docs/search/search.js b/Engine/lib/tinyxml/docs/search/search.js deleted file mode 100644 index fb226f734..000000000 --- a/Engine/lib/tinyxml/docs/search/search.js +++ /dev/null @@ -1,816 +0,0 @@ -/* - @licstart The following is the entire license notice for the JavaScript code in this file. - - The MIT License (MIT) - - Copyright (C) 1997-2020 by Dimitri van Heesch - - Permission is hereby granted, free of charge, to any person obtaining a copy of this software - and associated documentation files (the "Software"), to deal in the Software without restriction, - including without limitation the rights to use, copy, modify, merge, publish, distribute, - sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all copies or - substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - @licend The above is the entire license notice for the JavaScript code in this file - */ -function convertToId(search) -{ - var result = ''; - for (i=0;i do a search - { - this.Search(); - } - } - - this.OnSearchSelectKey = function(evt) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==40 && this.searchIndex0) // Up - { - this.searchIndex--; - this.OnSelectItem(this.searchIndex); - } - else if (e.keyCode==13 || e.keyCode==27) - { - this.OnSelectItem(this.searchIndex); - this.CloseSelectionWindow(); - this.DOMSearchField().focus(); - } - return false; - } - - // --------- Actions - - // Closes the results window. - this.CloseResultsWindow = function() - { - this.DOMPopupSearchResultsWindow().style.display = 'none'; - this.DOMSearchClose().style.display = 'none'; - this.Activate(false); - } - - this.CloseSelectionWindow = function() - { - this.DOMSearchSelectWindow().style.display = 'none'; - } - - // Performs a search. - this.Search = function() - { - this.keyTimeout = 0; - - // strip leading whitespace - var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); - - var code = searchValue.toLowerCase().charCodeAt(0); - var idxChar = searchValue.substr(0, 1).toLowerCase(); - if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair - { - idxChar = searchValue.substr(0, 2); - } - - var resultsPage; - var resultsPageWithSearch; - var hasResultsPage; - - var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); - if (idx!=-1) - { - var hexCode=idx.toString(16); - resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + this.extension; - resultsPageWithSearch = resultsPage+'?'+escape(searchValue); - hasResultsPage = true; - } - else // nothing available for this search term - { - resultsPage = this.resultsPath + '/nomatches' + this.extension; - resultsPageWithSearch = resultsPage; - hasResultsPage = false; - } - - window.frames.MSearchResults.location = resultsPageWithSearch; - var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); - - if (domPopupSearchResultsWindow.style.display!='block') - { - var domSearchBox = this.DOMSearchBox(); - this.DOMSearchClose().style.display = 'inline-block'; - if (this.insideFrame) - { - var domPopupSearchResults = this.DOMPopupSearchResults(); - domPopupSearchResultsWindow.style.position = 'relative'; - domPopupSearchResultsWindow.style.display = 'block'; - var width = document.body.clientWidth - 8; // the -8 is for IE :-( - domPopupSearchResultsWindow.style.width = width + 'px'; - domPopupSearchResults.style.width = width + 'px'; - } - else - { - var domPopupSearchResults = this.DOMPopupSearchResults(); - var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; - var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; - domPopupSearchResultsWindow.style.display = 'block'; - left -= domPopupSearchResults.offsetWidth; - domPopupSearchResultsWindow.style.top = top + 'px'; - domPopupSearchResultsWindow.style.left = left + 'px'; - } - } - - this.lastSearchValue = searchValue; - this.lastResultsPage = resultsPage; - } - - // -------- Activation Functions - - // Activates or deactivates the search panel, resetting things to - // their default values if necessary. - this.Activate = function(isActive) - { - if (isActive || // open it - this.DOMPopupSearchResultsWindow().style.display == 'block' - ) - { - this.DOMSearchBox().className = 'MSearchBoxActive'; - - var searchField = this.DOMSearchField(); - - if (searchField.value == this.searchLabel) // clear "Search" term upon entry - { - searchField.value = ''; - this.searchActive = true; - } - } - else if (!isActive) // directly remove the panel - { - this.DOMSearchBox().className = 'MSearchBoxInactive'; - this.DOMSearchField().value = this.searchLabel; - this.searchActive = false; - this.lastSearchValue = '' - this.lastResultsPage = ''; - } - } -} - -// ----------------------------------------------------------------------- - -// The class that handles everything on the search results page. -function SearchResults(name) -{ - // The number of matches from the last run of . - this.lastMatchCount = 0; - this.lastKey = 0; - this.repeatOn = false; - - // Toggles the visibility of the passed element ID. - this.FindChildElement = function(id) - { - var parentElement = document.getElementById(id); - var element = parentElement.firstChild; - - while (element && element!=parentElement) - { - if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') - { - return element; - } - - if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) - { - element = element.firstChild; - } - else if (element.nextSibling) - { - element = element.nextSibling; - } - else - { - do - { - element = element.parentNode; - } - while (element && element!=parentElement && !element.nextSibling); - - if (element && element!=parentElement) - { - element = element.nextSibling; - } - } - } - } - - this.Toggle = function(id) - { - var element = this.FindChildElement(id); - if (element) - { - if (element.style.display == 'block') - { - element.style.display = 'none'; - } - else - { - element.style.display = 'block'; - } - } - } - - // Searches for the passed string. If there is no parameter, - // it takes it from the URL query. - // - // Always returns true, since other documents may try to call it - // and that may or may not be possible. - this.Search = function(search) - { - if (!search) // get search word from URL - { - search = window.location.search; - search = search.substring(1); // Remove the leading '?' - search = unescape(search); - } - - search = search.replace(/^ +/, ""); // strip leading spaces - search = search.replace(/ +$/, ""); // strip trailing spaces - search = search.toLowerCase(); - search = convertToId(search); - - var resultRows = document.getElementsByTagName("div"); - var matches = 0; - - var i = 0; - while (i < resultRows.length) - { - var row = resultRows.item(i); - if (row.className == "SRResult") - { - var rowMatchName = row.id.toLowerCase(); - rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' - - if (search.length<=rowMatchName.length && - rowMatchName.substr(0, search.length)==search) - { - row.style.display = 'block'; - matches++; - } - else - { - row.style.display = 'none'; - } - } - i++; - } - document.getElementById("Searching").style.display='none'; - if (matches == 0) // no results - { - document.getElementById("NoMatches").style.display='block'; - } - else // at least one result - { - document.getElementById("NoMatches").style.display='none'; - } - this.lastMatchCount = matches; - return true; - } - - // return the first item with index index or higher that is visible - this.NavNext = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index++; - } - return focusItem; - } - - this.NavPrev = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index--; - } - return focusItem; - } - - this.ProcessKeys = function(e) - { - if (e.type == "keydown") - { - this.repeatOn = false; - this.lastKey = e.keyCode; - } - else if (e.type == "keypress") - { - if (!this.repeatOn) - { - if (this.lastKey) this.repeatOn = true; - return false; // ignore first keypress after keydown - } - } - else if (e.type == "keyup") - { - this.lastKey = 0; - this.repeatOn = false; - } - return this.lastKey!=0; - } - - this.Nav = function(evt,itemIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - var newIndex = itemIndex-1; - var focusItem = this.NavPrev(newIndex); - if (focusItem) - { - var child = this.FindChildElement(focusItem.parentNode.parentNode.id); - if (child && child.style.display == 'block') // children visible - { - var n=0; - var tmpElem; - while (1) // search for last child - { - tmpElem = document.getElementById('Item'+newIndex+'_c'+n); - if (tmpElem) - { - focusItem = tmpElem; - } - else // found it! - { - break; - } - n++; - } - } - } - if (focusItem) - { - focusItem.focus(); - } - else // return focus to search field - { - parent.document.getElementById("MSearchField").focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = itemIndex+1; - var focusItem; - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem && elem.style.display == 'block') // children visible - { - focusItem = document.getElementById('Item'+itemIndex+'_c0'); - } - if (!focusItem) focusItem = this.NavNext(newIndex); - if (focusItem) focusItem.focus(); - } - else if (this.lastKey==39) // Right - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'block'; - } - else if (this.lastKey==37) // Left - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'none'; - } - else if (this.lastKey==27) // Escape - { - parent.searchBox.CloseResultsWindow(); - parent.document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; - } - - this.NavChild = function(evt,itemIndex,childIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - if (childIndex>0) - { - var newIndex = childIndex-1; - document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); - } - else // already at first child, jump to parent - { - document.getElementById('Item'+itemIndex).focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = childIndex+1; - var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); - if (!elem) // last child, jump to parent next parent - { - elem = this.NavNext(itemIndex+1); - } - if (elem) - { - elem.focus(); - } - } - else if (this.lastKey==27) // Escape - { - parent.searchBox.CloseResultsWindow(); - parent.document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; - } -} - -function setKeyActions(elem,action) -{ - elem.setAttribute('onkeydown',action); - elem.setAttribute('onkeypress',action); - elem.setAttribute('onkeyup',action); -} - -function setClassAttr(elem,attr) -{ - elem.setAttribute('class',attr); - elem.setAttribute('className',attr); -} - -function createResults() -{ - var results = document.getElementById("SRResults"); - for (var e=0; eli>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file diff --git a/Engine/lib/tinyxml/docs/tinyxml2_8h_source.html b/Engine/lib/tinyxml/docs/tinyxml2_8h_source.html deleted file mode 100644 index dc1d92ae3..000000000 --- a/Engine/lib/tinyxml/docs/tinyxml2_8h_source.html +++ /dev/null @@ -1,1955 +0,0 @@ - - - - - - - -TinyXML-2: tinyxml2.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    TinyXML-2 -  9.0.0 -
    -
    -
    - - - - - - - -
    - -
    -
    - - -
    - -
    - -
    -
    -
    tinyxml2.h
    -
    -
    -
    1 /*
    -
    2 Original code by Lee Thomason (www.grinninglizard.com)
    -
    3 
    -
    4 This software is provided 'as-is', without any express or implied
    -
    5 warranty. In no event will the authors be held liable for any
    -
    6 damages arising from the use of this software.
    -
    7 
    -
    8 Permission is granted to anyone to use this software for any
    -
    9 purpose, including commercial applications, and to alter it and
    -
    10 redistribute it freely, subject to the following restrictions:
    -
    11 
    -
    12 1. The origin of this software must not be misrepresented; you must
    -
    13 not claim that you wrote the original software. If you use this
    -
    14 software in a product, an acknowledgment in the product documentation
    -
    15 would be appreciated but is not required.
    -
    16 
    -
    17 2. Altered source versions must be plainly marked as such, and
    -
    18 must not be misrepresented as being the original software.
    -
    19 
    -
    20 3. This notice may not be removed or altered from any source
    -
    21 distribution.
    -
    22 */
    -
    23 
    -
    24 #ifndef TINYXML2_INCLUDED
    -
    25 #define TINYXML2_INCLUDED
    -
    26 
    -
    27 #if defined(ANDROID_NDK) || defined(__BORLANDC__) || defined(__QNXNTO__)
    -
    28 # include <ctype.h>
    -
    29 # include <limits.h>
    -
    30 # include <stdio.h>
    -
    31 # include <stdlib.h>
    -
    32 # include <string.h>
    -
    33 # if defined(__PS3__)
    -
    34 # include <stddef.h>
    -
    35 # endif
    -
    36 #else
    -
    37 # include <cctype>
    -
    38 # include <climits>
    -
    39 # include <cstdio>
    -
    40 # include <cstdlib>
    -
    41 # include <cstring>
    -
    42 #endif
    -
    43 #include <stdint.h>
    -
    44 
    -
    45 /*
    -
    46  TODO: intern strings instead of allocation.
    -
    47 */
    -
    48 /*
    -
    49  gcc:
    -
    50  g++ -Wall -DTINYXML2_DEBUG tinyxml2.cpp xmltest.cpp -o gccxmltest.exe
    -
    51 
    -
    52  Formatting, Artistic Style:
    -
    53  AStyle.exe --style=1tbs --indent-switches --break-closing-brackets --indent-preprocessor tinyxml2.cpp tinyxml2.h
    -
    54 */
    -
    55 
    -
    56 #if defined( _DEBUG ) || defined (__DEBUG__)
    -
    57 # ifndef TINYXML2_DEBUG
    -
    58 # define TINYXML2_DEBUG
    -
    59 # endif
    -
    60 #endif
    -
    61 
    -
    62 #ifdef _MSC_VER
    -
    63 # pragma warning(push)
    -
    64 # pragma warning(disable: 4251)
    -
    65 #endif
    -
    66 
    -
    67 #ifdef _WIN32
    -
    68 # ifdef TINYXML2_EXPORT
    -
    69 # define TINYXML2_LIB __declspec(dllexport)
    -
    70 # elif defined(TINYXML2_IMPORT)
    -
    71 # define TINYXML2_LIB __declspec(dllimport)
    -
    72 # else
    -
    73 # define TINYXML2_LIB
    -
    74 # endif
    -
    75 #elif __GNUC__ >= 4
    -
    76 # define TINYXML2_LIB __attribute__((visibility("default")))
    -
    77 #else
    -
    78 # define TINYXML2_LIB
    -
    79 #endif
    -
    80 
    -
    81 
    -
    82 #if !defined(TIXMLASSERT)
    -
    83 #if defined(TINYXML2_DEBUG)
    -
    84 # if defined(_MSC_VER)
    -
    85 # // "(void)0," is for suppressing C4127 warning in "assert(false)", "assert(true)" and the like
    -
    86 # define TIXMLASSERT( x ) if ( !((void)0,(x))) { __debugbreak(); }
    -
    87 # elif defined (ANDROID_NDK)
    -
    88 # include <android/log.h>
    -
    89 # define TIXMLASSERT( x ) if ( !(x)) { __android_log_assert( "assert", "grinliz", "ASSERT in '%s' at %d.", __FILE__, __LINE__ ); }
    -
    90 # else
    -
    91 # include <assert.h>
    -
    92 # define TIXMLASSERT assert
    -
    93 # endif
    -
    94 #else
    -
    95 # define TIXMLASSERT( x ) {}
    -
    96 #endif
    -
    97 #endif
    -
    98 
    -
    99 /* Versioning, past 1.0.14:
    -
    100  http://semver.org/
    -
    101 */
    -
    102 static const int TIXML2_MAJOR_VERSION = 9;
    -
    103 static const int TIXML2_MINOR_VERSION = 0;
    -
    104 static const int TIXML2_PATCH_VERSION = 0;
    -
    105 
    -
    106 #define TINYXML2_MAJOR_VERSION 9
    -
    107 #define TINYXML2_MINOR_VERSION 0
    -
    108 #define TINYXML2_PATCH_VERSION 0
    -
    109 
    -
    110 // A fixed element depth limit is problematic. There needs to be a
    -
    111 // limit to avoid a stack overflow. However, that limit varies per
    -
    112 // system, and the capacity of the stack. On the other hand, it's a trivial
    -
    113 // attack that can result from ill, malicious, or even correctly formed XML,
    -
    114 // so there needs to be a limit in place.
    -
    115 static const int TINYXML2_MAX_ELEMENT_DEPTH = 100;
    -
    116 
    -
    117 namespace tinyxml2
    -
    118 {
    -
    119 class XMLDocument;
    -
    120 class XMLElement;
    -
    121 class XMLAttribute;
    -
    122 class XMLComment;
    -
    123 class XMLText;
    -
    124 class XMLDeclaration;
    -
    125 class XMLUnknown;
    -
    126 class XMLPrinter;
    -
    127 
    -
    128 /*
    -
    129  A class that wraps strings. Normally stores the start and end
    -
    130  pointers into the XML file itself, and will apply normalization
    -
    131  and entity translation if actually read. Can also store (and memory
    -
    132  manage) a traditional char[]
    -
    133 
    -
    134  Isn't clear why TINYXML2_LIB is needed; but seems to fix #719
    -
    135 */
    -
    136 class TINYXML2_LIB StrPair
    -
    137 {
    -
    138 public:
    -
    139  enum Mode {
    -
    140  NEEDS_ENTITY_PROCESSING = 0x01,
    -
    141  NEEDS_NEWLINE_NORMALIZATION = 0x02,
    -
    142  NEEDS_WHITESPACE_COLLAPSING = 0x04,
    -
    143 
    -
    144  TEXT_ELEMENT = NEEDS_ENTITY_PROCESSING | NEEDS_NEWLINE_NORMALIZATION,
    -
    145  TEXT_ELEMENT_LEAVE_ENTITIES = NEEDS_NEWLINE_NORMALIZATION,
    -
    146  ATTRIBUTE_NAME = 0,
    -
    147  ATTRIBUTE_VALUE = NEEDS_ENTITY_PROCESSING | NEEDS_NEWLINE_NORMALIZATION,
    -
    148  ATTRIBUTE_VALUE_LEAVE_ENTITIES = NEEDS_NEWLINE_NORMALIZATION,
    -
    149  COMMENT = NEEDS_NEWLINE_NORMALIZATION
    -
    150  };
    -
    151 
    -
    152  StrPair() : _flags( 0 ), _start( 0 ), _end( 0 ) {}
    -
    153  ~StrPair();
    -
    154 
    -
    155  void Set( char* start, char* end, int flags ) {
    -
    156  TIXMLASSERT( start );
    -
    157  TIXMLASSERT( end );
    -
    158  Reset();
    -
    159  _start = start;
    -
    160  _end = end;
    -
    161  _flags = flags | NEEDS_FLUSH;
    -
    162  }
    -
    163 
    -
    164  const char* GetStr();
    -
    165 
    -
    166  bool Empty() const {
    -
    167  return _start == _end;
    -
    168  }
    -
    169 
    -
    170  void SetInternedStr( const char* str ) {
    -
    171  Reset();
    -
    172  _start = const_cast<char*>(str);
    -
    173  }
    -
    174 
    -
    175  void SetStr( const char* str, int flags=0 );
    -
    176 
    -
    177  char* ParseText( char* in, const char* endTag, int strFlags, int* curLineNumPtr );
    -
    178  char* ParseName( char* in );
    -
    179 
    -
    180  void TransferTo( StrPair* other );
    -
    181  void Reset();
    -
    182 
    -
    183 private:
    -
    184  void CollapseWhitespace();
    -
    185 
    -
    186  enum {
    -
    187  NEEDS_FLUSH = 0x100,
    -
    188  NEEDS_DELETE = 0x200
    -
    189  };
    -
    190 
    -
    191  int _flags;
    -
    192  char* _start;
    -
    193  char* _end;
    -
    194 
    -
    195  StrPair( const StrPair& other ); // not supported
    -
    196  void operator=( const StrPair& other ); // not supported, use TransferTo()
    -
    197 };
    -
    198 
    -
    199 
    -
    200 /*
    -
    201  A dynamic array of Plain Old Data. Doesn't support constructors, etc.
    -
    202  Has a small initial memory pool, so that low or no usage will not
    -
    203  cause a call to new/delete
    -
    204 */
    -
    205 template <class T, int INITIAL_SIZE>
    -
    206 class DynArray
    -
    207 {
    -
    208 public:
    -
    209  DynArray() :
    -
    210  _mem( _pool ),
    -
    211  _allocated( INITIAL_SIZE ),
    -
    212  _size( 0 )
    -
    213  {
    -
    214  }
    -
    215 
    -
    216  ~DynArray() {
    -
    217  if ( _mem != _pool ) {
    -
    218  delete [] _mem;
    -
    219  }
    -
    220  }
    -
    221 
    -
    222  void Clear() {
    -
    223  _size = 0;
    -
    224  }
    -
    225 
    -
    226  void Push( T t ) {
    -
    227  TIXMLASSERT( _size < INT_MAX );
    -
    228  EnsureCapacity( _size+1 );
    -
    229  _mem[_size] = t;
    -
    230  ++_size;
    -
    231  }
    -
    232 
    -
    233  T* PushArr( int count ) {
    -
    234  TIXMLASSERT( count >= 0 );
    -
    235  TIXMLASSERT( _size <= INT_MAX - count );
    -
    236  EnsureCapacity( _size+count );
    -
    237  T* ret = &_mem[_size];
    -
    238  _size += count;
    -
    239  return ret;
    -
    240  }
    -
    241 
    -
    242  T Pop() {
    -
    243  TIXMLASSERT( _size > 0 );
    -
    244  --_size;
    -
    245  return _mem[_size];
    -
    246  }
    -
    247 
    -
    248  void PopArr( int count ) {
    -
    249  TIXMLASSERT( _size >= count );
    -
    250  _size -= count;
    -
    251  }
    -
    252 
    -
    253  bool Empty() const {
    -
    254  return _size == 0;
    -
    255  }
    -
    256 
    -
    257  T& operator[](int i) {
    -
    258  TIXMLASSERT( i>= 0 && i < _size );
    -
    259  return _mem[i];
    -
    260  }
    -
    261 
    -
    262  const T& operator[](int i) const {
    -
    263  TIXMLASSERT( i>= 0 && i < _size );
    -
    264  return _mem[i];
    -
    265  }
    -
    266 
    -
    267  const T& PeekTop() const {
    -
    268  TIXMLASSERT( _size > 0 );
    -
    269  return _mem[ _size - 1];
    -
    270  }
    -
    271 
    -
    272  int Size() const {
    -
    273  TIXMLASSERT( _size >= 0 );
    -
    274  return _size;
    -
    275  }
    -
    276 
    -
    277  int Capacity() const {
    -
    278  TIXMLASSERT( _allocated >= INITIAL_SIZE );
    -
    279  return _allocated;
    -
    280  }
    -
    281 
    -
    282  void SwapRemove(int i) {
    -
    283  TIXMLASSERT(i >= 0 && i < _size);
    -
    284  TIXMLASSERT(_size > 0);
    -
    285  _mem[i] = _mem[_size - 1];
    -
    286  --_size;
    -
    287  }
    -
    288 
    -
    289  const T* Mem() const {
    -
    290  TIXMLASSERT( _mem );
    -
    291  return _mem;
    -
    292  }
    -
    293 
    -
    294  T* Mem() {
    -
    295  TIXMLASSERT( _mem );
    -
    296  return _mem;
    -
    297  }
    -
    298 
    -
    299 private:
    -
    300  DynArray( const DynArray& ); // not supported
    -
    301  void operator=( const DynArray& ); // not supported
    -
    302 
    -
    303  void EnsureCapacity( int cap ) {
    -
    304  TIXMLASSERT( cap > 0 );
    -
    305  if ( cap > _allocated ) {
    -
    306  TIXMLASSERT( cap <= INT_MAX / 2 );
    -
    307  const int newAllocated = cap * 2;
    -
    308  T* newMem = new T[newAllocated];
    -
    309  TIXMLASSERT( newAllocated >= _size );
    -
    310  memcpy( newMem, _mem, sizeof(T)*_size ); // warning: not using constructors, only works for PODs
    -
    311  if ( _mem != _pool ) {
    -
    312  delete [] _mem;
    -
    313  }
    -
    314  _mem = newMem;
    -
    315  _allocated = newAllocated;
    -
    316  }
    -
    317  }
    -
    318 
    -
    319  T* _mem;
    -
    320  T _pool[INITIAL_SIZE];
    -
    321  int _allocated; // objects allocated
    -
    322  int _size; // number objects in use
    -
    323 };
    -
    324 
    -
    325 
    -
    326 /*
    -
    327  Parent virtual class of a pool for fast allocation
    -
    328  and deallocation of objects.
    -
    329 */
    -
    330 class MemPool
    -
    331 {
    -
    332 public:
    -
    333  MemPool() {}
    -
    334  virtual ~MemPool() {}
    -
    335 
    -
    336  virtual int ItemSize() const = 0;
    -
    337  virtual void* Alloc() = 0;
    -
    338  virtual void Free( void* ) = 0;
    -
    339  virtual void SetTracked() = 0;
    -
    340 };
    -
    341 
    -
    342 
    -
    343 /*
    -
    344  Template child class to create pools of the correct type.
    -
    345 */
    -
    346 template< int ITEM_SIZE >
    -
    347 class MemPoolT : public MemPool
    -
    348 {
    -
    349 public:
    -
    350  MemPoolT() : _blockPtrs(), _root(0), _currentAllocs(0), _nAllocs(0), _maxAllocs(0), _nUntracked(0) {}
    -
    351  ~MemPoolT() {
    -
    352  MemPoolT< ITEM_SIZE >::Clear();
    -
    353  }
    -
    354 
    -
    355  void Clear() {
    -
    356  // Delete the blocks.
    -
    357  while( !_blockPtrs.Empty()) {
    -
    358  Block* lastBlock = _blockPtrs.Pop();
    -
    359  delete lastBlock;
    -
    360  }
    -
    361  _root = 0;
    -
    362  _currentAllocs = 0;
    -
    363  _nAllocs = 0;
    -
    364  _maxAllocs = 0;
    -
    365  _nUntracked = 0;
    -
    366  }
    -
    367 
    -
    368  virtual int ItemSize() const {
    -
    369  return ITEM_SIZE;
    -
    370  }
    -
    371  int CurrentAllocs() const {
    -
    372  return _currentAllocs;
    -
    373  }
    -
    374 
    -
    375  virtual void* Alloc() {
    -
    376  if ( !_root ) {
    -
    377  // Need a new block.
    -
    378  Block* block = new Block();
    -
    379  _blockPtrs.Push( block );
    -
    380 
    -
    381  Item* blockItems = block->items;
    -
    382  for( int i = 0; i < ITEMS_PER_BLOCK - 1; ++i ) {
    -
    383  blockItems[i].next = &(blockItems[i + 1]);
    -
    384  }
    -
    385  blockItems[ITEMS_PER_BLOCK - 1].next = 0;
    -
    386  _root = blockItems;
    -
    387  }
    -
    388  Item* const result = _root;
    -
    389  TIXMLASSERT( result != 0 );
    -
    390  _root = _root->next;
    -
    391 
    -
    392  ++_currentAllocs;
    -
    393  if ( _currentAllocs > _maxAllocs ) {
    -
    394  _maxAllocs = _currentAllocs;
    -
    395  }
    -
    396  ++_nAllocs;
    -
    397  ++_nUntracked;
    -
    398  return result;
    -
    399  }
    -
    400 
    -
    401  virtual void Free( void* mem ) {
    -
    402  if ( !mem ) {
    -
    403  return;
    -
    404  }
    -
    405  --_currentAllocs;
    -
    406  Item* item = static_cast<Item*>( mem );
    -
    407 #ifdef TINYXML2_DEBUG
    -
    408  memset( item, 0xfe, sizeof( *item ) );
    -
    409 #endif
    -
    410  item->next = _root;
    -
    411  _root = item;
    -
    412  }
    -
    413  void Trace( const char* name ) {
    -
    414  printf( "Mempool %s watermark=%d [%dk] current=%d size=%d nAlloc=%d blocks=%d\n",
    -
    415  name, _maxAllocs, _maxAllocs * ITEM_SIZE / 1024, _currentAllocs,
    -
    416  ITEM_SIZE, _nAllocs, _blockPtrs.Size() );
    -
    417  }
    -
    418 
    -
    419  void SetTracked() {
    -
    420  --_nUntracked;
    -
    421  }
    -
    422 
    -
    423  int Untracked() const {
    -
    424  return _nUntracked;
    -
    425  }
    -
    426 
    -
    427  // This number is perf sensitive. 4k seems like a good tradeoff on my machine.
    -
    428  // The test file is large, 170k.
    -
    429  // Release: VS2010 gcc(no opt)
    -
    430  // 1k: 4000
    -
    431  // 2k: 4000
    -
    432  // 4k: 3900 21000
    -
    433  // 16k: 5200
    -
    434  // 32k: 4300
    -
    435  // 64k: 4000 21000
    -
    436  // Declared public because some compilers do not accept to use ITEMS_PER_BLOCK
    -
    437  // in private part if ITEMS_PER_BLOCK is private
    -
    438  enum { ITEMS_PER_BLOCK = (4 * 1024) / ITEM_SIZE };
    -
    439 
    -
    440 private:
    -
    441  MemPoolT( const MemPoolT& ); // not supported
    -
    442  void operator=( const MemPoolT& ); // not supported
    -
    443 
    -
    444  union Item {
    -
    445  Item* next;
    -
    446  char itemData[ITEM_SIZE];
    -
    447  };
    -
    448  struct Block {
    -
    449  Item items[ITEMS_PER_BLOCK];
    -
    450  };
    -
    451  DynArray< Block*, 10 > _blockPtrs;
    -
    452  Item* _root;
    -
    453 
    -
    454  int _currentAllocs;
    -
    455  int _nAllocs;
    -
    456  int _maxAllocs;
    -
    457  int _nUntracked;
    -
    458 };
    -
    459 
    -
    460 
    -
    461 
    -
    481 class TINYXML2_LIB XMLVisitor
    -
    482 {
    -
    483 public:
    -
    484  virtual ~XMLVisitor() {}
    -
    485 
    -
    487  virtual bool VisitEnter( const XMLDocument& /*doc*/ ) {
    -
    488  return true;
    -
    489  }
    -
    491  virtual bool VisitExit( const XMLDocument& /*doc*/ ) {
    -
    492  return true;
    -
    493  }
    -
    494 
    -
    496  virtual bool VisitEnter( const XMLElement& /*element*/, const XMLAttribute* /*firstAttribute*/ ) {
    -
    497  return true;
    -
    498  }
    -
    500  virtual bool VisitExit( const XMLElement& /*element*/ ) {
    -
    501  return true;
    -
    502  }
    -
    503 
    -
    505  virtual bool Visit( const XMLDeclaration& /*declaration*/ ) {
    -
    506  return true;
    -
    507  }
    -
    509  virtual bool Visit( const XMLText& /*text*/ ) {
    -
    510  return true;
    -
    511  }
    -
    513  virtual bool Visit( const XMLComment& /*comment*/ ) {
    -
    514  return true;
    -
    515  }
    -
    517  virtual bool Visit( const XMLUnknown& /*unknown*/ ) {
    -
    518  return true;
    -
    519  }
    -
    520 };
    -
    521 
    -
    522 // WARNING: must match XMLDocument::_errorNames[]
    -
    523 enum XMLError {
    -
    524  XML_SUCCESS = 0,
    -
    525  XML_NO_ATTRIBUTE,
    -
    526  XML_WRONG_ATTRIBUTE_TYPE,
    -
    527  XML_ERROR_FILE_NOT_FOUND,
    -
    528  XML_ERROR_FILE_COULD_NOT_BE_OPENED,
    -
    529  XML_ERROR_FILE_READ_ERROR,
    -
    530  XML_ERROR_PARSING_ELEMENT,
    -
    531  XML_ERROR_PARSING_ATTRIBUTE,
    -
    532  XML_ERROR_PARSING_TEXT,
    -
    533  XML_ERROR_PARSING_CDATA,
    -
    534  XML_ERROR_PARSING_COMMENT,
    -
    535  XML_ERROR_PARSING_DECLARATION,
    -
    536  XML_ERROR_PARSING_UNKNOWN,
    -
    537  XML_ERROR_EMPTY_DOCUMENT,
    -
    538  XML_ERROR_MISMATCHED_ELEMENT,
    -
    539  XML_ERROR_PARSING,
    -
    540  XML_CAN_NOT_CONVERT_TEXT,
    -
    541  XML_NO_TEXT_NODE,
    -
    542  XML_ELEMENT_DEPTH_EXCEEDED,
    -
    543 
    -
    544  XML_ERROR_COUNT
    -
    545 };
    -
    546 
    -
    547 
    -
    548 /*
    -
    549  Utility functionality.
    -
    550 */
    -
    551 class TINYXML2_LIB XMLUtil
    -
    552 {
    -
    553 public:
    -
    554  static const char* SkipWhiteSpace( const char* p, int* curLineNumPtr ) {
    -
    555  TIXMLASSERT( p );
    -
    556 
    -
    557  while( IsWhiteSpace(*p) ) {
    -
    558  if (curLineNumPtr && *p == '\n') {
    -
    559  ++(*curLineNumPtr);
    -
    560  }
    -
    561  ++p;
    -
    562  }
    -
    563  TIXMLASSERT( p );
    -
    564  return p;
    -
    565  }
    -
    566  static char* SkipWhiteSpace( char* const p, int* curLineNumPtr ) {
    -
    567  return const_cast<char*>( SkipWhiteSpace( const_cast<const char*>(p), curLineNumPtr ) );
    -
    568  }
    -
    569 
    -
    570  // Anything in the high order range of UTF-8 is assumed to not be whitespace. This isn't
    -
    571  // correct, but simple, and usually works.
    -
    572  static bool IsWhiteSpace( char p ) {
    -
    573  return !IsUTF8Continuation(p) && isspace( static_cast<unsigned char>(p) );
    -
    574  }
    -
    575 
    -
    576  inline static bool IsNameStartChar( unsigned char ch ) {
    -
    577  if ( ch >= 128 ) {
    -
    578  // This is a heuristic guess in attempt to not implement Unicode-aware isalpha()
    -
    579  return true;
    -
    580  }
    -
    581  if ( isalpha( ch ) ) {
    -
    582  return true;
    -
    583  }
    -
    584  return ch == ':' || ch == '_';
    -
    585  }
    -
    586 
    -
    587  inline static bool IsNameChar( unsigned char ch ) {
    -
    588  return IsNameStartChar( ch )
    -
    589  || isdigit( ch )
    -
    590  || ch == '.'
    -
    591  || ch == '-';
    -
    592  }
    -
    593 
    -
    594  inline static bool IsPrefixHex( const char* p) {
    -
    595  p = SkipWhiteSpace(p, 0);
    -
    596  return p && *p == '0' && ( *(p + 1) == 'x' || *(p + 1) == 'X');
    -
    597  }
    -
    598 
    -
    599  inline static bool StringEqual( const char* p, const char* q, int nChar=INT_MAX ) {
    -
    600  if ( p == q ) {
    -
    601  return true;
    -
    602  }
    -
    603  TIXMLASSERT( p );
    -
    604  TIXMLASSERT( q );
    -
    605  TIXMLASSERT( nChar >= 0 );
    -
    606  return strncmp( p, q, nChar ) == 0;
    -
    607  }
    -
    608 
    -
    609  inline static bool IsUTF8Continuation( const char p ) {
    -
    610  return ( p & 0x80 ) != 0;
    -
    611  }
    -
    612 
    -
    613  static const char* ReadBOM( const char* p, bool* hasBOM );
    -
    614  // p is the starting location,
    -
    615  // the UTF-8 value of the entity will be placed in value, and length filled in.
    -
    616  static const char* GetCharacterRef( const char* p, char* value, int* length );
    -
    617  static void ConvertUTF32ToUTF8( unsigned long input, char* output, int* length );
    -
    618 
    -
    619  // converts primitive types to strings
    -
    620  static void ToStr( int v, char* buffer, int bufferSize );
    -
    621  static void ToStr( unsigned v, char* buffer, int bufferSize );
    -
    622  static void ToStr( bool v, char* buffer, int bufferSize );
    -
    623  static void ToStr( float v, char* buffer, int bufferSize );
    -
    624  static void ToStr( double v, char* buffer, int bufferSize );
    -
    625  static void ToStr(int64_t v, char* buffer, int bufferSize);
    -
    626  static void ToStr(uint64_t v, char* buffer, int bufferSize);
    -
    627 
    -
    628  // converts strings to primitive types
    -
    629  static bool ToInt( const char* str, int* value );
    -
    630  static bool ToUnsigned( const char* str, unsigned* value );
    -
    631  static bool ToBool( const char* str, bool* value );
    -
    632  static bool ToFloat( const char* str, float* value );
    -
    633  static bool ToDouble( const char* str, double* value );
    -
    634  static bool ToInt64(const char* str, int64_t* value);
    -
    635  static bool ToUnsigned64(const char* str, uint64_t* value);
    -
    636  // Changes what is serialized for a boolean value.
    -
    637  // Default to "true" and "false". Shouldn't be changed
    -
    638  // unless you have a special testing or compatibility need.
    -
    639  // Be careful: static, global, & not thread safe.
    -
    640  // Be sure to set static const memory as parameters.
    -
    641  static void SetBoolSerialization(const char* writeTrue, const char* writeFalse);
    -
    642 
    -
    643 private:
    -
    644  static const char* writeBoolTrue;
    -
    645  static const char* writeBoolFalse;
    -
    646 };
    -
    647 
    -
    648 
    -
    674 class TINYXML2_LIB XMLNode
    -
    675 {
    -
    676  friend class XMLDocument;
    -
    677  friend class XMLElement;
    -
    678 public:
    -
    679 
    -
    681  const XMLDocument* GetDocument() const {
    -
    682  TIXMLASSERT( _document );
    -
    683  return _document;
    -
    684  }
    - -
    687  TIXMLASSERT( _document );
    -
    688  return _document;
    -
    689  }
    -
    690 
    -
    692  virtual XMLElement* ToElement() {
    -
    693  return 0;
    -
    694  }
    -
    696  virtual XMLText* ToText() {
    -
    697  return 0;
    -
    698  }
    -
    700  virtual XMLComment* ToComment() {
    -
    701  return 0;
    -
    702  }
    -
    704  virtual XMLDocument* ToDocument() {
    -
    705  return 0;
    -
    706  }
    - -
    709  return 0;
    -
    710  }
    -
    712  virtual XMLUnknown* ToUnknown() {
    -
    713  return 0;
    -
    714  }
    -
    715 
    -
    716  virtual const XMLElement* ToElement() const {
    -
    717  return 0;
    -
    718  }
    -
    719  virtual const XMLText* ToText() const {
    -
    720  return 0;
    -
    721  }
    -
    722  virtual const XMLComment* ToComment() const {
    -
    723  return 0;
    -
    724  }
    -
    725  virtual const XMLDocument* ToDocument() const {
    -
    726  return 0;
    -
    727  }
    -
    728  virtual const XMLDeclaration* ToDeclaration() const {
    -
    729  return 0;
    -
    730  }
    -
    731  virtual const XMLUnknown* ToUnknown() const {
    -
    732  return 0;
    -
    733  }
    -
    734 
    -
    744  const char* Value() const;
    -
    745 
    -
    749  void SetValue( const char* val, bool staticMem=false );
    -
    750 
    -
    752  int GetLineNum() const { return _parseLineNum; }
    -
    753 
    -
    755  const XMLNode* Parent() const {
    -
    756  return _parent;
    -
    757  }
    -
    758 
    -
    759  XMLNode* Parent() {
    -
    760  return _parent;
    -
    761  }
    -
    762 
    -
    764  bool NoChildren() const {
    -
    765  return !_firstChild;
    -
    766  }
    -
    767 
    -
    769  const XMLNode* FirstChild() const {
    -
    770  return _firstChild;
    -
    771  }
    -
    772 
    -
    773  XMLNode* FirstChild() {
    -
    774  return _firstChild;
    -
    775  }
    -
    776 
    -
    780  const XMLElement* FirstChildElement( const char* name = 0 ) const;
    -
    781 
    -
    782  XMLElement* FirstChildElement( const char* name = 0 ) {
    -
    783  return const_cast<XMLElement*>(const_cast<const XMLNode*>(this)->FirstChildElement( name ));
    -
    784  }
    -
    785 
    -
    787  const XMLNode* LastChild() const {
    -
    788  return _lastChild;
    -
    789  }
    -
    790 
    -
    791  XMLNode* LastChild() {
    -
    792  return _lastChild;
    -
    793  }
    -
    794 
    -
    798  const XMLElement* LastChildElement( const char* name = 0 ) const;
    -
    799 
    -
    800  XMLElement* LastChildElement( const char* name = 0 ) {
    -
    801  return const_cast<XMLElement*>(const_cast<const XMLNode*>(this)->LastChildElement(name) );
    -
    802  }
    -
    803 
    -
    805  const XMLNode* PreviousSibling() const {
    -
    806  return _prev;
    -
    807  }
    -
    808 
    -
    809  XMLNode* PreviousSibling() {
    -
    810  return _prev;
    -
    811  }
    -
    812 
    -
    814  const XMLElement* PreviousSiblingElement( const char* name = 0 ) const ;
    -
    815 
    -
    816  XMLElement* PreviousSiblingElement( const char* name = 0 ) {
    -
    817  return const_cast<XMLElement*>(const_cast<const XMLNode*>(this)->PreviousSiblingElement( name ) );
    -
    818  }
    -
    819 
    -
    821  const XMLNode* NextSibling() const {
    -
    822  return _next;
    -
    823  }
    -
    824 
    -
    825  XMLNode* NextSibling() {
    -
    826  return _next;
    -
    827  }
    -
    828 
    -
    830  const XMLElement* NextSiblingElement( const char* name = 0 ) const;
    -
    831 
    -
    832  XMLElement* NextSiblingElement( const char* name = 0 ) {
    -
    833  return const_cast<XMLElement*>(const_cast<const XMLNode*>(this)->NextSiblingElement( name ) );
    -
    834  }
    -
    835 
    - -
    844 
    -
    845  XMLNode* LinkEndChild( XMLNode* addThis ) {
    -
    846  return InsertEndChild( addThis );
    -
    847  }
    - -
    864  XMLNode* InsertAfterChild( XMLNode* afterThis, XMLNode* addThis );
    -
    865 
    - -
    870 
    -
    874  void DeleteChild( XMLNode* node );
    -
    875 
    -
    885  virtual XMLNode* ShallowClone( XMLDocument* document ) const = 0;
    -
    886 
    -
    900  XMLNode* DeepClone( XMLDocument* target ) const;
    -
    901 
    -
    908  virtual bool ShallowEqual( const XMLNode* compare ) const = 0;
    -
    909 
    -
    932  virtual bool Accept( XMLVisitor* visitor ) const = 0;
    -
    933 
    -
    939  void SetUserData(void* userData) { _userData = userData; }
    -
    940 
    -
    946  void* GetUserData() const { return _userData; }
    -
    947 
    -
    948 protected:
    -
    949  explicit XMLNode( XMLDocument* );
    -
    950  virtual ~XMLNode();
    -
    951 
    -
    952  virtual char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr);
    -
    953 
    -
    954  XMLDocument* _document;
    -
    955  XMLNode* _parent;
    -
    956  mutable StrPair _value;
    -
    957  int _parseLineNum;
    -
    958 
    -
    959  XMLNode* _firstChild;
    -
    960  XMLNode* _lastChild;
    -
    961 
    -
    962  XMLNode* _prev;
    -
    963  XMLNode* _next;
    -
    964 
    -
    965  void* _userData;
    -
    966 
    -
    967 private:
    -
    968  MemPool* _memPool;
    -
    969  void Unlink( XMLNode* child );
    -
    970  static void DeleteNode( XMLNode* node );
    -
    971  void InsertChildPreamble( XMLNode* insertThis ) const;
    -
    972  const XMLElement* ToElementWithName( const char* name ) const;
    -
    973 
    -
    974  XMLNode( const XMLNode& ); // not supported
    -
    975  XMLNode& operator=( const XMLNode& ); // not supported
    -
    976 };
    -
    977 
    -
    978 
    -
    991 class TINYXML2_LIB XMLText : public XMLNode
    -
    992 {
    -
    993  friend class XMLDocument;
    -
    994 public:
    -
    995  virtual bool Accept( XMLVisitor* visitor ) const;
    -
    996 
    -
    997  virtual XMLText* ToText() {
    -
    998  return this;
    -
    999  }
    -
    1000  virtual const XMLText* ToText() const {
    -
    1001  return this;
    -
    1002  }
    -
    1003 
    -
    1005  void SetCData( bool isCData ) {
    -
    1006  _isCData = isCData;
    -
    1007  }
    -
    1009  bool CData() const {
    -
    1010  return _isCData;
    -
    1011  }
    -
    1012 
    -
    1013  virtual XMLNode* ShallowClone( XMLDocument* document ) const;
    -
    1014  virtual bool ShallowEqual( const XMLNode* compare ) const;
    -
    1015 
    -
    1016 protected:
    -
    1017  explicit XMLText( XMLDocument* doc ) : XMLNode( doc ), _isCData( false ) {}
    -
    1018  virtual ~XMLText() {}
    -
    1019 
    -
    1020  char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr );
    -
    1021 
    -
    1022 private:
    -
    1023  bool _isCData;
    -
    1024 
    -
    1025  XMLText( const XMLText& ); // not supported
    -
    1026  XMLText& operator=( const XMLText& ); // not supported
    -
    1027 };
    -
    1028 
    -
    1029 
    -
    1031 class TINYXML2_LIB XMLComment : public XMLNode
    -
    1032 {
    -
    1033  friend class XMLDocument;
    -
    1034 public:
    -
    1035  virtual XMLComment* ToComment() {
    -
    1036  return this;
    -
    1037  }
    -
    1038  virtual const XMLComment* ToComment() const {
    -
    1039  return this;
    -
    1040  }
    -
    1041 
    -
    1042  virtual bool Accept( XMLVisitor* visitor ) const;
    -
    1043 
    -
    1044  virtual XMLNode* ShallowClone( XMLDocument* document ) const;
    -
    1045  virtual bool ShallowEqual( const XMLNode* compare ) const;
    -
    1046 
    -
    1047 protected:
    -
    1048  explicit XMLComment( XMLDocument* doc );
    -
    1049  virtual ~XMLComment();
    -
    1050 
    -
    1051  char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr);
    -
    1052 
    -
    1053 private:
    -
    1054  XMLComment( const XMLComment& ); // not supported
    -
    1055  XMLComment& operator=( const XMLComment& ); // not supported
    -
    1056 };
    -
    1057 
    -
    1058 
    -
    1070 class TINYXML2_LIB XMLDeclaration : public XMLNode
    -
    1071 {
    -
    1072  friend class XMLDocument;
    -
    1073 public:
    - -
    1075  return this;
    -
    1076  }
    -
    1077  virtual const XMLDeclaration* ToDeclaration() const {
    -
    1078  return this;
    -
    1079  }
    -
    1080 
    -
    1081  virtual bool Accept( XMLVisitor* visitor ) const;
    -
    1082 
    -
    1083  virtual XMLNode* ShallowClone( XMLDocument* document ) const;
    -
    1084  virtual bool ShallowEqual( const XMLNode* compare ) const;
    -
    1085 
    -
    1086 protected:
    -
    1087  explicit XMLDeclaration( XMLDocument* doc );
    -
    1088  virtual ~XMLDeclaration();
    -
    1089 
    -
    1090  char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr );
    -
    1091 
    -
    1092 private:
    -
    1093  XMLDeclaration( const XMLDeclaration& ); // not supported
    -
    1094  XMLDeclaration& operator=( const XMLDeclaration& ); // not supported
    -
    1095 };
    -
    1096 
    -
    1097 
    -
    1105 class TINYXML2_LIB XMLUnknown : public XMLNode
    -
    1106 {
    -
    1107  friend class XMLDocument;
    -
    1108 public:
    -
    1109  virtual XMLUnknown* ToUnknown() {
    -
    1110  return this;
    -
    1111  }
    -
    1112  virtual const XMLUnknown* ToUnknown() const {
    -
    1113  return this;
    -
    1114  }
    -
    1115 
    -
    1116  virtual bool Accept( XMLVisitor* visitor ) const;
    -
    1117 
    -
    1118  virtual XMLNode* ShallowClone( XMLDocument* document ) const;
    -
    1119  virtual bool ShallowEqual( const XMLNode* compare ) const;
    -
    1120 
    -
    1121 protected:
    -
    1122  explicit XMLUnknown( XMLDocument* doc );
    -
    1123  virtual ~XMLUnknown();
    -
    1124 
    -
    1125  char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr );
    -
    1126 
    -
    1127 private:
    -
    1128  XMLUnknown( const XMLUnknown& ); // not supported
    -
    1129  XMLUnknown& operator=( const XMLUnknown& ); // not supported
    -
    1130 };
    -
    1131 
    -
    1132 
    -
    1133 
    -
    1140 class TINYXML2_LIB XMLAttribute
    -
    1141 {
    -
    1142  friend class XMLElement;
    -
    1143 public:
    -
    1145  const char* Name() const;
    -
    1146 
    -
    1148  const char* Value() const;
    -
    1149 
    -
    1151  int GetLineNum() const { return _parseLineNum; }
    -
    1152 
    -
    1154  const XMLAttribute* Next() const {
    -
    1155  return _next;
    -
    1156  }
    -
    1157 
    -
    1162  int IntValue() const {
    -
    1163  int i = 0;
    -
    1164  QueryIntValue(&i);
    -
    1165  return i;
    -
    1166  }
    -
    1167 
    -
    1168  int64_t Int64Value() const {
    -
    1169  int64_t i = 0;
    -
    1170  QueryInt64Value(&i);
    -
    1171  return i;
    -
    1172  }
    -
    1173 
    -
    1174  uint64_t Unsigned64Value() const {
    -
    1175  uint64_t i = 0;
    -
    1176  QueryUnsigned64Value(&i);
    -
    1177  return i;
    -
    1178  }
    -
    1179 
    -
    1181  unsigned UnsignedValue() const {
    -
    1182  unsigned i=0;
    -
    1183  QueryUnsignedValue( &i );
    -
    1184  return i;
    -
    1185  }
    -
    1187  bool BoolValue() const {
    -
    1188  bool b=false;
    -
    1189  QueryBoolValue( &b );
    -
    1190  return b;
    -
    1191  }
    -
    1193  double DoubleValue() const {
    -
    1194  double d=0;
    -
    1195  QueryDoubleValue( &d );
    -
    1196  return d;
    -
    1197  }
    -
    1199  float FloatValue() const {
    -
    1200  float f=0;
    -
    1201  QueryFloatValue( &f );
    -
    1202  return f;
    -
    1203  }
    -
    1204 
    -
    1209  XMLError QueryIntValue( int* value ) const;
    -
    1211  XMLError QueryUnsignedValue( unsigned int* value ) const;
    -
    1213  XMLError QueryInt64Value(int64_t* value) const;
    -
    1215  XMLError QueryUnsigned64Value(uint64_t* value) const;
    -
    1217  XMLError QueryBoolValue( bool* value ) const;
    -
    1219  XMLError QueryDoubleValue( double* value ) const;
    -
    1221  XMLError QueryFloatValue( float* value ) const;
    -
    1222 
    -
    1224  void SetAttribute( const char* value );
    -
    1226  void SetAttribute( int value );
    -
    1228  void SetAttribute( unsigned value );
    -
    1230  void SetAttribute(int64_t value);
    -
    1232  void SetAttribute(uint64_t value);
    -
    1234  void SetAttribute( bool value );
    -
    1236  void SetAttribute( double value );
    -
    1238  void SetAttribute( float value );
    -
    1239 
    -
    1240 private:
    -
    1241  enum { BUF_SIZE = 200 };
    -
    1242 
    -
    1243  XMLAttribute() : _name(), _value(),_parseLineNum( 0 ), _next( 0 ), _memPool( 0 ) {}
    -
    1244  virtual ~XMLAttribute() {}
    -
    1245 
    -
    1246  XMLAttribute( const XMLAttribute& ); // not supported
    -
    1247  void operator=( const XMLAttribute& ); // not supported
    -
    1248  void SetName( const char* name );
    -
    1249 
    -
    1250  char* ParseDeep( char* p, bool processEntities, int* curLineNumPtr );
    -
    1251 
    -
    1252  mutable StrPair _name;
    -
    1253  mutable StrPair _value;
    -
    1254  int _parseLineNum;
    -
    1255  XMLAttribute* _next;
    -
    1256  MemPool* _memPool;
    -
    1257 };
    -
    1258 
    -
    1259 
    -
    1264 class TINYXML2_LIB XMLElement : public XMLNode
    -
    1265 {
    -
    1266  friend class XMLDocument;
    -
    1267 public:
    -
    1269  const char* Name() const {
    -
    1270  return Value();
    -
    1271  }
    -
    1273  void SetName( const char* str, bool staticMem=false ) {
    -
    1274  SetValue( str, staticMem );
    -
    1275  }
    -
    1276 
    -
    1277  virtual XMLElement* ToElement() {
    -
    1278  return this;
    -
    1279  }
    -
    1280  virtual const XMLElement* ToElement() const {
    -
    1281  return this;
    -
    1282  }
    -
    1283  virtual bool Accept( XMLVisitor* visitor ) const;
    -
    1284 
    -
    1308  const char* Attribute( const char* name, const char* value=0 ) const;
    -
    1309 
    -
    1316  int IntAttribute(const char* name, int defaultValue = 0) const;
    -
    1318  unsigned UnsignedAttribute(const char* name, unsigned defaultValue = 0) const;
    -
    1320  int64_t Int64Attribute(const char* name, int64_t defaultValue = 0) const;
    -
    1322  uint64_t Unsigned64Attribute(const char* name, uint64_t defaultValue = 0) const;
    -
    1324  bool BoolAttribute(const char* name, bool defaultValue = false) const;
    -
    1326  double DoubleAttribute(const char* name, double defaultValue = 0) const;
    -
    1328  float FloatAttribute(const char* name, float defaultValue = 0) const;
    -
    1329 
    -
    1343  XMLError QueryIntAttribute( const char* name, int* value ) const {
    -
    1344  const XMLAttribute* a = FindAttribute( name );
    -
    1345  if ( !a ) {
    -
    1346  return XML_NO_ATTRIBUTE;
    -
    1347  }
    -
    1348  return a->QueryIntValue( value );
    -
    1349  }
    -
    1350 
    -
    1352  XMLError QueryUnsignedAttribute( const char* name, unsigned int* value ) const {
    -
    1353  const XMLAttribute* a = FindAttribute( name );
    -
    1354  if ( !a ) {
    -
    1355  return XML_NO_ATTRIBUTE;
    -
    1356  }
    -
    1357  return a->QueryUnsignedValue( value );
    -
    1358  }
    -
    1359 
    -
    1361  XMLError QueryInt64Attribute(const char* name, int64_t* value) const {
    -
    1362  const XMLAttribute* a = FindAttribute(name);
    -
    1363  if (!a) {
    -
    1364  return XML_NO_ATTRIBUTE;
    -
    1365  }
    -
    1366  return a->QueryInt64Value(value);
    -
    1367  }
    -
    1368 
    -
    1370  XMLError QueryUnsigned64Attribute(const char* name, uint64_t* value) const {
    -
    1371  const XMLAttribute* a = FindAttribute(name);
    -
    1372  if(!a) {
    -
    1373  return XML_NO_ATTRIBUTE;
    -
    1374  }
    -
    1375  return a->QueryUnsigned64Value(value);
    -
    1376  }
    -
    1377 
    -
    1379  XMLError QueryBoolAttribute( const char* name, bool* value ) const {
    -
    1380  const XMLAttribute* a = FindAttribute( name );
    -
    1381  if ( !a ) {
    -
    1382  return XML_NO_ATTRIBUTE;
    -
    1383  }
    -
    1384  return a->QueryBoolValue( value );
    -
    1385  }
    -
    1387  XMLError QueryDoubleAttribute( const char* name, double* value ) const {
    -
    1388  const XMLAttribute* a = FindAttribute( name );
    -
    1389  if ( !a ) {
    -
    1390  return XML_NO_ATTRIBUTE;
    -
    1391  }
    -
    1392  return a->QueryDoubleValue( value );
    -
    1393  }
    -
    1395  XMLError QueryFloatAttribute( const char* name, float* value ) const {
    -
    1396  const XMLAttribute* a = FindAttribute( name );
    -
    1397  if ( !a ) {
    -
    1398  return XML_NO_ATTRIBUTE;
    -
    1399  }
    -
    1400  return a->QueryFloatValue( value );
    -
    1401  }
    -
    1402 
    -
    1404  XMLError QueryStringAttribute(const char* name, const char** value) const {
    -
    1405  const XMLAttribute* a = FindAttribute(name);
    -
    1406  if (!a) {
    -
    1407  return XML_NO_ATTRIBUTE;
    -
    1408  }
    -
    1409  *value = a->Value();
    -
    1410  return XML_SUCCESS;
    -
    1411  }
    -
    1412 
    -
    1413 
    -
    1414 
    -
    1432  XMLError QueryAttribute( const char* name, int* value ) const {
    -
    1433  return QueryIntAttribute( name, value );
    -
    1434  }
    -
    1435 
    -
    1436  XMLError QueryAttribute( const char* name, unsigned int* value ) const {
    -
    1437  return QueryUnsignedAttribute( name, value );
    -
    1438  }
    -
    1439 
    -
    1440  XMLError QueryAttribute(const char* name, int64_t* value) const {
    -
    1441  return QueryInt64Attribute(name, value);
    -
    1442  }
    -
    1443 
    -
    1444  XMLError QueryAttribute(const char* name, uint64_t* value) const {
    -
    1445  return QueryUnsigned64Attribute(name, value);
    -
    1446  }
    -
    1447 
    -
    1448  XMLError QueryAttribute( const char* name, bool* value ) const {
    -
    1449  return QueryBoolAttribute( name, value );
    -
    1450  }
    -
    1451 
    -
    1452  XMLError QueryAttribute( const char* name, double* value ) const {
    -
    1453  return QueryDoubleAttribute( name, value );
    -
    1454  }
    -
    1455 
    -
    1456  XMLError QueryAttribute( const char* name, float* value ) const {
    -
    1457  return QueryFloatAttribute( name, value );
    -
    1458  }
    -
    1459 
    -
    1460  XMLError QueryAttribute(const char* name, const char** value) const {
    -
    1461  return QueryStringAttribute(name, value);
    -
    1462  }
    -
    1463 
    -
    1465  void SetAttribute( const char* name, const char* value ) {
    -
    1466  XMLAttribute* a = FindOrCreateAttribute( name );
    -
    1467  a->SetAttribute( value );
    -
    1468  }
    -
    1470  void SetAttribute( const char* name, int value ) {
    -
    1471  XMLAttribute* a = FindOrCreateAttribute( name );
    -
    1472  a->SetAttribute( value );
    -
    1473  }
    -
    1475  void SetAttribute( const char* name, unsigned value ) {
    -
    1476  XMLAttribute* a = FindOrCreateAttribute( name );
    -
    1477  a->SetAttribute( value );
    -
    1478  }
    -
    1479 
    -
    1481  void SetAttribute(const char* name, int64_t value) {
    -
    1482  XMLAttribute* a = FindOrCreateAttribute(name);
    -
    1483  a->SetAttribute(value);
    -
    1484  }
    -
    1485 
    -
    1487  void SetAttribute(const char* name, uint64_t value) {
    -
    1488  XMLAttribute* a = FindOrCreateAttribute(name);
    -
    1489  a->SetAttribute(value);
    -
    1490  }
    -
    1491 
    -
    1493  void SetAttribute( const char* name, bool value ) {
    -
    1494  XMLAttribute* a = FindOrCreateAttribute( name );
    -
    1495  a->SetAttribute( value );
    -
    1496  }
    -
    1498  void SetAttribute( const char* name, double value ) {
    -
    1499  XMLAttribute* a = FindOrCreateAttribute( name );
    -
    1500  a->SetAttribute( value );
    -
    1501  }
    -
    1503  void SetAttribute( const char* name, float value ) {
    -
    1504  XMLAttribute* a = FindOrCreateAttribute( name );
    -
    1505  a->SetAttribute( value );
    -
    1506  }
    -
    1507 
    -
    1511  void DeleteAttribute( const char* name );
    -
    1512 
    -
    1514  const XMLAttribute* FirstAttribute() const {
    -
    1515  return _rootAttribute;
    -
    1516  }
    -
    1518  const XMLAttribute* FindAttribute( const char* name ) const;
    -
    1519 
    -
    1548  const char* GetText() const;
    -
    1549 
    -
    1584  void SetText( const char* inText );
    -
    1586  void SetText( int value );
    -
    1588  void SetText( unsigned value );
    -
    1590  void SetText(int64_t value);
    -
    1592  void SetText(uint64_t value);
    -
    1594  void SetText( bool value );
    -
    1596  void SetText( double value );
    -
    1598  void SetText( float value );
    -
    1599 
    -
    1626  XMLError QueryIntText( int* ival ) const;
    -
    1628  XMLError QueryUnsignedText( unsigned* uval ) const;
    -
    1630  XMLError QueryInt64Text(int64_t* uval) const;
    -
    1632  XMLError QueryUnsigned64Text(uint64_t* uval) const;
    -
    1634  XMLError QueryBoolText( bool* bval ) const;
    -
    1636  XMLError QueryDoubleText( double* dval ) const;
    -
    1638  XMLError QueryFloatText( float* fval ) const;
    -
    1639 
    -
    1640  int IntText(int defaultValue = 0) const;
    -
    1641 
    -
    1643  unsigned UnsignedText(unsigned defaultValue = 0) const;
    -
    1645  int64_t Int64Text(int64_t defaultValue = 0) const;
    -
    1647  uint64_t Unsigned64Text(uint64_t defaultValue = 0) const;
    -
    1649  bool BoolText(bool defaultValue = false) const;
    -
    1651  double DoubleText(double defaultValue = 0) const;
    -
    1653  float FloatText(float defaultValue = 0) const;
    -
    1654 
    -
    1659  XMLElement* InsertNewChildElement(const char* name);
    -
    1661  XMLComment* InsertNewComment(const char* comment);
    -
    1663  XMLText* InsertNewText(const char* text);
    - -
    1667  XMLUnknown* InsertNewUnknown(const char* text);
    -
    1668 
    -
    1669 
    -
    1670  // internal:
    -
    1671  enum ElementClosingType {
    -
    1672  OPEN, // <foo>
    -
    1673  CLOSED, // <foo/>
    -
    1674  CLOSING // </foo>
    -
    1675  };
    -
    1676  ElementClosingType ClosingType() const {
    -
    1677  return _closingType;
    -
    1678  }
    -
    1679  virtual XMLNode* ShallowClone( XMLDocument* document ) const;
    -
    1680  virtual bool ShallowEqual( const XMLNode* compare ) const;
    -
    1681 
    -
    1682 protected:
    -
    1683  char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr );
    -
    1684 
    -
    1685 private:
    -
    1686  XMLElement( XMLDocument* doc );
    -
    1687  virtual ~XMLElement();
    -
    1688  XMLElement( const XMLElement& ); // not supported
    -
    1689  void operator=( const XMLElement& ); // not supported
    -
    1690 
    -
    1691  XMLAttribute* FindOrCreateAttribute( const char* name );
    -
    1692  char* ParseAttributes( char* p, int* curLineNumPtr );
    -
    1693  static void DeleteAttribute( XMLAttribute* attribute );
    -
    1694  XMLAttribute* CreateAttribute();
    -
    1695 
    -
    1696  enum { BUF_SIZE = 200 };
    -
    1697  ElementClosingType _closingType;
    -
    1698  // The attribute list is ordered; there is no 'lastAttribute'
    -
    1699  // because the list needs to be scanned for dupes before adding
    -
    1700  // a new attribute.
    -
    1701  XMLAttribute* _rootAttribute;
    -
    1702 };
    -
    1703 
    -
    1704 
    -
    1705 enum Whitespace {
    -
    1706  PRESERVE_WHITESPACE,
    -
    1707  COLLAPSE_WHITESPACE
    -
    1708 };
    -
    1709 
    -
    1710 
    -
    1716 class TINYXML2_LIB XMLDocument : public XMLNode
    -
    1717 {
    -
    1718  friend class XMLElement;
    -
    1719  // Gives access to SetError and Push/PopDepth, but over-access for everything else.
    -
    1720  // Wishing C++ had "internal" scope.
    -
    1721  friend class XMLNode;
    -
    1722  friend class XMLText;
    -
    1723  friend class XMLComment;
    -
    1724  friend class XMLDeclaration;
    -
    1725  friend class XMLUnknown;
    -
    1726 public:
    -
    1728  XMLDocument( bool processEntities = true, Whitespace whitespaceMode = PRESERVE_WHITESPACE );
    -
    1729  ~XMLDocument();
    -
    1730 
    - -
    1732  TIXMLASSERT( this == _document );
    -
    1733  return this;
    -
    1734  }
    -
    1735  virtual const XMLDocument* ToDocument() const {
    -
    1736  TIXMLASSERT( this == _document );
    -
    1737  return this;
    -
    1738  }
    -
    1739 
    -
    1750  XMLError Parse( const char* xml, size_t nBytes=static_cast<size_t>(-1) );
    -
    1751 
    -
    1757  XMLError LoadFile( const char* filename );
    -
    1758 
    -
    1770  XMLError LoadFile( FILE* );
    -
    1771 
    -
    1777  XMLError SaveFile( const char* filename, bool compact = false );
    -
    1778 
    -
    1786  XMLError SaveFile( FILE* fp, bool compact = false );
    -
    1787 
    -
    1788  bool ProcessEntities() const {
    -
    1789  return _processEntities;
    -
    1790  }
    -
    1791  Whitespace WhitespaceMode() const {
    -
    1792  return _whitespaceMode;
    -
    1793  }
    -
    1794 
    -
    1798  bool HasBOM() const {
    -
    1799  return _writeBOM;
    -
    1800  }
    -
    1803  void SetBOM( bool useBOM ) {
    -
    1804  _writeBOM = useBOM;
    -
    1805  }
    -
    1806 
    - -
    1811  return FirstChildElement();
    -
    1812  }
    -
    1813  const XMLElement* RootElement() const {
    -
    1814  return FirstChildElement();
    -
    1815  }
    -
    1816 
    -
    1831  void Print( XMLPrinter* streamer=0 ) const;
    -
    1832  virtual bool Accept( XMLVisitor* visitor ) const;
    -
    1833 
    -
    1839  XMLElement* NewElement( const char* name );
    -
    1845  XMLComment* NewComment( const char* comment );
    -
    1851  XMLText* NewText( const char* text );
    -
    1863  XMLDeclaration* NewDeclaration( const char* text=0 );
    -
    1869  XMLUnknown* NewUnknown( const char* text );
    -
    1870 
    -
    1875  void DeleteNode( XMLNode* node );
    -
    1876 
    -
    1878  void ClearError();
    -
    1879 
    -
    1881  bool Error() const {
    -
    1882  return _errorID != XML_SUCCESS;
    -
    1883  }
    -
    1885  XMLError ErrorID() const {
    -
    1886  return _errorID;
    -
    1887  }
    -
    1888  const char* ErrorName() const;
    -
    1889  static const char* ErrorIDToName(XMLError errorID);
    -
    1890 
    -
    1894  const char* ErrorStr() const;
    -
    1895 
    -
    1897  void PrintError() const;
    -
    1898 
    -
    1900  int ErrorLineNum() const
    -
    1901  {
    -
    1902  return _errorLineNum;
    -
    1903  }
    -
    1904 
    -
    1906  void Clear();
    -
    1907 
    -
    1915  void DeepCopy(XMLDocument* target) const;
    -
    1916 
    -
    1917  // internal
    -
    1918  char* Identify( char* p, XMLNode** node );
    -
    1919 
    -
    1920  // internal
    -
    1921  void MarkInUse(const XMLNode* const);
    -
    1922 
    -
    1923  virtual XMLNode* ShallowClone( XMLDocument* /*document*/ ) const {
    -
    1924  return 0;
    -
    1925  }
    -
    1926  virtual bool ShallowEqual( const XMLNode* /*compare*/ ) const {
    -
    1927  return false;
    -
    1928  }
    -
    1929 
    -
    1930 private:
    -
    1931  XMLDocument( const XMLDocument& ); // not supported
    -
    1932  void operator=( const XMLDocument& ); // not supported
    -
    1933 
    -
    1934  bool _writeBOM;
    -
    1935  bool _processEntities;
    -
    1936  XMLError _errorID;
    -
    1937  Whitespace _whitespaceMode;
    -
    1938  mutable StrPair _errorStr;
    -
    1939  int _errorLineNum;
    -
    1940  char* _charBuffer;
    -
    1941  int _parseCurLineNum;
    -
    1942  int _parsingDepth;
    -
    1943  // Memory tracking does add some overhead.
    -
    1944  // However, the code assumes that you don't
    -
    1945  // have a bunch of unlinked nodes around.
    -
    1946  // Therefore it takes less memory to track
    -
    1947  // in the document vs. a linked list in the XMLNode,
    -
    1948  // and the performance is the same.
    -
    1949  DynArray<XMLNode*, 10> _unlinked;
    -
    1950 
    -
    1951  MemPoolT< sizeof(XMLElement) > _elementPool;
    -
    1952  MemPoolT< sizeof(XMLAttribute) > _attributePool;
    -
    1953  MemPoolT< sizeof(XMLText) > _textPool;
    -
    1954  MemPoolT< sizeof(XMLComment) > _commentPool;
    -
    1955 
    -
    1956  static const char* _errorNames[XML_ERROR_COUNT];
    -
    1957 
    -
    1958  void Parse();
    -
    1959 
    -
    1960  void SetError( XMLError error, int lineNum, const char* format, ... );
    -
    1961 
    -
    1962  // Something of an obvious security hole, once it was discovered.
    -
    1963  // Either an ill-formed XML or an excessively deep one can overflow
    -
    1964  // the stack. Track stack depth, and error out if needed.
    -
    1965  class DepthTracker {
    -
    1966  public:
    -
    1967  explicit DepthTracker(XMLDocument * document) {
    -
    1968  this->_document = document;
    -
    1969  document->PushDepth();
    -
    1970  }
    -
    1971  ~DepthTracker() {
    -
    1972  _document->PopDepth();
    -
    1973  }
    -
    1974  private:
    -
    1975  XMLDocument * _document;
    -
    1976  };
    -
    1977  void PushDepth();
    -
    1978  void PopDepth();
    -
    1979 
    -
    1980  template<class NodeType, int PoolElementSize>
    -
    1981  NodeType* CreateUnlinkedNode( MemPoolT<PoolElementSize>& pool );
    -
    1982 };
    -
    1983 
    -
    1984 template<class NodeType, int PoolElementSize>
    -
    1985 inline NodeType* XMLDocument::CreateUnlinkedNode( MemPoolT<PoolElementSize>& pool )
    -
    1986 {
    -
    1987  TIXMLASSERT( sizeof( NodeType ) == PoolElementSize );
    -
    1988  TIXMLASSERT( sizeof( NodeType ) == pool.ItemSize() );
    -
    1989  NodeType* returnNode = new (pool.Alloc()) NodeType( this );
    -
    1990  TIXMLASSERT( returnNode );
    -
    1991  returnNode->_memPool = &pool;
    -
    1992 
    -
    1993  _unlinked.Push(returnNode);
    -
    1994  return returnNode;
    -
    1995 }
    -
    1996 
    -
    2052 class TINYXML2_LIB XMLHandle
    -
    2053 {
    -
    2054 public:
    -
    2056  explicit XMLHandle( XMLNode* node ) : _node( node ) {
    -
    2057  }
    -
    2059  explicit XMLHandle( XMLNode& node ) : _node( &node ) {
    -
    2060  }
    -
    2062  XMLHandle( const XMLHandle& ref ) : _node( ref._node ) {
    -
    2063  }
    -
    2065  XMLHandle& operator=( const XMLHandle& ref ) {
    -
    2066  _node = ref._node;
    -
    2067  return *this;
    -
    2068  }
    -
    2069 
    - -
    2072  return XMLHandle( _node ? _node->FirstChild() : 0 );
    -
    2073  }
    -
    2075  XMLHandle FirstChildElement( const char* name = 0 ) {
    -
    2076  return XMLHandle( _node ? _node->FirstChildElement( name ) : 0 );
    -
    2077  }
    - -
    2080  return XMLHandle( _node ? _node->LastChild() : 0 );
    -
    2081  }
    -
    2083  XMLHandle LastChildElement( const char* name = 0 ) {
    -
    2084  return XMLHandle( _node ? _node->LastChildElement( name ) : 0 );
    -
    2085  }
    - -
    2088  return XMLHandle( _node ? _node->PreviousSibling() : 0 );
    -
    2089  }
    -
    2091  XMLHandle PreviousSiblingElement( const char* name = 0 ) {
    -
    2092  return XMLHandle( _node ? _node->PreviousSiblingElement( name ) : 0 );
    -
    2093  }
    - -
    2096  return XMLHandle( _node ? _node->NextSibling() : 0 );
    -
    2097  }
    -
    2099  XMLHandle NextSiblingElement( const char* name = 0 ) {
    -
    2100  return XMLHandle( _node ? _node->NextSiblingElement( name ) : 0 );
    -
    2101  }
    -
    2102 
    - -
    2105  return _node;
    -
    2106  }
    - -
    2109  return ( _node ? _node->ToElement() : 0 );
    -
    2110  }
    - -
    2113  return ( _node ? _node->ToText() : 0 );
    -
    2114  }
    - -
    2117  return ( _node ? _node->ToUnknown() : 0 );
    -
    2118  }
    - -
    2121  return ( _node ? _node->ToDeclaration() : 0 );
    -
    2122  }
    -
    2123 
    -
    2124 private:
    -
    2125  XMLNode* _node;
    -
    2126 };
    -
    2127 
    -
    2128 
    -
    2133 class TINYXML2_LIB XMLConstHandle
    -
    2134 {
    -
    2135 public:
    -
    2136  explicit XMLConstHandle( const XMLNode* node ) : _node( node ) {
    -
    2137  }
    -
    2138  explicit XMLConstHandle( const XMLNode& node ) : _node( &node ) {
    -
    2139  }
    -
    2140  XMLConstHandle( const XMLConstHandle& ref ) : _node( ref._node ) {
    -
    2141  }
    -
    2142 
    -
    2143  XMLConstHandle& operator=( const XMLConstHandle& ref ) {
    -
    2144  _node = ref._node;
    -
    2145  return *this;
    -
    2146  }
    -
    2147 
    -
    2148  const XMLConstHandle FirstChild() const {
    -
    2149  return XMLConstHandle( _node ? _node->FirstChild() : 0 );
    -
    2150  }
    -
    2151  const XMLConstHandle FirstChildElement( const char* name = 0 ) const {
    -
    2152  return XMLConstHandle( _node ? _node->FirstChildElement( name ) : 0 );
    -
    2153  }
    -
    2154  const XMLConstHandle LastChild() const {
    -
    2155  return XMLConstHandle( _node ? _node->LastChild() : 0 );
    -
    2156  }
    -
    2157  const XMLConstHandle LastChildElement( const char* name = 0 ) const {
    -
    2158  return XMLConstHandle( _node ? _node->LastChildElement( name ) : 0 );
    -
    2159  }
    -
    2160  const XMLConstHandle PreviousSibling() const {
    -
    2161  return XMLConstHandle( _node ? _node->PreviousSibling() : 0 );
    -
    2162  }
    -
    2163  const XMLConstHandle PreviousSiblingElement( const char* name = 0 ) const {
    -
    2164  return XMLConstHandle( _node ? _node->PreviousSiblingElement( name ) : 0 );
    -
    2165  }
    -
    2166  const XMLConstHandle NextSibling() const {
    -
    2167  return XMLConstHandle( _node ? _node->NextSibling() : 0 );
    -
    2168  }
    -
    2169  const XMLConstHandle NextSiblingElement( const char* name = 0 ) const {
    -
    2170  return XMLConstHandle( _node ? _node->NextSiblingElement( name ) : 0 );
    -
    2171  }
    -
    2172 
    -
    2173 
    -
    2174  const XMLNode* ToNode() const {
    -
    2175  return _node;
    -
    2176  }
    -
    2177  const XMLElement* ToElement() const {
    -
    2178  return ( _node ? _node->ToElement() : 0 );
    -
    2179  }
    -
    2180  const XMLText* ToText() const {
    -
    2181  return ( _node ? _node->ToText() : 0 );
    -
    2182  }
    -
    2183  const XMLUnknown* ToUnknown() const {
    -
    2184  return ( _node ? _node->ToUnknown() : 0 );
    -
    2185  }
    -
    2186  const XMLDeclaration* ToDeclaration() const {
    -
    2187  return ( _node ? _node->ToDeclaration() : 0 );
    -
    2188  }
    -
    2189 
    -
    2190 private:
    -
    2191  const XMLNode* _node;
    -
    2192 };
    -
    2193 
    -
    2194 
    -
    2237 class TINYXML2_LIB XMLPrinter : public XMLVisitor
    -
    2238 {
    -
    2239 public:
    -
    2246  XMLPrinter( FILE* file=0, bool compact = false, int depth = 0 );
    -
    2247  virtual ~XMLPrinter() {}
    -
    2248 
    -
    2250  void PushHeader( bool writeBOM, bool writeDeclaration );
    -
    2254  void OpenElement( const char* name, bool compactMode=false );
    -
    2256  void PushAttribute( const char* name, const char* value );
    -
    2257  void PushAttribute( const char* name, int value );
    -
    2258  void PushAttribute( const char* name, unsigned value );
    -
    2259  void PushAttribute( const char* name, int64_t value );
    -
    2260  void PushAttribute( const char* name, uint64_t value );
    -
    2261  void PushAttribute( const char* name, bool value );
    -
    2262  void PushAttribute( const char* name, double value );
    -
    2264  virtual void CloseElement( bool compactMode=false );
    -
    2265 
    -
    2267  void PushText( const char* text, bool cdata=false );
    -
    2269  void PushText( int value );
    -
    2271  void PushText( unsigned value );
    -
    2273  void PushText( int64_t value );
    -
    2275  void PushText( uint64_t value );
    -
    2277  void PushText( bool value );
    -
    2279  void PushText( float value );
    -
    2281  void PushText( double value );
    -
    2282 
    -
    2284  void PushComment( const char* comment );
    -
    2285 
    -
    2286  void PushDeclaration( const char* value );
    -
    2287  void PushUnknown( const char* value );
    -
    2288 
    -
    2289  virtual bool VisitEnter( const XMLDocument& /*doc*/ );
    -
    2290  virtual bool VisitExit( const XMLDocument& /*doc*/ ) {
    -
    2291  return true;
    -
    2292  }
    -
    2293 
    -
    2294  virtual bool VisitEnter( const XMLElement& element, const XMLAttribute* attribute );
    -
    2295  virtual bool VisitExit( const XMLElement& element );
    -
    2296 
    -
    2297  virtual bool Visit( const XMLText& text );
    -
    2298  virtual bool Visit( const XMLComment& comment );
    -
    2299  virtual bool Visit( const XMLDeclaration& declaration );
    -
    2300  virtual bool Visit( const XMLUnknown& unknown );
    -
    2301 
    -
    2306  const char* CStr() const {
    -
    2307  return _buffer.Mem();
    -
    2308  }
    -
    2314  int CStrSize() const {
    -
    2315  return _buffer.Size();
    -
    2316  }
    -
    2321  void ClearBuffer( bool resetToFirstElement = true ) {
    -
    2322  _buffer.Clear();
    -
    2323  _buffer.Push(0);
    -
    2324  _firstElement = resetToFirstElement;
    -
    2325  }
    -
    2326 
    -
    2327 protected:
    -
    2328  virtual bool CompactMode( const XMLElement& ) { return _compactMode; }
    -
    2329 
    -
    2333  virtual void PrintSpace( int depth );
    -
    2334  virtual void Print( const char* format, ... );
    -
    2335  virtual void Write( const char* data, size_t size );
    -
    2336  virtual void Putc( char ch );
    -
    2337 
    -
    2338  inline void Write(const char* data) { Write(data, strlen(data)); }
    -
    2339 
    -
    2340  void SealElementIfJustOpened();
    -
    2341  bool _elementJustOpened;
    -
    2342  DynArray< const char*, 10 > _stack;
    -
    2343 
    -
    2344 private:
    -
    2349  void PrepareForNewNode( bool compactMode );
    -
    2350  void PrintString( const char*, bool restrictedEntitySet ); // prints out, after detecting entities.
    -
    2351 
    -
    2352  bool _firstElement;
    -
    2353  FILE* _fp;
    -
    2354  int _depth;
    -
    2355  int _textDepth;
    -
    2356  bool _processEntities;
    -
    2357  bool _compactMode;
    -
    2358 
    -
    2359  enum {
    -
    2360  ENTITY_RANGE = 64,
    -
    2361  BUF_SIZE = 200
    -
    2362  };
    -
    2363  bool _entityFlag[ENTITY_RANGE];
    -
    2364  bool _restrictedEntityFlag[ENTITY_RANGE];
    -
    2365 
    -
    2366  DynArray< char, 20 > _buffer;
    -
    2367 
    -
    2368  // Prohibit cloning, intentionally not implemented
    -
    2369  XMLPrinter( const XMLPrinter& );
    -
    2370  XMLPrinter& operator=( const XMLPrinter& );
    -
    2371 };
    -
    2372 
    -
    2373 
    -
    2374 } // tinyxml2
    -
    2375 
    -
    2376 #if defined(_MSC_VER)
    -
    2377 # pragma warning(pop)
    -
    2378 #endif
    -
    2379 
    -
    2380 #endif // TINYXML2_INCLUDED
    -
    Definition: tinyxml2.h:1141
    -
    int GetLineNum() const
    Gets the line number the attribute is in, if the document was parsed from a file.
    Definition: tinyxml2.h:1151
    -
    XMLError QueryFloatValue(float *value) const
    See QueryIntValue.
    -
    unsigned UnsignedValue() const
    Query as an unsigned integer. See IntValue()
    Definition: tinyxml2.h:1181
    -
    void SetAttribute(uint64_t value)
    Set the attribute to value.
    -
    const char * Value() const
    The value of the attribute.
    -
    float FloatValue() const
    Query as a float. See IntValue()
    Definition: tinyxml2.h:1199
    -
    XMLError QueryDoubleValue(double *value) const
    See QueryIntValue.
    -
    void SetAttribute(const char *value)
    Set the attribute to a string value.
    -
    XMLError QueryUnsignedValue(unsigned int *value) const
    See QueryIntValue.
    -
    double DoubleValue() const
    Query as a double. See IntValue()
    Definition: tinyxml2.h:1193
    -
    XMLError QueryInt64Value(int64_t *value) const
    See QueryIntValue.
    -
    XMLError QueryBoolValue(bool *value) const
    See QueryIntValue.
    -
    XMLError QueryIntValue(int *value) const
    -
    void SetAttribute(int64_t value)
    Set the attribute to value.
    -
    bool BoolValue() const
    Query as a boolean. See IntValue()
    Definition: tinyxml2.h:1187
    -
    void SetAttribute(double value)
    Set the attribute to value.
    -
    void SetAttribute(bool value)
    Set the attribute to value.
    -
    const char * Name() const
    The name of the attribute.
    -
    void SetAttribute(int value)
    Set the attribute to value.
    -
    int IntValue() const
    Definition: tinyxml2.h:1162
    -
    void SetAttribute(unsigned value)
    Set the attribute to value.
    -
    void SetAttribute(float value)
    Set the attribute to value.
    -
    const XMLAttribute * Next() const
    The next attribute in the list.
    Definition: tinyxml2.h:1154
    -
    XMLError QueryUnsigned64Value(uint64_t *value) const
    See QueryIntValue.
    -
    Definition: tinyxml2.h:1032
    -
    virtual XMLNode * ShallowClone(XMLDocument *document) const
    -
    virtual bool Accept(XMLVisitor *visitor) const
    -
    virtual bool ShallowEqual(const XMLNode *compare) const
    -
    virtual XMLComment * ToComment()
    Safely cast to a Comment, or null.
    Definition: tinyxml2.h:1035
    -
    Definition: tinyxml2.h:2134
    -
    Definition: tinyxml2.h:1071
    -
    virtual XMLNode * ShallowClone(XMLDocument *document) const
    -
    virtual XMLDeclaration * ToDeclaration()
    Safely cast to a Declaration, or null.
    Definition: tinyxml2.h:1074
    -
    virtual bool Accept(XMLVisitor *visitor) const
    -
    virtual bool ShallowEqual(const XMLNode *compare) const
    -
    Definition: tinyxml2.h:1717
    -
    void SetBOM(bool useBOM)
    Definition: tinyxml2.h:1803
    -
    void PrintError() const
    A (trivial) utility function that prints the ErrorStr() to stdout.
    -
    XMLError LoadFile(const char *filename)
    -
    bool HasBOM() const
    Definition: tinyxml2.h:1798
    -
    bool Error() const
    Return true if there was an error parsing the document.
    Definition: tinyxml2.h:1881
    -
    virtual XMLDocument * ToDocument()
    Safely cast to a Document, or null.
    Definition: tinyxml2.h:1731
    -
    void ClearError()
    Clears the error flags.
    -
    XMLUnknown * NewUnknown(const char *text)
    -
    int ErrorLineNum() const
    Return the line where the error occurred, or zero if unknown.
    Definition: tinyxml2.h:1900
    -
    XMLDocument(bool processEntities=true, Whitespace whitespaceMode=PRESERVE_WHITESPACE)
    constructor
    -
    XMLError LoadFile(FILE *)
    -
    void Clear()
    Clear the document, resetting it to the initial state.
    -
    virtual bool ShallowEqual(const XMLNode *) const
    Definition: tinyxml2.h:1926
    -
    XMLError SaveFile(const char *filename, bool compact=false)
    -
    void Print(XMLPrinter *streamer=0) const
    -
    XMLElement * NewElement(const char *name)
    -
    XMLError SaveFile(FILE *fp, bool compact=false)
    -
    virtual bool Accept(XMLVisitor *visitor) const
    -
    virtual XMLNode * ShallowClone(XMLDocument *) const
    Definition: tinyxml2.h:1923
    -
    XMLText * NewText(const char *text)
    -
    void DeleteNode(XMLNode *node)
    -
    XMLElement * RootElement()
    Definition: tinyxml2.h:1810
    -
    const char * ErrorStr() const
    -
    XMLComment * NewComment(const char *comment)
    -
    XMLDeclaration * NewDeclaration(const char *text=0)
    -
    XMLError Parse(const char *xml, size_t nBytes=static_cast< size_t >(-1))
    -
    void DeepCopy(XMLDocument *target) const
    -
    XMLError ErrorID() const
    Return the errorID.
    Definition: tinyxml2.h:1885
    -
    Definition: tinyxml2.h:1265
    -
    double DoubleAttribute(const char *name, double defaultValue=0) const
    See IntAttribute()
    -
    void SetAttribute(const char *name, const char *value)
    Sets the named attribute to value.
    Definition: tinyxml2.h:1465
    -
    XMLError QueryInt64Text(int64_t *uval) const
    See QueryIntText()
    -
    XMLError QueryUnsigned64Attribute(const char *name, uint64_t *value) const
    See QueryIntAttribute()
    Definition: tinyxml2.h:1370
    -
    XMLError QueryBoolAttribute(const char *name, bool *value) const
    See QueryIntAttribute()
    Definition: tinyxml2.h:1379
    -
    XMLError QueryUnsignedText(unsigned *uval) const
    See QueryIntText()
    -
    XMLText * InsertNewText(const char *text)
    See InsertNewChildElement()
    -
    void SetText(const char *inText)
    -
    uint64_t Unsigned64Attribute(const char *name, uint64_t defaultValue=0) const
    See IntAttribute()
    -
    void SetAttribute(const char *name, double value)
    Sets the named attribute to value.
    Definition: tinyxml2.h:1498
    -
    XMLError QueryUnsignedAttribute(const char *name, unsigned int *value) const
    See QueryIntAttribute()
    Definition: tinyxml2.h:1352
    -
    const XMLAttribute * FindAttribute(const char *name) const
    Query a specific attribute in the list.
    -
    const XMLAttribute * FirstAttribute() const
    Return the first attribute in the list.
    Definition: tinyxml2.h:1514
    -
    virtual bool Accept(XMLVisitor *visitor) const
    -
    XMLError QueryBoolText(bool *bval) const
    See QueryIntText()
    -
    float FloatText(float defaultValue=0) const
    See QueryIntText()
    -
    unsigned UnsignedText(unsigned defaultValue=0) const
    See QueryIntText()
    -
    void SetText(float value)
    Convenience method for setting text inside an element. See SetText() for important limitations.
    -
    bool BoolAttribute(const char *name, bool defaultValue=false) const
    See IntAttribute()
    -
    void SetAttribute(const char *name, float value)
    Sets the named attribute to value.
    Definition: tinyxml2.h:1503
    -
    XMLError QueryAttribute(const char *name, int *value) const
    Definition: tinyxml2.h:1432
    -
    XMLError QueryDoubleAttribute(const char *name, double *value) const
    See QueryIntAttribute()
    Definition: tinyxml2.h:1387
    -
    const char * Name() const
    Get the name of an element (which is the Value() of the node.)
    Definition: tinyxml2.h:1269
    -
    int64_t Int64Attribute(const char *name, int64_t defaultValue=0) const
    See IntAttribute()
    -
    void SetText(double value)
    Convenience method for setting text inside an element. See SetText() for important limitations.
    -
    XMLError QueryDoubleText(double *dval) const
    See QueryIntText()
    -
    bool BoolText(bool defaultValue=false) const
    See QueryIntText()
    -
    const char * GetText() const
    -
    void SetText(uint64_t value)
    Convenience method for setting text inside an element. See SetText() for important limitations.
    -
    const char * Attribute(const char *name, const char *value=0) const
    -
    void SetText(int64_t value)
    Convenience method for setting text inside an element. See SetText() for important limitations.
    -
    void SetText(unsigned value)
    Convenience method for setting text inside an element. See SetText() for important limitations.
    -
    XMLError QueryInt64Attribute(const char *name, int64_t *value) const
    See QueryIntAttribute()
    Definition: tinyxml2.h:1361
    -
    double DoubleText(double defaultValue=0) const
    See QueryIntText()
    -
    XMLError QueryIntAttribute(const char *name, int *value) const
    Definition: tinyxml2.h:1343
    -
    XMLError QueryIntText(int *ival) const
    -
    int IntAttribute(const char *name, int defaultValue=0) const
    -
    void SetName(const char *str, bool staticMem=false)
    Set the name of the element.
    Definition: tinyxml2.h:1273
    -
    void SetAttribute(const char *name, bool value)
    Sets the named attribute to value.
    Definition: tinyxml2.h:1493
    -
    int64_t Int64Text(int64_t defaultValue=0) const
    See QueryIntText()
    -
    void SetAttribute(const char *name, int value)
    Sets the named attribute to value.
    Definition: tinyxml2.h:1470
    -
    void SetAttribute(const char *name, int64_t value)
    Sets the named attribute to value.
    Definition: tinyxml2.h:1481
    -
    float FloatAttribute(const char *name, float defaultValue=0) const
    See IntAttribute()
    -
    XMLElement * InsertNewChildElement(const char *name)
    -
    virtual XMLNode * ShallowClone(XMLDocument *document) const
    -
    XMLError QueryUnsigned64Text(uint64_t *uval) const
    See QueryIntText()
    -
    XMLUnknown * InsertNewUnknown(const char *text)
    See InsertNewChildElement()
    -
    XMLError QueryFloatAttribute(const char *name, float *value) const
    See QueryIntAttribute()
    Definition: tinyxml2.h:1395
    -
    void SetAttribute(const char *name, uint64_t value)
    Sets the named attribute to value.
    Definition: tinyxml2.h:1487
    -
    virtual bool ShallowEqual(const XMLNode *compare) const
    -
    virtual XMLElement * ToElement()
    Safely cast to an Element, or null.
    Definition: tinyxml2.h:1277
    -
    XMLError QueryStringAttribute(const char *name, const char **value) const
    See QueryIntAttribute()
    Definition: tinyxml2.h:1404
    -
    XMLDeclaration * InsertNewDeclaration(const char *text)
    See InsertNewChildElement()
    -
    void SetAttribute(const char *name, unsigned value)
    Sets the named attribute to value.
    Definition: tinyxml2.h:1475
    -
    void SetText(bool value)
    Convenience method for setting text inside an element. See SetText() for important limitations.
    -
    XMLComment * InsertNewComment(const char *comment)
    See InsertNewChildElement()
    -
    void SetText(int value)
    Convenience method for setting text inside an element. See SetText() for important limitations.
    -
    void DeleteAttribute(const char *name)
    -
    uint64_t Unsigned64Text(uint64_t defaultValue=0) const
    See QueryIntText()
    -
    XMLError QueryFloatText(float *fval) const
    See QueryIntText()
    -
    unsigned UnsignedAttribute(const char *name, unsigned defaultValue=0) const
    See IntAttribute()
    -
    Definition: tinyxml2.h:2053
    -
    XMLNode * ToNode()
    Safe cast to XMLNode. This can return null.
    Definition: tinyxml2.h:2104
    -
    XMLDeclaration * ToDeclaration()
    Safe cast to XMLDeclaration. This can return null.
    Definition: tinyxml2.h:2120
    -
    XMLHandle PreviousSibling()
    Get the previous sibling of this handle.
    Definition: tinyxml2.h:2087
    -
    XMLHandle LastChildElement(const char *name=0)
    Get the last child element of this handle.
    Definition: tinyxml2.h:2083
    -
    XMLHandle FirstChild()
    Get the first child of this handle.
    Definition: tinyxml2.h:2071
    -
    XMLElement * ToElement()
    Safe cast to XMLElement. This can return null.
    Definition: tinyxml2.h:2108
    -
    XMLText * ToText()
    Safe cast to XMLText. This can return null.
    Definition: tinyxml2.h:2112
    -
    XMLHandle FirstChildElement(const char *name=0)
    Get the first child element of this handle.
    Definition: tinyxml2.h:2075
    -
    XMLHandle & operator=(const XMLHandle &ref)
    Assignment.
    Definition: tinyxml2.h:2065
    -
    XMLHandle PreviousSiblingElement(const char *name=0)
    Get the previous sibling element of this handle.
    Definition: tinyxml2.h:2091
    -
    XMLHandle(XMLNode *node)
    Create a handle from any node (at any depth of the tree.) This can be a null pointer.
    Definition: tinyxml2.h:2056
    -
    XMLHandle LastChild()
    Get the last child of this handle.
    Definition: tinyxml2.h:2079
    -
    XMLHandle(XMLNode &node)
    Create a handle from a node.
    Definition: tinyxml2.h:2059
    -
    XMLUnknown * ToUnknown()
    Safe cast to XMLUnknown. This can return null.
    Definition: tinyxml2.h:2116
    -
    XMLHandle NextSibling()
    Get the next sibling of this handle.
    Definition: tinyxml2.h:2095
    -
    XMLHandle NextSiblingElement(const char *name=0)
    Get the next sibling element of this handle.
    Definition: tinyxml2.h:2099
    -
    XMLHandle(const XMLHandle &ref)
    Copy constructor.
    Definition: tinyxml2.h:2062
    -
    Definition: tinyxml2.h:675
    -
    void SetUserData(void *userData)
    Definition: tinyxml2.h:939
    - -
    void SetValue(const char *val, bool staticMem=false)
    -
    const XMLElement * NextSiblingElement(const char *name=0) const
    Get the next (right) sibling element of this node, with an optionally supplied name.
    -
    const XMLElement * LastChildElement(const char *name=0) const
    -
    virtual XMLDeclaration * ToDeclaration()
    Safely cast to a Declaration, or null.
    Definition: tinyxml2.h:708
    -
    const XMLElement * FirstChildElement(const char *name=0) const
    -
    const XMLDocument * GetDocument() const
    Get the XMLDocument that owns this XMLNode.
    Definition: tinyxml2.h:681
    -
    void DeleteChild(XMLNode *node)
    -
    virtual XMLText * ToText()
    Safely cast to Text, or null.
    Definition: tinyxml2.h:696
    -
    XMLNode * DeepClone(XMLDocument *target) const
    -
    const char * Value() const
    -
    const XMLNode * NextSibling() const
    Get the next (right) sibling node of this node.
    Definition: tinyxml2.h:821
    -
    virtual bool ShallowEqual(const XMLNode *compare) const =0
    -
    void * GetUserData() const
    Definition: tinyxml2.h:946
    -
    virtual bool Accept(XMLVisitor *visitor) const =0
    -
    virtual XMLDocument * ToDocument()
    Safely cast to a Document, or null.
    Definition: tinyxml2.h:704
    -
    virtual XMLNode * ShallowClone(XMLDocument *document) const =0
    -
    XMLNode * InsertAfterChild(XMLNode *afterThis, XMLNode *addThis)
    -
    virtual XMLUnknown * ToUnknown()
    Safely cast to an Unknown, or null.
    Definition: tinyxml2.h:712
    -
    const XMLElement * PreviousSiblingElement(const char *name=0) const
    Get the previous (left) sibling element of this node, with an optionally supplied name.
    -
    XMLNode * InsertFirstChild(XMLNode *addThis)
    -
    int GetLineNum() const
    Gets the line number the node is in, if the document was parsed from a file.
    Definition: tinyxml2.h:752
    -
    const XMLNode * LastChild() const
    Get the last child node, or null if none exists.
    Definition: tinyxml2.h:787
    -
    virtual XMLElement * ToElement()
    Safely cast to an Element, or null.
    Definition: tinyxml2.h:692
    -
    const XMLNode * PreviousSibling() const
    Get the previous (left) sibling node of this node.
    Definition: tinyxml2.h:805
    -
    bool NoChildren() const
    Returns true if this node has no children.
    Definition: tinyxml2.h:764
    -
    const XMLNode * Parent() const
    Get the parent of this node on the DOM.
    Definition: tinyxml2.h:755
    -
    const XMLNode * FirstChild() const
    Get the first child node, or null if none exists.
    Definition: tinyxml2.h:769
    -
    XMLNode * InsertEndChild(XMLNode *addThis)
    -
    XMLDocument * GetDocument()
    Get the XMLDocument that owns this XMLNode.
    Definition: tinyxml2.h:686
    -
    virtual XMLComment * ToComment()
    Safely cast to a Comment, or null.
    Definition: tinyxml2.h:700
    -
    Definition: tinyxml2.h:2238
    -
    virtual void PrintSpace(int depth)
    -
    virtual bool VisitExit(const XMLDocument &)
    Visit a document.
    Definition: tinyxml2.h:2290
    -
    void PushHeader(bool writeBOM, bool writeDeclaration)
    -
    const char * CStr() const
    Definition: tinyxml2.h:2306
    -
    void PushText(const char *text, bool cdata=false)
    Add a text node.
    -
    void PushText(float value)
    Add a text node from a float.
    -
    void OpenElement(const char *name, bool compactMode=false)
    -
    virtual bool Visit(const XMLText &text)
    Visit a text node.
    -
    virtual bool VisitEnter(const XMLElement &element, const XMLAttribute *attribute)
    Visit an element.
    -
    int CStrSize() const
    Definition: tinyxml2.h:2314
    -
    void PushText(int value)
    Add a text node from an integer.
    -
    virtual bool Visit(const XMLComment &comment)
    Visit a comment node.
    -
    void PushText(bool value)
    Add a text node from a bool.
    -
    void PushText(uint64_t value)
    Add a text node from an unsigned 64bit integer.
    -
    void PushText(unsigned value)
    Add a text node from an unsigned.
    -
    void ClearBuffer(bool resetToFirstElement=true)
    Definition: tinyxml2.h:2321
    -
    void PushText(int64_t value)
    Add a text node from a signed 64bit integer.
    -
    void PushAttribute(const char *name, const char *value)
    If streaming, add an attribute to an open element.
    -
    virtual bool Visit(const XMLDeclaration &declaration)
    Visit a declaration.
    -
    virtual bool Visit(const XMLUnknown &unknown)
    Visit an unknown node.
    -
    XMLPrinter(FILE *file=0, bool compact=false, int depth=0)
    -
    void PushText(double value)
    Add a text node from a double.
    -
    virtual void CloseElement(bool compactMode=false)
    If streaming, close the Element.
    -
    virtual bool VisitEnter(const XMLDocument &)
    Visit a document.
    -
    virtual bool VisitExit(const XMLElement &element)
    Visit an element.
    -
    void PushComment(const char *comment)
    Add a comment.
    -
    Definition: tinyxml2.h:992
    -
    virtual bool Accept(XMLVisitor *visitor) const
    -
    virtual XMLText * ToText()
    Safely cast to Text, or null.
    Definition: tinyxml2.h:997
    -
    bool CData() const
    Returns true if this is a CDATA text element.
    Definition: tinyxml2.h:1009
    -
    void SetCData(bool isCData)
    Declare whether this should be CDATA or standard text.
    Definition: tinyxml2.h:1005
    -
    virtual bool ShallowEqual(const XMLNode *compare) const
    -
    virtual XMLNode * ShallowClone(XMLDocument *document) const
    -
    Definition: tinyxml2.h:1106
    -
    virtual XMLNode * ShallowClone(XMLDocument *document) const
    -
    virtual bool ShallowEqual(const XMLNode *compare) const
    -
    virtual bool Accept(XMLVisitor *visitor) const
    -
    virtual XMLUnknown * ToUnknown()
    Safely cast to an Unknown, or null.
    Definition: tinyxml2.h:1109
    -
    Definition: tinyxml2.h:482
    -
    virtual bool Visit(const XMLUnknown &)
    Visit an unknown node.
    Definition: tinyxml2.h:517
    -
    virtual bool VisitExit(const XMLDocument &)
    Visit a document.
    Definition: tinyxml2.h:491
    -
    virtual bool VisitExit(const XMLElement &)
    Visit an element.
    Definition: tinyxml2.h:500
    -
    virtual bool VisitEnter(const XMLDocument &)
    Visit a document.
    Definition: tinyxml2.h:487
    -
    virtual bool Visit(const XMLComment &)
    Visit a comment node.
    Definition: tinyxml2.h:513
    -
    virtual bool Visit(const XMLDeclaration &)
    Visit a declaration.
    Definition: tinyxml2.h:505
    -
    virtual bool Visit(const XMLText &)
    Visit a text node.
    Definition: tinyxml2.h:509
    -
    virtual bool VisitEnter(const XMLElement &, const XMLAttribute *)
    Visit an element.
    Definition: tinyxml2.h:496
    -
    - - - - diff --git a/Engine/lib/tinyxml2/.github/workflows/test.yml b/Engine/lib/tinyxml2/.github/workflows/test.yml new file mode 100644 index 000000000..74d5e1c1c --- /dev/null +++ b/Engine/lib/tinyxml2/.github/workflows/test.yml @@ -0,0 +1,111 @@ +name: Test +on: [ push, pull_request, workflow_dispatch ] +jobs: + test: + name: ${{ matrix.os }}, ${{ matrix.cmake_name }} + strategy: + fail-fast: false + matrix: + os: [ windows-2019, macos-latest, ubuntu-20.04 ] + cmake: [ 3.15, 3.x ] + include: + - os: windows-2019 + static_postfix: _static + tree: tree /F + CXX: cl + + - os: ubuntu-20.04 + tree: tree + + - os: macos-latest + tree: find + + - cmake: 3.15 + cmake_name: CMake 3.15 + - cmake: 3.x + cmake_name: Latest CMake + env: + # CMake 3.15 doesn't detect Visual Studio correctly without these. + CXX: ${{ matrix.CXX }} + CC: ${{ matrix.CXX }} + runs-on: ${{ matrix.os }} + steps: + # System set-up + - uses: actions/checkout@v2 + - uses: ilammy/msvc-dev-cmd@v1 + - uses: seanmiddleditch/gha-setup-ninja@master + - uses: jwlawson/actions-setup-cmake@v1.8 + with: + cmake-version: ${{ matrix.cmake }} + + # Static Debug + - name: "Static Debug: Configure" + run: cmake -G Ninja -S . -B build-static-dbg -DCMAKE_BUILD_TYPE=Debug "-DCMAKE_DEBUG_POSTFIX=d${{matrix.static_postfix}}" + - name: "Static Debug: Build" + run: cmake --build build-static-dbg + - name: "Static Debug: Test" + run: ctest --output-on-failure + working-directory: build-static-dbg + + # Shared Debug + - name: "Shared Debug: Configure" + run: cmake -G Ninja -S . -B build-shared-dbg -DCMAKE_BUILD_TYPE=Debug -DCMAKE_DEBUG_POSTFIX=d -DBUILD_SHARED_LIBS=ON + - name: "Shared Debug: Build" + run: cmake --build build-shared-dbg + - name: "Shared Debug: Test" + run: ctest --output-on-failure + working-directory: build-shared-dbg + + # Static Release + - name: "Static Release: Configure" + run: cmake -G Ninja -S . -B build-static-rel -DCMAKE_BUILD_TYPE=Release "-DCMAKE_RELEASE_POSTFIX=${{matrix.static_postfix}}" + - name: "Static Release: Build" + run: cmake --build build-static-rel + - name: "Static Release: Test" + run: ctest --output-on-failure + working-directory: build-static-rel + + # Shared Release + - name: "Shared Release: Configure" + run: cmake -G Ninja -S . -B build-shared-rel -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON + - name: "Shared Release: Build" + run: cmake --build build-shared-rel + - name: "Shared Release: Test" + run: ctest --output-on-failure + working-directory: build-shared-rel + + # Joint install + - name: Install + run: | + cmake --install build-shared-dbg --prefix install + cmake --install build-static-dbg --prefix install + cmake --install build-shared-rel --prefix install + cmake --install build-static-rel --prefix install + - name: List install tree + run: ${{matrix.tree}} install + + # Test find_package + - name: "Test find_package: Static Debug" + run: >- + ctest --build-and-test test test-static-dbg + --build-generator Ninja + --build-options -DCMAKE_BUILD_TYPE=Debug -Dtinyxml2_SHARED_LIBS=NO -DCMAKE_PREFIX_PATH=${{github.workspace}}/install + --test-command ctest --output-on-failure + - name: "Test find_package: Static Release" + run: >- + ctest --build-and-test test test-static-rel + --build-generator Ninja + --build-options -DCMAKE_BUILD_TYPE=Release -Dtinyxml2_SHARED_LIBS=NO -DCMAKE_PREFIX_PATH=${{github.workspace}}/install + --test-command ctest --output-on-failure + - name: "Test find_package: Shared Debug" + run: >- + ctest --build-and-test test test-shared-dbg + --build-generator Ninja + --build-options -DCMAKE_BUILD_TYPE=Debug -Dtinyxml2_SHARED_LIBS=YES -DCMAKE_PREFIX_PATH=${{github.workspace}}/install + --test-command ctest --output-on-failure + - name: "Test find_package: Shared Release" + run: >- + ctest --build-and-test test test-shared-rel + --build-generator Ninja + --build-options -DCMAKE_BUILD_TYPE=Release -Dtinyxml2_SHARED_LIBS=YES -DCMAKE_PREFIX_PATH=${{github.workspace}}/install + --test-command ctest --output-on-failure diff --git a/Engine/lib/tinyxml2/.gitignore b/Engine/lib/tinyxml2/.gitignore new file mode 100644 index 000000000..2c3e2b35a --- /dev/null +++ b/Engine/lib/tinyxml2/.gitignore @@ -0,0 +1,24 @@ +# intermediate files +Win32/ +x64/ +ipch/ +resources/out/ +tinyxml2/tinyxml2-cbp/bin/ +tinyxml2/tinyxml2-cbp/obj/ +tinyxml2/bin/ +tinyxml2/temp/ +.artifacts/ +.projects/ +*.sdf +*.suo +*.opensdf +*.user +*.depend +*.layout +*.o +*.vc.db +*.vc.opendb +libtinyxml2.a +xmltest +vs/debug + diff --git a/Engine/lib/tinyxml2/CMakeLists.txt b/Engine/lib/tinyxml2/CMakeLists.txt new file mode 100644 index 000000000..b950a8bba --- /dev/null +++ b/Engine/lib/tinyxml2/CMakeLists.txt @@ -0,0 +1,3 @@ +add_library(tinyxml2 STATIC "tinyxml2.cpp") + +target_include_directories(tinyxml2 PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../) \ No newline at end of file diff --git a/Engine/lib/tinyxml/LICENSE.txt b/Engine/lib/tinyxml2/LICENSE.txt similarity index 100% rename from Engine/lib/tinyxml/LICENSE.txt rename to Engine/lib/tinyxml2/LICENSE.txt diff --git a/Engine/lib/tinyxml2/Makefile b/Engine/lib/tinyxml2/Makefile new file mode 100644 index 000000000..6ca8544ed --- /dev/null +++ b/Engine/lib/tinyxml2/Makefile @@ -0,0 +1,75 @@ +# For GNU conventions and targets see https://www.gnu.org/prep/standards/standards.html +# Using GNU standards makes it easier for some users to keep doing what they are used to. + +# 'mkdir -p' is non-portable, but it is widely supported. A portable solution +# is elusive due to race conditions on testing the directory and creating it. +# Anemic toolchain users can sidestep the problem using MKDIR="mkdir". + +AR = ar +ARFLAGS = cr +RM = rm -f +RANLIB = ranlib +MKDIR = mkdir -p +CXXFLAGS = -D_FILE_OFFSET_BITS=64 -fPIC + +INSTALL = install +INSTALL_PROGRAM = $(INSTALL) +INSTALL_DATA = $(INSTALL) -m 644 + +prefix = /usr/local +bindir = $(prefix)/bin +libdir = $(prefix)/lib +includedir = $(prefix)/include + +all: xmltest staticlib + +rebuild: clean all + +xmltest: xmltest.cpp libtinyxml2.a + +effc: + gcc -Werror -Wall -Wextra -Wshadow -Wpedantic -Wformat-nonliteral \ + -Wformat-security -Wswitch-default -Wuninitialized -Wundef \ + -Wpointer-arith -Woverloaded-virtual -Wctor-dtor-privacy \ + -Wnon-virtual-dtor -Woverloaded-virtual -Wsign-promo \ + -Wno-unused-parameter -Weffc++ xmltest.cpp tinyxml2.cpp -o xmltest + +clean: + -$(RM) *.o xmltest libtinyxml2.a + +# Standard GNU target +distclean: + -$(RM) *.o xmltest libtinyxml2.a + +test: xmltest + ./xmltest + +# Standard GNU target +check: xmltest + ./xmltest + +staticlib: libtinyxml2.a + +libtinyxml2.a: tinyxml2.o + $(AR) $(ARFLAGS) $@ $^ + $(RANLIB) $@ + +tinyxml2.o: tinyxml2.cpp tinyxml2.h + +directories: + $(MKDIR) $(DESTDIR)$(prefix) + $(MKDIR) $(DESTDIR)$(bindir) + $(MKDIR) $(DESTDIR)$(libdir) + $(MKDIR) $(DESTDIR)$(includedir) + +# Standard GNU target. +install: xmltest staticlib directories + $(INSTALL_PROGRAM) xmltest $(DESTDIR)$(bindir)/xmltest + $(INSTALL_DATA) tinyxml2.h $(DESTDIR)$(includedir)/tinyxml2.h + $(INSTALL_DATA) libtinyxml2.a $(DESTDIR)$(libdir)/libtinyxml2.a + +# Standard GNU target +uninstall: + $(RM) $(DESTDIR)$(bindir)/xmltest + $(RM) $(DESTDIR)$(includedir)/tinyxml2.h + $(RM) $(DESTDIR)$(libdir)/libtinyxml2.a diff --git a/Engine/lib/tinyxml2/TinyXML2_small.png b/Engine/lib/tinyxml2/TinyXML2_small.png new file mode 100644 index 0000000000000000000000000000000000000000..6e84b3535dc814954bd28b7d5af43e669e9d60ca GIT binary patch literal 214977 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%0Db!0#!36BY(O6t_T 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

    h=>#bC{jbnQ#R(8T6DhXGd0cJ>d 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 +Cflags: -I${includedir} diff --git a/Engine/lib/tinyxml2/contrib/html5-printer.cpp b/Engine/lib/tinyxml2/contrib/html5-printer.cpp new file mode 100644 index 000000000..e9a423d22 --- /dev/null +++ b/Engine/lib/tinyxml2/contrib/html5-printer.cpp @@ -0,0 +1,108 @@ +// g++ -Wall -O2 contrib/html5-printer.cpp -o html5-printer -ltinyxml2 + +// This program demonstrates how to use "tinyxml2" to generate conformant HTML5 +// by deriving from the "tinyxml2::XMLPrinter" class. + +// http://dev.w3.org/html5/markup/syntax.html + +// In HTML5, there are 16 so-called "void" elements. "void elements" NEVER have +// inner content (but they MAY have attributes), and are assumed to be self-closing. +// An example of a self-closig HTML5 element is "
    " (line break) +// All other elements are called "non-void" and MUST never self-close. +// Examples: "
    ". + +// tinyxml2::XMLPrinter will emit _ALL_ XML elements with no inner content as +// self-closing. This behavior produces space-effeceint XML, but incorrect HTML5. + +// Author: Dennis Jenkins, dennis (dot) jenkins (dot) 75 (at) gmail (dot) com. +// License: Same as tinyxml2 (zlib, see below) +// This example is a small contribution to the world! Enjoy it! + +/* +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any +damages arising from the use of this software. + +Permission is granted to anyone to use this software for any +purpose, including commercial applications, and to alter it and +redistribute it freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must +not claim that you wrote the original software. If you use this +software in a product, an acknowledgment in the product documentation +would be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and +must not be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source +distribution. +*/ + + +#include "../tinyxml2.h" +#include + +#if defined (_MSC_VER) +#define strcasecmp stricmp +#endif + +using namespace tinyxml2; + +// Contrived input containing a mix of void and non-void HTML5 elements. +// When printed via XMLPrinter, some non-void elements will self-close (not valid HTML5). +static const char input[] = +"


    ©
    "; + +// XMLPrinterHTML5 is small enough, just put the entire implementation inline. +class XMLPrinterHTML5 : public XMLPrinter +{ +public: + XMLPrinterHTML5 (FILE* file=0, bool compact = false, int depth = 0) : + XMLPrinter (file, compact, depth) + {} + +protected: + virtual void CloseElement () { + if (_elementJustOpened && !isVoidElement (_stack.PeekTop())) { + SealElementIfJustOpened(); + } + XMLPrinter::CloseElement(); + } + + virtual bool isVoidElement (const char *name) { +// Complete list of all HTML5 "void elements", +// http://dev.w3.org/html5/markup/syntax.html + static const char *list[] = { + "area", "base", "br", "col", "command", "embed", "hr", "img", + "input", "keygen", "link", "meta", "param", "source", "track", "wbr", + NULL + }; + +// I could use 'bsearch', but I don't have MSVC to test on (it would work with gcc/libc). + for (const char **p = list; *p; ++p) { + if (!strcasecmp (name, *p)) { + return true; + } + } + + return false; + } +}; + +int main (void) { + XMLDocument doc (false); + doc.Parse (input); + + std::cout << "INPUT:\n" << input << "\n\n"; + + XMLPrinter prn (NULL, true); + doc.Print (&prn); + std::cout << "XMLPrinter (not valid HTML5):\n" << prn.CStr() << "\n\n"; + + XMLPrinterHTML5 html5 (NULL, true); + doc.Print (&html5); + std::cout << "XMLPrinterHTML5:\n" << html5.CStr() << "\n"; + + return 0; +} diff --git a/Engine/lib/tinyxml2/docs/_config.yml b/Engine/lib/tinyxml2/docs/_config.yml new file mode 100644 index 000000000..8ceb7a0ac --- /dev/null +++ b/Engine/lib/tinyxml2/docs/_config.yml @@ -0,0 +1,2 @@ +include: + - "_*.html" diff --git a/Engine/lib/tinyxml/docs/_example_1.html b/Engine/lib/tinyxml2/docs/_example_1.html similarity index 64% rename from Engine/lib/tinyxml/docs/_example_1.html rename to Engine/lib/tinyxml2/docs/_example_1.html index 6cccb3123..9659fcbd3 100644 --- a/Engine/lib/tinyxml/docs/_example_1.html +++ b/Engine/lib/tinyxml2/docs/_example_1.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Load an XML File + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -
    -
    -
    Load an XML File
    +
    +
    Load an XML File

    Basic XML file loading. The basic syntax to load an XML file from disk and check for an error. (ErrorID() will return 0 for no error.)

    int example_1()
    @@ -77,7 +85,7 @@ $(function() {
    diff --git a/Engine/lib/tinyxml/docs/_example_2.html b/Engine/lib/tinyxml2/docs/_example_2.html similarity index 66% rename from Engine/lib/tinyxml/docs/_example_2.html rename to Engine/lib/tinyxml2/docs/_example_2.html index fb406a469..0fda91bcd 100644 --- a/Engine/lib/tinyxml/docs/_example_2.html +++ b/Engine/lib/tinyxml2/docs/_example_2.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Parse an XML from char buffer + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -
    -
    -
    Parse an XML from char buffer
    +
    +
    Parse an XML from char buffer

    Basic XML string parsing. The basic syntax to parse an XML for a char* and check for an error. (ErrorID() will return 0 for no error.)

    int example_2()
    @@ -78,7 +86,7 @@ $(function() {
    diff --git a/Engine/lib/tinyxml/docs/_example_3.html b/Engine/lib/tinyxml2/docs/_example_3.html similarity index 79% rename from Engine/lib/tinyxml/docs/_example_3.html rename to Engine/lib/tinyxml2/docs/_example_3.html index 2994ed67b..b63348a3e 100644 --- a/Engine/lib/tinyxml/docs/_example_3.html +++ b/Engine/lib/tinyxml2/docs/_example_3.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Get information out of XML + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -
    -
    -
    Get information out of XML
    +
    +
    Get information out of XML

    In this example, we navigate a simple XML file, and read some interesting text. Note that this example doesn't use error checking; working code should check for null pointers when walking an XML tree, or use XMLHandle.

    @@ -115,7 +123,7 @@ Text "A Midsummer Night's Dream"
    diff --git a/Engine/lib/tinyxml/docs/_example_4.html b/Engine/lib/tinyxml2/docs/_example_4.html similarity index 76% rename from Engine/lib/tinyxml/docs/_example_4.html rename to Engine/lib/tinyxml2/docs/_example_4.html index 5f8d39180..5a14aeebe 100644 --- a/Engine/lib/tinyxml/docs/_example_4.html +++ b/Engine/lib/tinyxml2/docs/_example_4.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Read attributes and text information. + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -
    -
    -
    Read attributes and text information.
    +
    +
    Read attributes and text information.

    @@ -88,7 +96,7 @@ $(function() {
    diff --git a/Engine/lib/tinyxml/docs/annotated.html b/Engine/lib/tinyxml2/docs/annotated.html similarity index 51% rename from Engine/lib/tinyxml/docs/annotated.html rename to Engine/lib/tinyxml2/docs/annotated.html index 24d5b3f9b..03f06407a 100644 --- a/Engine/lib/tinyxml/docs/annotated.html +++ b/Engine/lib/tinyxml2/docs/annotated.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class List + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    @@ -56,37 +58,43 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -
    -
    Class List
    +
    Class List
    Here are the classes, structs, unions and interfaces with brief descriptions:
    -
    [detail level 12]
    - - - - - - - - - - - - - +
    [detail level 12]
     Ntinyxml2
     CXMLVisitor
     CXMLNode
     CXMLText
     CXMLComment
     CXMLDeclaration
     CXMLUnknown
     CXMLAttribute
     CXMLElement
     CXMLDocument
     CXMLHandle
     CXMLConstHandle
     CXMLPrinter
    + + + + + + + + + + + + +
     Ntinyxml2
     CXMLAttribute
     CXMLComment
     CXMLConstHandle
     CXMLDeclaration
     CXMLDocument
     CXMLElement
     CXMLHandle
     CXMLNode
     CXMLPrinter
     CXMLText
     CXMLUnknown
     CXMLVisitor
    diff --git a/Engine/lib/tinyxml/docs/bc_s.png b/Engine/lib/tinyxml2/docs/bc_s.png similarity index 100% rename from Engine/lib/tinyxml/docs/bc_s.png rename to Engine/lib/tinyxml2/docs/bc_s.png diff --git a/Engine/lib/tinyxml2/docs/bc_sd.png b/Engine/lib/tinyxml2/docs/bc_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..31ca888dc71049713b35c351933a8d0f36180bf1 GIT binary patch literal 635 zcmV->0)+jEP)Jwi0r1~gdSq#w{Bu1q z`craw(p2!hu$4C_$Oc3X(sI6e=9QSTwPt{G) z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{ Vj14gnt9}3g002ovPDHLkV1n!oC4m3{ literal 0 HcmV?d00001 diff --git a/Engine/lib/tinyxml/docs/bdwn.png b/Engine/lib/tinyxml2/docs/bdwn.png similarity index 100% rename from Engine/lib/tinyxml/docs/bdwn.png rename to Engine/lib/tinyxml2/docs/bdwn.png diff --git a/Engine/lib/tinyxml/docs/classes.html b/Engine/lib/tinyxml2/docs/classes.html similarity index 69% rename from Engine/lib/tinyxml/docs/classes.html rename to Engine/lib/tinyxml2/docs/classes.html index c5048a5c6..3c50e5ae8 100644 --- a/Engine/lib/tinyxml/docs/classes.html +++ b/Engine/lib/tinyxml2/docs/classes.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Index + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    @@ -56,26 +58,32 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -
    -
    Class Index
    +
    Class Index
    -
    X
    +
    X
    XMLAttribute (tinyxml2)
    XMLComment (tinyxml2)
    XMLConstHandle (tinyxml2)
    XMLDeclaration (tinyxml2)
    XMLDocument (tinyxml2)
    XMLElement (tinyxml2)
    XMLHandle (tinyxml2)
    XMLNode (tinyxml2)
    XMLPrinter (tinyxml2)
    XMLText (tinyxml2)
    XMLUnknown (tinyxml2)
    XMLVisitor (tinyxml2)
    diff --git a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_attribute-members.html b/Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_attribute-members.html similarity index 57% rename from Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_attribute-members.html rename to Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_attribute-members.html index bb41a263c..9f3f9902d 100644 --- a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_attribute-members.html +++ b/Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_attribute-members.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Member List + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -
    -
    tinyxml2::XMLAttribute Member List
    +
    tinyxml2::XMLAttribute Member List

    This is the complete list of members for tinyxml2::XMLAttribute, including all inherited members.

    - + - + - - - + + + - + - + - + - + - + - + - + - +
    BoolValue() consttinyxml2::XMLAttributeinline
    DoubleValue() consttinyxml2::XMLAttributeinline
    DoubleValue() consttinyxml2::XMLAttributeinline
    FloatValue() consttinyxml2::XMLAttributeinline
    GetLineNum() consttinyxml2::XMLAttributeinline
    GetLineNum() consttinyxml2::XMLAttributeinline
    IntValue() consttinyxml2::XMLAttributeinline
    Name() consttinyxml2::XMLAttribute
    Next() consttinyxml2::XMLAttributeinline
    QueryBoolValue(bool *value) consttinyxml2::XMLAttribute
    Name() consttinyxml2::XMLAttribute
    Next() consttinyxml2::XMLAttributeinline
    QueryBoolValue(bool *value) consttinyxml2::XMLAttribute
    QueryDoubleValue(double *value) consttinyxml2::XMLAttribute
    QueryFloatValue(float *value) consttinyxml2::XMLAttribute
    QueryFloatValue(float *value) consttinyxml2::XMLAttribute
    QueryInt64Value(int64_t *value) consttinyxml2::XMLAttribute
    QueryIntValue(int *value) consttinyxml2::XMLAttribute
    QueryIntValue(int *value) consttinyxml2::XMLAttribute
    QueryUnsigned64Value(uint64_t *value) consttinyxml2::XMLAttribute
    QueryUnsignedValue(unsigned int *value) consttinyxml2::XMLAttribute
    QueryUnsignedValue(unsigned int *value) consttinyxml2::XMLAttribute
    SetAttribute(const char *value)tinyxml2::XMLAttribute
    SetAttribute(int value)tinyxml2::XMLAttribute
    SetAttribute(int value)tinyxml2::XMLAttribute
    SetAttribute(unsigned value)tinyxml2::XMLAttribute
    SetAttribute(int64_t value)tinyxml2::XMLAttribute
    SetAttribute(int64_t value)tinyxml2::XMLAttribute
    SetAttribute(uint64_t value)tinyxml2::XMLAttribute
    SetAttribute(bool value)tinyxml2::XMLAttribute
    SetAttribute(bool value)tinyxml2::XMLAttribute
    SetAttribute(double value)tinyxml2::XMLAttribute
    SetAttribute(float value)tinyxml2::XMLAttribute
    SetAttribute(float value)tinyxml2::XMLAttribute
    UnsignedValue() consttinyxml2::XMLAttributeinline
    Value() consttinyxml2::XMLAttribute
    Value() consttinyxml2::XMLAttribute
    diff --git a/Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_attribute.html b/Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_attribute.html new file mode 100644 index 000000000..e1b88e612 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_attribute.html @@ -0,0 +1,239 @@ + + + + + + + +TinyXML-2: tinyxml2::XMLAttribute Class Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    TinyXML-2 10.0.0 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    tinyxml2::XMLAttribute Class Reference
    +
    +
    + +

    #include <tinyxml2.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    +const char * Name () const
     The name of the attribute.
     
    +const char * Value () const
     The value of the attribute.
     
    +int GetLineNum () const
     Gets the line number the attribute is in, if the document was parsed from a file.
     
    +const XMLAttributeNext () const
     The next attribute in the list.
     
    int IntValue () const
     
    +unsigned UnsignedValue () const
     Query as an unsigned integer. See IntValue()
     
    +bool BoolValue () const
     Query as a boolean. See IntValue()
     
    +double DoubleValue () const
     Query as a double. See IntValue()
     
    +float FloatValue () const
     Query as a float. See IntValue()
     
    XMLError QueryIntValue (int *value) const
     
    +XMLError QueryUnsignedValue (unsigned int *value) const
     See QueryIntValue.
     
    +XMLError QueryInt64Value (int64_t *value) const
     See QueryIntValue.
     
    +XMLError QueryUnsigned64Value (uint64_t *value) const
     See QueryIntValue.
     
    +XMLError QueryBoolValue (bool *value) const
     See QueryIntValue.
     
    +XMLError QueryDoubleValue (double *value) const
     See QueryIntValue.
     
    +XMLError QueryFloatValue (float *value) const
     See QueryIntValue.
     
    +void SetAttribute (const char *value)
     Set the attribute to a string value.
     
    +void SetAttribute (int value)
     Set the attribute to value.
     
    +void SetAttribute (unsigned value)
     Set the attribute to value.
     
    +void SetAttribute (int64_t value)
     Set the attribute to value.
     
    +void SetAttribute (uint64_t value)
     Set the attribute to value.
     
    +void SetAttribute (bool value)
     Set the attribute to value.
     
    +void SetAttribute (double value)
     Set the attribute to value.
     
    +void SetAttribute (float value)
     Set the attribute to value.
     
    +

    Detailed Description

    +

    An attribute is a name-value pair. Elements have an arbitrary number of attributes, each with a unique name.

    +
    Note
    The attributes are not XMLNodes. You may only query the Next() attribute in a list.
    +

    Member Function Documentation

    + +

    ◆ IntValue()

    + +
    +
    + + + + + +
    + + + + + + + +
    int tinyxml2::XMLAttribute::IntValue () const
    +
    +inline
    +
    +

    IntValue interprets the attribute as an integer, and returns the value. If the value isn't an integer, 0 will be returned. There is no error checking; use QueryIntValue() if you need error checking.

    + +
    +
    + +

    ◆ QueryIntValue()

    + +
    +
    + + + + + + + +
    XMLError tinyxml2::XMLAttribute::QueryIntValue (int * value) const
    +
    +

    QueryIntValue interprets the attribute as an integer, and returns the value in the provided parameter. The function will return XML_SUCCESS on success, and XML_WRONG_ATTRIBUTE_TYPE if the conversion is not successful.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_comment-members.html b/Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_comment-members.html new file mode 100644 index 000000000..4ea42ba39 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_comment-members.html @@ -0,0 +1,122 @@ + + + + + + + +TinyXML-2: Member List + + + + + + + + + + + +
    +
    + + + + + + +
    +
    TinyXML-2 10.0.0 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    tinyxml2::XMLComment Member List
    +
    +
    + +

    This is the complete list of members for tinyxml2::XMLComment, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Accept(XMLVisitor *visitor) const overridetinyxml2::XMLCommentvirtual
    DeepClone(XMLDocument *target) consttinyxml2::XMLNode
    DeleteChild(XMLNode *node)tinyxml2::XMLNode
    DeleteChildren()tinyxml2::XMLNode
    FirstChild() consttinyxml2::XMLNodeinline
    FirstChildElement(const char *name=0) consttinyxml2::XMLNode
    GetDocument() consttinyxml2::XMLNodeinline
    GetDocument()tinyxml2::XMLNodeinline
    GetLineNum() consttinyxml2::XMLNodeinline
    GetUserData() consttinyxml2::XMLNodeinline
    InsertAfterChild(XMLNode *afterThis, XMLNode *addThis)tinyxml2::XMLNode
    InsertEndChild(XMLNode *addThis)tinyxml2::XMLNode
    InsertFirstChild(XMLNode *addThis)tinyxml2::XMLNode
    LastChild() consttinyxml2::XMLNodeinline
    LastChildElement(const char *name=0) consttinyxml2::XMLNode
    NextSibling() consttinyxml2::XMLNodeinline
    NextSiblingElement(const char *name=0) consttinyxml2::XMLNode
    NoChildren() consttinyxml2::XMLNodeinline
    Parent() consttinyxml2::XMLNodeinline
    PreviousSibling() consttinyxml2::XMLNodeinline
    PreviousSiblingElement(const char *name=0) consttinyxml2::XMLNode
    SetUserData(void *userData)tinyxml2::XMLNodeinline
    SetValue(const char *val, bool staticMem=false)tinyxml2::XMLNode
    ShallowClone(XMLDocument *document) const overridetinyxml2::XMLCommentvirtual
    ShallowEqual(const XMLNode *compare) const overridetinyxml2::XMLCommentvirtual
    ToComment() overridetinyxml2::XMLCommentinlinevirtual
    ToDeclaration()tinyxml2::XMLNodeinlinevirtual
    ToDocument()tinyxml2::XMLNodeinlinevirtual
    ToElement()tinyxml2::XMLNodeinlinevirtual
    ToText()tinyxml2::XMLNodeinlinevirtual
    ToUnknown()tinyxml2::XMLNodeinlinevirtual
    Value() consttinyxml2::XMLNode
    + + + + diff --git a/Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_comment.html b/Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_comment.html new file mode 100644 index 000000000..bd85209a4 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_comment.html @@ -0,0 +1,306 @@ + + + + + + + +TinyXML-2: tinyxml2::XMLComment Class Reference + + + + + + + + + + + +
    +
    + + + + + + +
    +
    TinyXML-2 10.0.0 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    tinyxml2::XMLComment Class Reference
    +
    +
    + +

    #include <tinyxml2.h>

    +
    +Inheritance diagram for tinyxml2::XMLComment:
    +
    +
    + + +tinyxml2::XMLNode + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    +virtual XMLCommentToComment () override
     Safely cast to a Comment, or null.
     
    virtual bool Accept (XMLVisitor *visitor) const override
     
    virtual XMLNodeShallowClone (XMLDocument *document) const override
     
    virtual bool ShallowEqual (const XMLNode *compare) const override
     
    - Public Member Functions inherited from tinyxml2::XMLNode
    +const XMLDocumentGetDocument () const
     Get the XMLDocument that owns this XMLNode.
     
    +XMLDocumentGetDocument ()
     Get the XMLDocument that owns this XMLNode.
     
    +virtual XMLElementToElement ()
     Safely cast to an Element, or null.
     
    +virtual XMLTextToText ()
     Safely cast to Text, or null.
     
    +virtual XMLDocumentToDocument ()
     Safely cast to a Document, or null.
     
    +virtual XMLDeclarationToDeclaration ()
     Safely cast to a Declaration, or null.
     
    +virtual XMLUnknownToUnknown ()
     Safely cast to an Unknown, or null.
     
    const char * Value () const
     
    void SetValue (const char *val, bool staticMem=false)
     
    +int GetLineNum () const
     Gets the line number the node is in, if the document was parsed from a file.
     
    +const XMLNodeParent () const
     Get the parent of this node on the DOM.
     
    +bool NoChildren () const
     Returns true if this node has no children.
     
    +const XMLNodeFirstChild () const
     Get the first child node, or null if none exists.
     
    const XMLElementFirstChildElement (const char *name=0) const
     
    +const XMLNodeLastChild () const
     Get the last child node, or null if none exists.
     
    const XMLElementLastChildElement (const char *name=0) const
     
    +const XMLNodePreviousSibling () const
     Get the previous (left) sibling node of this node.
     
    +const XMLElementPreviousSiblingElement (const char *name=0) const
     Get the previous (left) sibling element of this node, with an optionally supplied name.
     
    +const XMLNodeNextSibling () const
     Get the next (right) sibling node of this node.
     
    +const XMLElementNextSiblingElement (const char *name=0) const
     Get the next (right) sibling element of this node, with an optionally supplied name.
     
    XMLNodeInsertEndChild (XMLNode *addThis)
     
    XMLNodeInsertFirstChild (XMLNode *addThis)
     
    XMLNodeInsertAfterChild (XMLNode *afterThis, XMLNode *addThis)
     
    void DeleteChildren ()
     
    void DeleteChild (XMLNode *node)
     
    XMLNodeDeepClone (XMLDocument *target) const
     
    void SetUserData (void *userData)
     
    void * GetUserData () const
     
    +

    Detailed Description

    +

    An XML Comment.

    +

    Member Function Documentation

    + +

    ◆ Accept()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual bool tinyxml2::XMLComment::Accept (XMLVisitor * visitor) const
    +
    +overridevirtual
    +
    +

    Accept a hierarchical visit of the nodes in the TinyXML-2 DOM. Every node in the XML tree will be conditionally visited and the host will be called back via the XMLVisitor interface.

    +

    This is essentially a SAX interface for TinyXML-2. (Note however it doesn't re-parse the XML for the callbacks, so the performance of TinyXML-2 is unchanged by using this interface versus any other.)

    +

    The interface has been based on ideas from:

    + +

    Which are both good references for "visiting".

    +

    An example of using Accept():

    XMLPrinter printer;
    +tinyxmlDoc.Accept( &printer );
    +const char* xmlcstr = printer.CStr();
    +
    +

    Implements tinyxml2::XMLNode.

    + +
    +
    + +

    ◆ ShallowClone()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual XMLNode * tinyxml2::XMLComment::ShallowClone (XMLDocument * document) const
    +
    +overridevirtual
    +
    +

    Make a copy of this node, but not its children. You may pass in a Document pointer that will be the owner of the new Node. If the 'document' is null, then the node returned will be allocated from the current Document. (this->GetDocument())

    +

    Note: if called on a XMLDocument, this will return null.

    + +

    Implements tinyxml2::XMLNode.

    + +
    +
    + +

    ◆ ShallowEqual()

    + +
    +
    + + + + + +
    + + + + + + + +
    virtual bool tinyxml2::XMLComment::ShallowEqual (const XMLNode * compare) const
    +
    +overridevirtual
    +
    +

    Test if 2 nodes are the same, but don't test children. The 2 nodes do not need to be in the same Document.

    +

    Note: if called on a XMLDocument, this will return false.

    + +

    Implements tinyxml2::XMLNode.

    + +
    +
    +
    The documentation for this class was generated from the following file: +
    + + + + diff --git a/Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_comment.png b/Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_comment.png new file mode 100644 index 0000000000000000000000000000000000000000..273dd1fcb63ba829c287c84e0432acb5fe8c3650 GIT binary patch literal 667 zcmV;M0%ZM(P)vTJr#LVva2S`&=-}Ys|Ns9r%~qrU000SeQchC<|NsC0|NsC0Hv*f~0006e zNkl#pM<41~vnRQdg%c$;vEAx_A4k519b6(eX2!-s+7FH%Zr86lD6A_^Lk z^c6HD>C2&!y^!Rkwz$aAE4R$RquD~kaFRU9ryF`f?ili+MUOy!HBbw6uCd`!PS7G8CPLdZ28j|$298F3ots(&U0lffV87)Qg zdaZ=B6wMoEA)K{n;!Xj;m4XHUd<6{v_zD^T@D(%w;45eVz*o=!fUlqd0AE1^0KS3- z0DJ`v0Qd?T0PyvH(ujyGBZ#W%A_^K+RbN4)s_LuJysH`47Jr}n?teGXdTcjDRrQ%F zgrQMYy;GU2$H|BVpaXm4>Cr~F@HkS zR;!|8886wVG-G^5bDW7e&0uSCrYaZZZm0UIV;Z7*l$Kw6sx3`@&zRZ;Is)}D-@J>z z^M<~l`O@dYr}@^mE56~Xs=k6oRn^yWG$JCa=nuAsbUS)~M!f(4002ovPDHLkV1jR9 BII{o% literal 0 HcmV?d00001 diff --git a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_const_handle-members.html b/Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_const_handle-members.html similarity index 62% rename from Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_const_handle-members.html rename to Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_const_handle-members.html index 03c24bf76..672929bcd 100644 --- a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_const_handle-members.html +++ b/Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_const_handle-members.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Member List + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -
    -
    tinyxml2::XMLConstHandle Member List
    +
    tinyxml2::XMLConstHandle Member List
    @@ -75,7 +83,7 @@ $(function() {
    diff --git a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_const_handle.html b/Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_const_handle.html similarity index 68% rename from Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_const_handle.html rename to Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_const_handle.html index eb72a01b6..94d59f6d5 100644 --- a/Engine/lib/tinyxml/docs/classtinyxml2_1_1_x_m_l_const_handle.html +++ b/Engine/lib/tinyxml2/docs/classtinyxml2_1_1_x_m_l_const_handle.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: tinyxml2::XMLConstHandle Class Reference + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    @@ -56,26 +58,29 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -  +
    Here is a list of all documented functions with links to the class documentation for each member:
    -

    - o -

    diff --git a/Engine/lib/tinyxml2/docs/functions_func_p.html b/Engine/lib/tinyxml2/docs/functions_func_p.html new file mode 100644 index 000000000..7993545a1 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/functions_func_p.html @@ -0,0 +1,95 @@ + + + + + + + +TinyXML-2: Class Members - Functions + + + + + + + + + + + +
    +
    + + + + + + +
    +
    TinyXML-2 10.0.0 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions with links to the class documentation for each member:
    + +

    - p -

    +
    + + + + diff --git a/Engine/lib/tinyxml2/docs/functions_func_q.html b/Engine/lib/tinyxml2/docs/functions_func_q.html new file mode 100644 index 000000000..1d7dd9bc3 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/functions_func_q.html @@ -0,0 +1,107 @@ + + + + + + + +TinyXML-2: Class Members - Functions + + + + + + + + + + + +
    +
    + + + + + + +
    +
    TinyXML-2 10.0.0 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions with links to the class documentation for each member:
    + +

    - q -

    +
    + + + + diff --git a/Engine/lib/tinyxml/docs/functions_func_r.html b/Engine/lib/tinyxml2/docs/functions_func_r.html similarity index 53% rename from Engine/lib/tinyxml/docs/functions_func_r.html rename to Engine/lib/tinyxml2/docs/functions_func_r.html index a30280fe9..59100bea3 100644 --- a/Engine/lib/tinyxml/docs/functions_func_r.html +++ b/Engine/lib/tinyxml2/docs/functions_func_r.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members - Functions + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    @@ -56,23 +58,28 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -  +
    Here is a list of all documented functions with links to the class documentation for each member:
    -

    - r -

    diff --git a/Engine/lib/tinyxml2/docs/functions_func_s.html b/Engine/lib/tinyxml2/docs/functions_func_s.html new file mode 100644 index 000000000..c860fa893 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/functions_func_s.html @@ -0,0 +1,94 @@ + + + + + + + +TinyXML-2: Class Members - Functions + + + + + + + + + + + +
    +
    + + + + + + +
    +
    TinyXML-2 10.0.0 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions with links to the class documentation for each member:
    + +

    - s -

    +
    + + + + diff --git a/Engine/lib/tinyxml2/docs/functions_func_t.html b/Engine/lib/tinyxml2/docs/functions_func_t.html new file mode 100644 index 000000000..7d98c7d15 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/functions_func_t.html @@ -0,0 +1,91 @@ + + + + + + + +TinyXML-2: Class Members - Functions + + + + + + + + + + + +
    +
    + + + + + + +
    +
    TinyXML-2 10.0.0 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions with links to the class documentation for each member:
    + +

    - t -

    +
    + + + + diff --git a/Engine/lib/tinyxml2/docs/functions_func_u.html b/Engine/lib/tinyxml2/docs/functions_func_u.html new file mode 100644 index 000000000..bd4f9509a --- /dev/null +++ b/Engine/lib/tinyxml2/docs/functions_func_u.html @@ -0,0 +1,89 @@ + + + + + + + +TinyXML-2: Class Members - Functions + + + + + + + + + + + +
    +
    + + + + + + +
    +
    TinyXML-2 10.0.0 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions with links to the class documentation for each member:
    + +

    - u -

    +
    + + + + diff --git a/Engine/lib/tinyxml2/docs/functions_func_v.html b/Engine/lib/tinyxml2/docs/functions_func_v.html new file mode 100644 index 000000000..9c13ad732 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/functions_func_v.html @@ -0,0 +1,88 @@ + + + + + + + +TinyXML-2: Class Members - Functions + + + + + + + + + + + +
    +
    + + + + + + +
    +
    TinyXML-2 10.0.0 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions with links to the class documentation for each member:
    + +

    - v -

    +
    + + + + diff --git a/Engine/lib/tinyxml2/docs/functions_func_x.html b/Engine/lib/tinyxml2/docs/functions_func_x.html new file mode 100644 index 000000000..6b0c6610e --- /dev/null +++ b/Engine/lib/tinyxml2/docs/functions_func_x.html @@ -0,0 +1,87 @@ + + + + + + + +TinyXML-2: Class Members - Functions + + + + + + + + + + + +
    +
    + + + + + + +
    +
    TinyXML-2 10.0.0 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions with links to the class documentation for each member:
    + +

    - x -

    +
    + + + + diff --git a/Engine/lib/tinyxml2/docs/functions_g.html b/Engine/lib/tinyxml2/docs/functions_g.html new file mode 100644 index 000000000..2bca2cdf0 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/functions_g.html @@ -0,0 +1,88 @@ + + + + + + + +TinyXML-2: Class Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    TinyXML-2 10.0.0 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - g -

    +
    + + + + diff --git a/Engine/lib/tinyxml/docs/functions_h.html b/Engine/lib/tinyxml2/docs/functions_h.html similarity index 57% rename from Engine/lib/tinyxml/docs/functions_h.html rename to Engine/lib/tinyxml2/docs/functions_h.html index 79938c75b..49c2488c2 100644 --- a/Engine/lib/tinyxml/docs/functions_h.html +++ b/Engine/lib/tinyxml2/docs/functions_h.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    @@ -56,23 +58,28 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    -

    - h -

    diff --git a/Engine/lib/tinyxml2/docs/functions_i.html b/Engine/lib/tinyxml2/docs/functions_i.html new file mode 100644 index 000000000..159365339 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/functions_i.html @@ -0,0 +1,96 @@ + + + + + + + +TinyXML-2: Class Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    TinyXML-2 10.0.0 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - i -

    +
    + + + + diff --git a/Engine/lib/tinyxml2/docs/functions_l.html b/Engine/lib/tinyxml2/docs/functions_l.html new file mode 100644 index 000000000..75ae7912b --- /dev/null +++ b/Engine/lib/tinyxml2/docs/functions_l.html @@ -0,0 +1,87 @@ + + + + + + + +TinyXML-2: Class Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    TinyXML-2 10.0.0 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - l -

    +
    + + + + diff --git a/Engine/lib/tinyxml2/docs/functions_n.html b/Engine/lib/tinyxml2/docs/functions_n.html new file mode 100644 index 000000000..7f6707bff --- /dev/null +++ b/Engine/lib/tinyxml2/docs/functions_n.html @@ -0,0 +1,94 @@ + + + + + + + +TinyXML-2: Class Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    TinyXML-2 10.0.0 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - n -

    +
    + + + + diff --git a/Engine/lib/tinyxml/docs/functions_o.html b/Engine/lib/tinyxml2/docs/functions_o.html similarity index 55% rename from Engine/lib/tinyxml/docs/functions_o.html rename to Engine/lib/tinyxml2/docs/functions_o.html index a75344f0a..78a18ea3f 100644 --- a/Engine/lib/tinyxml/docs/functions_o.html +++ b/Engine/lib/tinyxml2/docs/functions_o.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    @@ -56,26 +58,29 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    -

    - o -

    diff --git a/Engine/lib/tinyxml2/docs/functions_p.html b/Engine/lib/tinyxml2/docs/functions_p.html new file mode 100644 index 000000000..51069975a --- /dev/null +++ b/Engine/lib/tinyxml2/docs/functions_p.html @@ -0,0 +1,95 @@ + + + + + + + +TinyXML-2: Class Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    TinyXML-2 10.0.0 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - p -

    +
    + + + + diff --git a/Engine/lib/tinyxml2/docs/functions_q.html b/Engine/lib/tinyxml2/docs/functions_q.html new file mode 100644 index 000000000..fa7c8a529 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/functions_q.html @@ -0,0 +1,107 @@ + + + + + + + +TinyXML-2: Class Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    TinyXML-2 10.0.0 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - q -

    +
    + + + + diff --git a/Engine/lib/tinyxml/docs/functions_r.html b/Engine/lib/tinyxml2/docs/functions_r.html similarity index 57% rename from Engine/lib/tinyxml/docs/functions_r.html rename to Engine/lib/tinyxml2/docs/functions_r.html index 75f15a379..a88893b3c 100644 --- a/Engine/lib/tinyxml/docs/functions_r.html +++ b/Engine/lib/tinyxml2/docs/functions_r.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    @@ -56,23 +58,28 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    -

    - r -

    diff --git a/Engine/lib/tinyxml2/docs/functions_s.html b/Engine/lib/tinyxml2/docs/functions_s.html new file mode 100644 index 000000000..e184e5763 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/functions_s.html @@ -0,0 +1,94 @@ + + + + + + + +TinyXML-2: Class Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    TinyXML-2 10.0.0 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - s -

    +
    + + + + diff --git a/Engine/lib/tinyxml2/docs/functions_t.html b/Engine/lib/tinyxml2/docs/functions_t.html new file mode 100644 index 000000000..187154c4e --- /dev/null +++ b/Engine/lib/tinyxml2/docs/functions_t.html @@ -0,0 +1,91 @@ + + + + + + + +TinyXML-2: Class Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    TinyXML-2 10.0.0 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - t -

    +
    + + + + diff --git a/Engine/lib/tinyxml2/docs/functions_u.html b/Engine/lib/tinyxml2/docs/functions_u.html new file mode 100644 index 000000000..4c5bee75c --- /dev/null +++ b/Engine/lib/tinyxml2/docs/functions_u.html @@ -0,0 +1,89 @@ + + + + + + + +TinyXML-2: Class Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    TinyXML-2 10.0.0 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - u -

    +
    + + + + diff --git a/Engine/lib/tinyxml2/docs/functions_v.html b/Engine/lib/tinyxml2/docs/functions_v.html new file mode 100644 index 000000000..9b4fb1ea3 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/functions_v.html @@ -0,0 +1,88 @@ + + + + + + + +TinyXML-2: Class Members + + + + + + + + + + + +
    +
    + + + + + + +
    +
    TinyXML-2 10.0.0 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    + +

    - v -

    +
    + + + + diff --git a/Engine/lib/tinyxml/docs/functions_x.html b/Engine/lib/tinyxml2/docs/functions_x.html similarity index 52% rename from Engine/lib/tinyxml/docs/functions_x.html rename to Engine/lib/tinyxml2/docs/functions_x.html index 048879181..4a9df22cf 100644 --- a/Engine/lib/tinyxml/docs/functions_x.html +++ b/Engine/lib/tinyxml2/docs/functions_x.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    @@ -56,29 +58,30 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    -

    - x -

    diff --git a/Engine/lib/tinyxml/docs/hierarchy.html b/Engine/lib/tinyxml2/docs/hierarchy.html similarity index 50% rename from Engine/lib/tinyxml/docs/hierarchy.html rename to Engine/lib/tinyxml2/docs/hierarchy.html index 65db86d6a..ade52fb55 100644 --- a/Engine/lib/tinyxml/docs/hierarchy.html +++ b/Engine/lib/tinyxml2/docs/hierarchy.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Hierarchy + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    @@ -56,36 +58,42 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -
    -
    Class Hierarchy
    +
    Class Hierarchy
    diff --git a/Engine/lib/tinyxml/docs/index.html b/Engine/lib/tinyxml2/docs/index.html similarity index 86% rename from Engine/lib/tinyxml/docs/index.html rename to Engine/lib/tinyxml2/docs/index.html index 033d61797..57993bb97 100644 --- a/Engine/lib/tinyxml/docs/index.html +++ b/Engine/lib/tinyxml2/docs/index.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: TinyXML-2 + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    @@ -56,19 +58,24 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -
    -
    -
    TinyXML-2
    +
    +
    TinyXML-2

    -

    Build

    -

    TinyXML-2 Logo

    +

    Test

    TinyXML-2 is a simple, small, efficient, C++ XML parser that can be easily integrated into other programs.

    The master is hosted on github: https://github.com/leethomason/tinyxml2

    The online HTML version of these docs: http://leethomason.github.io/tinyxml2/

    @@ -95,7 +102,7 @@ $(function() {

    An XMLDocument is a C++ object like any other, that can be on the stack, or new'd and deleted on the heap.

    However, any sub-node of the Document, XMLElement, XMLText, etc, can only be created by calling the appropriate XMLDocument::NewElement, NewText, etc. method. Although you have pointers to these objects, they are still owned by the Document. When the Document is deleted, so are all the nodes it contains.

    White Space

    -

    Whitespace Preservation (default)

    +

    Whitespace Preservation (default, PRESERVE_WHITESPACE)

    Microsoft has an excellent article on white space: http://msdn.microsoft.com/en-us/library/ms256097.aspx

    By default, TinyXML-2 preserves white space in a (hopefully) sane way that is almost compliant with the spec. (TinyXML-1 used a completely different model, much more similar to 'collapse', below.)

    As a first step, all newlines / carriage-returns / line-feeds are normalized to a line-feed character, as required by the XML spec.

    @@ -109,7 +116,7 @@ $(function() { </document> <document><data>1</data><data>2</data><data>3</data></document> -

    Whitespace Collapse

    +

    Whitespace Collapse (COLLAPSE_WHITESPACE)

    For some applications, it is preferable to collapse whitespace. Collapsing whitespace gives you "HTML-like" behavior, which is sometimes more suitable for hand typed documents.

    TinyXML-2 supports this with the 'whitespace' parameter to the XMLDocument constructor. (The default is to preserve whitespace, as described above.)

    However, you may also use COLLAPSE_WHITESPACE, which will:

    @@ -119,7 +126,10 @@ $(function() {
  • Collapse a run of any number of space characters into a single space character
  • Note that (currently) there is a performance impact for using COLLAPSE_WHITESPACE. It essentially causes the XML to be parsed twice.

    -

    Error Reporting

    +

    Pedantic Whitespace (PEDANTIC_WHITESPACE)

    +

    For applications that need to know about text nodes that are composed entirely of whitespace, PEDANTIC_WHITESPACE is available. PEDANTIC_WHITESPACE maintains all the whilespace between elements.

    +

    PEDANTIC_WHITESPACE is a new mode and not as tested as the other whitespace modes.

    +

    Error Reporting

    TinyXML-2 reports the line number of any errors in an XML document that cannot be parsed correctly. In addition, all nodes (elements, declarations, text, comments etc.) and attributes have a line number recorded as they are parsed. This allows an application that performs additional validation of the parsed XML document (e.g. application-implemented DTD validation) to report line number information for error messages.

    Entities

    TinyXML-2 recognizes the pre-defined "character entities", meaning special characters. Namely:

    &amp;   &
    @@ -186,8 +196,8 @@ printer.CloseElement();
     
  • xmltest.cpp
  • Generally speaking, the intent is that you simply include the tinyxml2.cpp and tinyxml2.h files in your project and build with your other source code.

    -

    There is also a CMake build included. CMake is the general build for TinyXML-2. Additional build systems are costly to maintain, and tend to bit-rot.

    -

    A Visual Studio project is included, but that is largely for developer convenience, and is not intended to integrate well with other builds.

    +

    There is also a CMake build included. CMake is the general build for TinyXML-2.

    +

    (Additional build systems are costly to maintain, and tend to bit-rot. They are being removed over time.)

    Building TinyXML-2 - Using vcpkg

    You can download and install TinyXML-2 using the vcpkg dependency manager:

    git clone https://github.com/Microsoft/vcpkg.git
     cd vcpkg
    @@ -213,10 +223,11 @@ cd vcpkg
     

    TinyXML-2 grew from that effort. Lee Thomason is the original author of TinyXML-2 (and TinyXML-1) but TinyXML-2 has been and is being improved by many contributors.

    Thanks to John Mackay at http://john.mackay.rosalilastudio.com for the TinyXML-2 logo!

    +
    diff --git a/Engine/lib/tinyxml2/docs/jquery.js b/Engine/lib/tinyxml2/docs/jquery.js new file mode 100644 index 000000000..1dffb65b5 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/jquery.js @@ -0,0 +1,34 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
    "),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n
    ").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e
    ").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
    ').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/Engine/lib/tinyxml2/docs/menu.js b/Engine/lib/tinyxml2/docs/menu.js new file mode 100644 index 000000000..717761d01 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/menu.js @@ -0,0 +1,134 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + let result=''; + if ('children' in data) { + result+='
      '; + for (let i in data.children) { + let url; + const link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
    • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
    • '; + } + result+='
    '; + } + return result; + } + let searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
    '+ + '
    '+ + '
     '+ + ''+ + '
    '+ + '
    '+ + '
    '+ + '
    '; + } else { + searchBoxHtml='
    '+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
    '; + } + } + + $('#main-nav').before('
    '+ + ''+ + ''+ + '
    '); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + const $mainMenuState = $('#main-menu-state'); + let prevWidth = 0; + if ($mainMenuState.length) { + const initResizableIfExists = function() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function() { + const $menu = $('#main-menu'); + let options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = () => $menu.css('display', 'block'); + $menu.hide().slideDown(options); + } else { + options['complete'] = () => $menu.css('display', 'none'); + $menu.show().slideUp(options); + } + }); + // set default menu visibility + const resetState = function() { + const $menu = $('#main-menu'); + const newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/Engine/lib/tinyxml/docs/menudata.js b/Engine/lib/tinyxml2/docs/menudata.js similarity index 100% rename from Engine/lib/tinyxml/docs/menudata.js rename to Engine/lib/tinyxml2/docs/menudata.js diff --git a/Engine/lib/tinyxml2/docs/minus.svg b/Engine/lib/tinyxml2/docs/minus.svg new file mode 100644 index 000000000..f70d0c1a1 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/Engine/lib/tinyxml2/docs/minusd.svg b/Engine/lib/tinyxml2/docs/minusd.svg new file mode 100644 index 000000000..5f8e87962 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/Engine/lib/tinyxml/docs/nav_f.png b/Engine/lib/tinyxml2/docs/nav_f.png similarity index 100% rename from Engine/lib/tinyxml/docs/nav_f.png rename to Engine/lib/tinyxml2/docs/nav_f.png diff --git a/Engine/lib/tinyxml2/docs/nav_fd.png b/Engine/lib/tinyxml2/docs/nav_fd.png new file mode 100644 index 0000000000000000000000000000000000000000..032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8 zt7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF& zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S literal 0 HcmV?d00001 diff --git a/Engine/lib/tinyxml/docs/nav_g.png b/Engine/lib/tinyxml2/docs/nav_g.png similarity index 100% rename from Engine/lib/tinyxml/docs/nav_g.png rename to Engine/lib/tinyxml2/docs/nav_g.png diff --git a/Engine/lib/tinyxml/docs/nav_h.png b/Engine/lib/tinyxml2/docs/nav_h.png similarity index 100% rename from Engine/lib/tinyxml/docs/nav_h.png rename to Engine/lib/tinyxml2/docs/nav_h.png diff --git a/Engine/lib/tinyxml2/docs/nav_hd.png b/Engine/lib/tinyxml2/docs/nav_hd.png new file mode 100644 index 0000000000000000000000000000000000000000..de80f18ad6488b9990303f267a76fdc83f0ffd80 GIT binary patch literal 114 zcmeAS@N?(olHy`uVBq!ia0vp^j6lr8!2~3AUOE6t21`#D$B+ufw|9379#G(63FK{W z5s6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg M>FVdQ&MBb@0Bdt1Qvd(} literal 0 HcmV?d00001 diff --git a/Engine/lib/tinyxml/docs/open.png b/Engine/lib/tinyxml2/docs/open.png similarity index 100% rename from Engine/lib/tinyxml/docs/open.png rename to Engine/lib/tinyxml2/docs/open.png diff --git a/Engine/lib/tinyxml/docs/pages.html b/Engine/lib/tinyxml2/docs/pages.html similarity index 58% rename from Engine/lib/tinyxml/docs/pages.html rename to Engine/lib/tinyxml2/docs/pages.html index 12adb8316..0c7428d76 100644 --- a/Engine/lib/tinyxml/docs/pages.html +++ b/Engine/lib/tinyxml2/docs/pages.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Related Pages + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    @@ -56,28 +58,34 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -
    -
    Related Pages
    +
    Related Pages
    diff --git a/Engine/lib/tinyxml2/docs/plus.svg b/Engine/lib/tinyxml2/docs/plus.svg new file mode 100644 index 000000000..075201655 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/plus.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Engine/lib/tinyxml2/docs/plusd.svg b/Engine/lib/tinyxml2/docs/plusd.svg new file mode 100644 index 000000000..0c65bfe94 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Engine/lib/tinyxml/docs/search/all_0.html b/Engine/lib/tinyxml2/docs/search/all_0.html similarity index 100% rename from Engine/lib/tinyxml/docs/search/all_0.html rename to Engine/lib/tinyxml2/docs/search/all_0.html diff --git a/Engine/lib/tinyxml2/docs/search/all_0.js b/Engine/lib/tinyxml2/docs/search/all_0.js new file mode 100644 index 000000000..5da8a5542 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/search/all_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['2_0',['TinyXML-2',['../index.html',1,'']]] +]; diff --git a/Engine/lib/tinyxml/docs/search/all_1.html b/Engine/lib/tinyxml2/docs/search/all_1.html similarity index 100% rename from Engine/lib/tinyxml/docs/search/all_1.html rename to Engine/lib/tinyxml2/docs/search/all_1.html diff --git a/Engine/lib/tinyxml2/docs/search/all_1.js b/Engine/lib/tinyxml2/docs/search/all_1.js new file mode 100644 index 000000000..9843f1842 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/search/all_1.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['accept_0',['Accept',['../classtinyxml2_1_1_x_m_l_node.html#a81e66df0a44c67a7af17f3b77a152785',1,'tinyxml2::XMLNode::Accept()'],['../classtinyxml2_1_1_x_m_l_text.html#a4022fa0089f2964203c7a69cd0f3726f',1,'tinyxml2::XMLText::Accept()'],['../classtinyxml2_1_1_x_m_l_comment.html#a171ccb71232b90cd0d6945b92cfc4aec',1,'tinyxml2::XMLComment::Accept()'],['../classtinyxml2_1_1_x_m_l_declaration.html#afd861abee3ed6c88e9a6965dac32f8b7',1,'tinyxml2::XMLDeclaration::Accept()'],['../classtinyxml2_1_1_x_m_l_unknown.html#ab510bfaa18873a3968964655353d2946',1,'tinyxml2::XMLUnknown::Accept()'],['../classtinyxml2_1_1_x_m_l_element.html#acae4a763d74c13ce4a31eb70b4db9f82',1,'tinyxml2::XMLElement::Accept()'],['../classtinyxml2_1_1_x_m_l_document.html#a853f05e2f7f51eb598e32ec61d8bc53c',1,'tinyxml2::XMLDocument::Accept()']]], + ['an_20xml_20file_1',['Load an XML File',['../_example_1.html',1,'']]], + ['an_20xml_20from_20char_20buffer_2',['Parse an XML from char buffer',['../_example_2.html',1,'']]], + ['and_20text_20information_3',['Read attributes and text information.',['../_example_4.html',1,'']]], + ['attribute_4',['Attribute',['../classtinyxml2_1_1_x_m_l_element.html#a48cf4a315cfbac7d74cd0d5ff2c5df51',1,'tinyxml2::XMLElement']]], + ['attributes_20and_20text_20information_5',['Read attributes and text information.',['../_example_4.html',1,'']]] +]; diff --git a/Engine/lib/tinyxml/docs/search/all_10.html b/Engine/lib/tinyxml2/docs/search/all_10.html similarity index 100% rename from Engine/lib/tinyxml/docs/search/all_10.html rename to Engine/lib/tinyxml2/docs/search/all_10.html diff --git a/Engine/lib/tinyxml2/docs/search/all_10.js b/Engine/lib/tinyxml2/docs/search/all_10.js new file mode 100644 index 000000000..c29ac63b3 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/search/all_10.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['savefile_0',['SaveFile',['../classtinyxml2_1_1_x_m_l_document.html#a73ac416b4a2aa0952e841220eb3da18f',1,'tinyxml2::XMLDocument::SaveFile(const char *filename, bool compact=false)'],['../classtinyxml2_1_1_x_m_l_document.html#a8b95779479a0035acc67b3a61dfe1b74',1,'tinyxml2::XMLDocument::SaveFile(FILE *fp, bool compact=false)']]], + ['setattribute_1',['SetAttribute',['../classtinyxml2_1_1_x_m_l_attribute.html#a406d2c4a13c7af99a65edb59dd9f7581',1,'tinyxml2::XMLAttribute::SetAttribute(const char *value)'],['../classtinyxml2_1_1_x_m_l_attribute.html#ad86d7d7058d76761c3a80662566a57e5',1,'tinyxml2::XMLAttribute::SetAttribute(int value)'],['../classtinyxml2_1_1_x_m_l_attribute.html#ae70468c0f6df2748ba3529c716999fae',1,'tinyxml2::XMLAttribute::SetAttribute(unsigned value)'],['../classtinyxml2_1_1_x_m_l_attribute.html#a7c1240f479722b9aa29b6c030aa116c2',1,'tinyxml2::XMLAttribute::SetAttribute(int64_t value)'],['../classtinyxml2_1_1_x_m_l_attribute.html#a10964060a5c0d92486ecf8705bdf37da',1,'tinyxml2::XMLAttribute::SetAttribute(uint64_t value)'],['../classtinyxml2_1_1_x_m_l_attribute.html#ab3516def4fe058fe328f2b89fc2d77da',1,'tinyxml2::XMLAttribute::SetAttribute(bool value)'],['../classtinyxml2_1_1_x_m_l_attribute.html#a9a65ab3147abe8ccbbd373ce8791e818',1,'tinyxml2::XMLAttribute::SetAttribute(double value)'],['../classtinyxml2_1_1_x_m_l_attribute.html#ae95e843313aaf5d56c32530b6456df02',1,'tinyxml2::XMLAttribute::SetAttribute(float value)'],['../classtinyxml2_1_1_x_m_l_element.html#a11943abf2d0831548c3790dd5d9f119c',1,'tinyxml2::XMLElement::SetAttribute(const char *name, const char *value)'],['../classtinyxml2_1_1_x_m_l_element.html#aae6568c64c7f1cc88be8461ba41a79cf',1,'tinyxml2::XMLElement::SetAttribute(const char *name, int value)'],['../classtinyxml2_1_1_x_m_l_element.html#ae143997e90064ba82326b29a9930ea8f',1,'tinyxml2::XMLElement::SetAttribute(const char *name, unsigned value)'],['../classtinyxml2_1_1_x_m_l_element.html#aaeefdf9171fec91b13a776b42299b0dd',1,'tinyxml2::XMLElement::SetAttribute(const char *name, int64_t value)'],['../classtinyxml2_1_1_x_m_l_element.html#ad598868c0599ddc4695dab18552c308d',1,'tinyxml2::XMLElement::SetAttribute(const char *name, uint64_t value)'],['../classtinyxml2_1_1_x_m_l_element.html#aa848b696e6a75e4e545c6da9893b11e1',1,'tinyxml2::XMLElement::SetAttribute(const char *name, bool value)'],['../classtinyxml2_1_1_x_m_l_element.html#a233397ee81e70eb5d4b814c5f8698533',1,'tinyxml2::XMLElement::SetAttribute(const char *name, double value)'],['../classtinyxml2_1_1_x_m_l_element.html#a554b70d882e65b28fc084b23df9b9759',1,'tinyxml2::XMLElement::SetAttribute(const char *name, float value)']]], + ['setbom_2',['SetBOM',['../classtinyxml2_1_1_x_m_l_document.html#a14419b698f7c4b140df4e80f3f0c93b0',1,'tinyxml2::XMLDocument']]], + ['setcdata_3',['SetCData',['../classtinyxml2_1_1_x_m_l_text.html#ad080357d76ab7cc59d7651249949329d',1,'tinyxml2::XMLText']]], + ['setname_4',['SetName',['../classtinyxml2_1_1_x_m_l_element.html#a97712009a530d8cb8a63bf705f02b4f1',1,'tinyxml2::XMLElement']]], + ['settext_5',['SetText',['../classtinyxml2_1_1_x_m_l_element.html#a1f9c2cd61b72af5ae708d37b7ad283ce',1,'tinyxml2::XMLElement::SetText(const char *inText)'],['../classtinyxml2_1_1_x_m_l_element.html#aeae8917b5ea6060b3c08d4e3d8d632d7',1,'tinyxml2::XMLElement::SetText(int value)'],['../classtinyxml2_1_1_x_m_l_element.html#a7bbfcc11d516598bc924a8fba4d08597',1,'tinyxml2::XMLElement::SetText(unsigned value)'],['../classtinyxml2_1_1_x_m_l_element.html#a7b62cd33acdfeff7ea2b1b330d4368e4',1,'tinyxml2::XMLElement::SetText(int64_t value)'],['../classtinyxml2_1_1_x_m_l_element.html#a6e615bc745afd1ca8ded56d7aac02657',1,'tinyxml2::XMLElement::SetText(uint64_t value)'],['../classtinyxml2_1_1_x_m_l_element.html#ae4b543d6770de76fb6ab68e541c192a4',1,'tinyxml2::XMLElement::SetText(bool value)'],['../classtinyxml2_1_1_x_m_l_element.html#a67bd77ac9aaeff58ff20b4275a65ba4e',1,'tinyxml2::XMLElement::SetText(double value)'],['../classtinyxml2_1_1_x_m_l_element.html#a51d560da5ae3ad6b75e0ab9ffb2ae42a',1,'tinyxml2::XMLElement::SetText(float value)']]], + ['setuserdata_6',['SetUserData',['../classtinyxml2_1_1_x_m_l_node.html#a002978fc889cc011d143185f2377eca2',1,'tinyxml2::XMLNode']]], + ['setvalue_7',['SetValue',['../classtinyxml2_1_1_x_m_l_node.html#a09dd68cf9eae137579f6e50f36487513',1,'tinyxml2::XMLNode']]], + ['shallowclone_8',['ShallowClone',['../classtinyxml2_1_1_x_m_l_node.html#a9046880c05b81ad99ee645f4b2a53ecd',1,'tinyxml2::XMLNode::ShallowClone()'],['../classtinyxml2_1_1_x_m_l_text.html#a277bbcf2e0e1326ca7f6f7c4d0820bb0',1,'tinyxml2::XMLText::ShallowClone()'],['../classtinyxml2_1_1_x_m_l_comment.html#a5396d702a6ca251ee1493707a3ac6086',1,'tinyxml2::XMLComment::ShallowClone()'],['../classtinyxml2_1_1_x_m_l_declaration.html#a0e1151bfb4c2a42ed8a1991169cbc59e',1,'tinyxml2::XMLDeclaration::ShallowClone()'],['../classtinyxml2_1_1_x_m_l_unknown.html#a5ffeb6cd9e55008ebc160c1ceb4115ec',1,'tinyxml2::XMLUnknown::ShallowClone()'],['../classtinyxml2_1_1_x_m_l_element.html#a6dc4d8774d1e77a8c37a7b3d039d3049',1,'tinyxml2::XMLElement::ShallowClone()'],['../classtinyxml2_1_1_x_m_l_document.html#a01ab2fc16fbce5f4456d67d24090e70b',1,'tinyxml2::XMLDocument::ShallowClone()']]], + ['shallowequal_9',['ShallowEqual',['../classtinyxml2_1_1_x_m_l_node.html#a7ce18b751c3ea09eac292dca264f9226',1,'tinyxml2::XMLNode::ShallowEqual()'],['../classtinyxml2_1_1_x_m_l_text.html#a032269f8d4d0357912fcb9bdc796f50c',1,'tinyxml2::XMLText::ShallowEqual()'],['../classtinyxml2_1_1_x_m_l_comment.html#a5d905bdee77945cf8473987911fbe581',1,'tinyxml2::XMLComment::ShallowEqual()'],['../classtinyxml2_1_1_x_m_l_declaration.html#a125d70baaba44a55c2f10e185f70d478',1,'tinyxml2::XMLDeclaration::ShallowEqual()'],['../classtinyxml2_1_1_x_m_l_unknown.html#a300a119859a7c25a64f400c16535d8b4',1,'tinyxml2::XMLUnknown::ShallowEqual()'],['../classtinyxml2_1_1_x_m_l_element.html#aaba88737610559755425b8a59179817e',1,'tinyxml2::XMLElement::ShallowEqual()'],['../classtinyxml2_1_1_x_m_l_document.html#ac538345c44f521e418ff86b4bdc20ca8',1,'tinyxml2::XMLDocument::ShallowEqual()']]] +]; diff --git a/Engine/lib/tinyxml/docs/search/all_11.html b/Engine/lib/tinyxml2/docs/search/all_11.html similarity index 100% rename from Engine/lib/tinyxml/docs/search/all_11.html rename to Engine/lib/tinyxml2/docs/search/all_11.html diff --git a/Engine/lib/tinyxml2/docs/search/all_11.js b/Engine/lib/tinyxml2/docs/search/all_11.js new file mode 100644 index 000000000..494ed06ee --- /dev/null +++ b/Engine/lib/tinyxml2/docs/search/all_11.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['text_20information_0',['Read attributes and text information.',['../_example_4.html',1,'']]], + ['tinyxml_202_1',['TinyXML-2',['../index.html',1,'']]], + ['tocomment_2',['ToComment',['../classtinyxml2_1_1_x_m_l_node.html#a5dc13f02ae49e3fa609e426f47c8466d',1,'tinyxml2::XMLNode::ToComment()'],['../classtinyxml2_1_1_x_m_l_comment.html#a7bd0df98fc2bb55d1d4445bfd2ec0053',1,'tinyxml2::XMLComment::ToComment()']]], + ['todeclaration_3',['ToDeclaration',['../classtinyxml2_1_1_x_m_l_node.html#a12aa783a3a4445ad5557c7d56cd8dc4a',1,'tinyxml2::XMLNode::ToDeclaration()'],['../classtinyxml2_1_1_x_m_l_declaration.html#ac485f175252b0d838d86de5fa22455cd',1,'tinyxml2::XMLDeclaration::ToDeclaration()'],['../classtinyxml2_1_1_x_m_l_handle.html#a85d0c76920a013ea2a29456dbf7d160d',1,'tinyxml2::XMLHandle::ToDeclaration()']]], + ['todocument_4',['ToDocument',['../classtinyxml2_1_1_x_m_l_node.html#a6107c3f57ab6e0755959947762953652',1,'tinyxml2::XMLNode::ToDocument()'],['../classtinyxml2_1_1_x_m_l_document.html#a290ad241e05e6aeeccbc78a4f3454f55',1,'tinyxml2::XMLDocument::ToDocument()']]], + ['toelement_5',['ToElement',['../classtinyxml2_1_1_x_m_l_node.html#a9417e1f8a9787ae27741605493514b18',1,'tinyxml2::XMLNode::ToElement()'],['../classtinyxml2_1_1_x_m_l_element.html#a88621376780280c0695458e30212eebe',1,'tinyxml2::XMLElement::ToElement()'],['../classtinyxml2_1_1_x_m_l_handle.html#ab2371c4adb8b04afe04ed216bf9b0676',1,'tinyxml2::XMLHandle::ToElement()']]], + ['tonode_6',['ToNode',['../classtinyxml2_1_1_x_m_l_handle.html#a689453c96dd3d4016437d2298d1de691',1,'tinyxml2::XMLHandle']]], + ['totext_7',['ToText',['../classtinyxml2_1_1_x_m_l_node.html#a0aea8c9c5853c35a06da1988486abc60',1,'tinyxml2::XMLNode::ToText()'],['../classtinyxml2_1_1_x_m_l_text.html#a221e45ee1026407049d89786cbbfe145',1,'tinyxml2::XMLText::ToText()'],['../classtinyxml2_1_1_x_m_l_handle.html#accc80bcbd81e816f13a23c172587c288',1,'tinyxml2::XMLHandle::ToText()']]], + ['tounknown_8',['ToUnknown',['../classtinyxml2_1_1_x_m_l_node.html#aa8a2dd38b786c3b8d406c2047753cbfd',1,'tinyxml2::XMLNode::ToUnknown()'],['../classtinyxml2_1_1_x_m_l_unknown.html#a7d2238fe165736605de3ba2e2e5a99d1',1,'tinyxml2::XMLUnknown::ToUnknown()'],['../classtinyxml2_1_1_x_m_l_handle.html#add97784cbe14ef42bb36e158ad6e6082',1,'tinyxml2::XMLHandle::ToUnknown()']]] +]; diff --git a/Engine/lib/tinyxml/docs/search/all_12.html b/Engine/lib/tinyxml2/docs/search/all_12.html similarity index 100% rename from Engine/lib/tinyxml/docs/search/all_12.html rename to Engine/lib/tinyxml2/docs/search/all_12.html diff --git a/Engine/lib/tinyxml2/docs/search/all_12.js b/Engine/lib/tinyxml2/docs/search/all_12.js new file mode 100644 index 000000000..d1602adc1 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/search/all_12.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['unsigned64attribute_0',['Unsigned64Attribute',['../classtinyxml2_1_1_x_m_l_element.html#a226502bab8f1be7ede1fdd255398eb85',1,'tinyxml2::XMLElement']]], + ['unsigned64text_1',['Unsigned64Text',['../classtinyxml2_1_1_x_m_l_element.html#af48c1023abbac1acdf4927c51c3a5f0c',1,'tinyxml2::XMLElement']]], + ['unsignedattribute_2',['UnsignedAttribute',['../classtinyxml2_1_1_x_m_l_element.html#afea43a1d4aa33e3703ddee5fc9adc26c',1,'tinyxml2::XMLElement']]], + ['unsignedtext_3',['UnsignedText',['../classtinyxml2_1_1_x_m_l_element.html#a49bad014ffcc17b0b6119d5b2c97dfb5',1,'tinyxml2::XMLElement']]], + ['unsignedvalue_4',['UnsignedValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a0be5343b08a957c42c02c5d32c35d338',1,'tinyxml2::XMLAttribute']]] +]; diff --git a/Engine/lib/tinyxml/docs/search/all_13.html b/Engine/lib/tinyxml2/docs/search/all_13.html similarity index 100% rename from Engine/lib/tinyxml/docs/search/all_13.html rename to Engine/lib/tinyxml2/docs/search/all_13.html diff --git a/Engine/lib/tinyxml2/docs/search/all_13.js b/Engine/lib/tinyxml2/docs/search/all_13.js new file mode 100644 index 000000000..cc7cc15ca --- /dev/null +++ b/Engine/lib/tinyxml2/docs/search/all_13.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['value_0',['Value',['../classtinyxml2_1_1_x_m_l_node.html#a0485e51c670e741884cfd8362274d680',1,'tinyxml2::XMLNode::Value()'],['../classtinyxml2_1_1_x_m_l_attribute.html#ab1c5cd993f836a771818ca408994b14e',1,'tinyxml2::XMLAttribute::Value()']]], + ['visit_1',['Visit',['../classtinyxml2_1_1_x_m_l_visitor.html#adc75bd459fc7ba8223b50f0616767f9a',1,'tinyxml2::XMLVisitor::Visit(const XMLDeclaration &)'],['../classtinyxml2_1_1_x_m_l_visitor.html#af30233565856480ea48b6fa0d6dec65b',1,'tinyxml2::XMLVisitor::Visit(const XMLText &)'],['../classtinyxml2_1_1_x_m_l_visitor.html#acc8147fb5a85f6c65721654e427752d7',1,'tinyxml2::XMLVisitor::Visit(const XMLComment &)'],['../classtinyxml2_1_1_x_m_l_visitor.html#a14e4748387c34bf53d24e8119bb1f292',1,'tinyxml2::XMLVisitor::Visit(const XMLUnknown &)'],['../classtinyxml2_1_1_x_m_l_printer.html#ad903ea1672831f797130b4cddddfa532',1,'tinyxml2::XMLPrinter::Visit(const XMLText &text) override'],['../classtinyxml2_1_1_x_m_l_printer.html#a76fe434cdd4c39cb9963e3025e53609a',1,'tinyxml2::XMLPrinter::Visit(const XMLComment &comment) override'],['../classtinyxml2_1_1_x_m_l_printer.html#a63df55647c0e170e5b8702842b82008e',1,'tinyxml2::XMLPrinter::Visit(const XMLDeclaration &declaration) override'],['../classtinyxml2_1_1_x_m_l_printer.html#a31002765840bc4ea7b22332f71d83c74',1,'tinyxml2::XMLPrinter::Visit(const XMLUnknown &unknown) override']]], + ['visitenter_2',['VisitEnter',['../classtinyxml2_1_1_x_m_l_visitor.html#acb3c22fc5f60eb9db98f533f2761f67d',1,'tinyxml2::XMLVisitor::VisitEnter(const XMLDocument &)'],['../classtinyxml2_1_1_x_m_l_visitor.html#af97980a17dd4e37448b181f5ddfa92b5',1,'tinyxml2::XMLVisitor::VisitEnter(const XMLElement &, const XMLAttribute *)'],['../classtinyxml2_1_1_x_m_l_printer.html#a73eba3d1aab34c4c3ac38d7d2d186671',1,'tinyxml2::XMLPrinter::VisitEnter(const XMLDocument &) override'],['../classtinyxml2_1_1_x_m_l_printer.html#a5cab997d51b0387c21e2274bd1147755',1,'tinyxml2::XMLPrinter::VisitEnter(const XMLElement &element, const XMLAttribute *attribute) override']]], + ['visitexit_3',['VisitExit',['../classtinyxml2_1_1_x_m_l_visitor.html#a170e9989cd046ba904f302d087e07086',1,'tinyxml2::XMLVisitor::VisitExit(const XMLDocument &)'],['../classtinyxml2_1_1_x_m_l_visitor.html#a772f10ddc83f881956d32628faa16eb6',1,'tinyxml2::XMLVisitor::VisitExit(const XMLElement &)'],['../classtinyxml2_1_1_x_m_l_printer.html#a261a24986e3507258a74405a7dc08cbf',1,'tinyxml2::XMLPrinter::VisitExit(const XMLDocument &) override'],['../classtinyxml2_1_1_x_m_l_printer.html#a9a397f4c809a4de7ba27902b3ae1bbf7',1,'tinyxml2::XMLPrinter::VisitExit(const XMLElement &element) override']]] +]; diff --git a/Engine/lib/tinyxml2/docs/search/all_14.js b/Engine/lib/tinyxml2/docs/search/all_14.js new file mode 100644 index 000000000..5ada783a4 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/search/all_14.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['xml_0',['Get information out of XML',['../_example_3.html',1,'']]], + ['xml_20file_1',['Load an XML File',['../_example_1.html',1,'']]], + ['xml_20from_20char_20buffer_2',['Parse an XML from char buffer',['../_example_2.html',1,'']]], + ['xmlattribute_3',['XMLAttribute',['../classtinyxml2_1_1_x_m_l_attribute.html',1,'tinyxml2']]], + ['xmlcomment_4',['XMLComment',['../classtinyxml2_1_1_x_m_l_comment.html',1,'tinyxml2']]], + ['xmlconsthandle_5',['XMLConstHandle',['../classtinyxml2_1_1_x_m_l_const_handle.html',1,'tinyxml2']]], + ['xmldeclaration_6',['XMLDeclaration',['../classtinyxml2_1_1_x_m_l_declaration.html',1,'tinyxml2']]], + ['xmldocument_7',['XMLDocument',['../classtinyxml2_1_1_x_m_l_document.html',1,'tinyxml2::XMLDocument'],['../classtinyxml2_1_1_x_m_l_document.html#a57ddf17b6e054dda10af98991b1b8f70',1,'tinyxml2::XMLDocument::XMLDocument()']]], + ['xmlelement_8',['XMLElement',['../classtinyxml2_1_1_x_m_l_element.html',1,'tinyxml2']]], + ['xmlhandle_9',['XMLHandle',['../classtinyxml2_1_1_x_m_l_handle.html',1,'tinyxml2::XMLHandle'],['../classtinyxml2_1_1_x_m_l_handle.html#a9c240a35c18f053509b4b97ddccd9793',1,'tinyxml2::XMLHandle::XMLHandle(XMLNode *node)'],['../classtinyxml2_1_1_x_m_l_handle.html#aa2edbc1c0d3e3e8259bd98de7f1cf500',1,'tinyxml2::XMLHandle::XMLHandle(XMLNode &node)'],['../classtinyxml2_1_1_x_m_l_handle.html#afd8e01e6018c07347b8e6d80272466aa',1,'tinyxml2::XMLHandle::XMLHandle(const XMLHandle &ref)']]], + ['xmlnode_10',['XMLNode',['../classtinyxml2_1_1_x_m_l_node.html',1,'tinyxml2']]], + ['xmlprinter_11',['XMLPrinter',['../classtinyxml2_1_1_x_m_l_printer.html',1,'tinyxml2::XMLPrinter'],['../classtinyxml2_1_1_x_m_l_printer.html#aa6d3841c069085f5b8a27bc7103c04f7',1,'tinyxml2::XMLPrinter::XMLPrinter()']]], + ['xmltext_12',['XMLText',['../classtinyxml2_1_1_x_m_l_text.html',1,'tinyxml2']]], + ['xmlunknown_13',['XMLUnknown',['../classtinyxml2_1_1_x_m_l_unknown.html',1,'tinyxml2']]], + ['xmlvisitor_14',['XMLVisitor',['../classtinyxml2_1_1_x_m_l_visitor.html',1,'tinyxml2']]] +]; diff --git a/Engine/lib/tinyxml/docs/search/all_2.html b/Engine/lib/tinyxml2/docs/search/all_2.html similarity index 100% rename from Engine/lib/tinyxml/docs/search/all_2.html rename to Engine/lib/tinyxml2/docs/search/all_2.html diff --git a/Engine/lib/tinyxml2/docs/search/all_2.js b/Engine/lib/tinyxml2/docs/search/all_2.js new file mode 100644 index 000000000..afeff4b90 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/search/all_2.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['boolattribute_0',['BoolAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a53eda26131e1ad1031ef8ec8adb51bd8',1,'tinyxml2::XMLElement']]], + ['booltext_1',['BoolText',['../classtinyxml2_1_1_x_m_l_element.html#a68569f59f6382bcea7f5013ec59736d2',1,'tinyxml2::XMLElement']]], + ['boolvalue_2',['BoolValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a98ce5207344ad33a265b0422addae1ff',1,'tinyxml2::XMLAttribute']]], + ['buffer_3',['Parse an XML from char buffer',['../_example_2.html',1,'']]] +]; diff --git a/Engine/lib/tinyxml/docs/search/all_3.html b/Engine/lib/tinyxml2/docs/search/all_3.html similarity index 100% rename from Engine/lib/tinyxml/docs/search/all_3.html rename to Engine/lib/tinyxml2/docs/search/all_3.html diff --git a/Engine/lib/tinyxml2/docs/search/all_3.js b/Engine/lib/tinyxml2/docs/search/all_3.js new file mode 100644 index 000000000..7565a6218 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/search/all_3.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['cdata_0',['CData',['../classtinyxml2_1_1_x_m_l_text.html#ac1bb5ea4166c320882d9e0ad16fd385b',1,'tinyxml2::XMLText']]], + ['char_20buffer_1',['Parse an XML from char buffer',['../_example_2.html',1,'']]], + ['clear_2',['Clear',['../classtinyxml2_1_1_x_m_l_document.html#a65656b0b2cbc822708eb351504178aaf',1,'tinyxml2::XMLDocument']]], + ['clearbuffer_3',['ClearBuffer',['../classtinyxml2_1_1_x_m_l_printer.html#a690cb140ba98b7339734ff865f56b0b3',1,'tinyxml2::XMLPrinter']]], + ['clearerror_4',['ClearError',['../classtinyxml2_1_1_x_m_l_document.html#a4085d9c52f1d93214311459d6d1fcf17',1,'tinyxml2::XMLDocument']]], + ['closeelement_5',['CloseElement',['../classtinyxml2_1_1_x_m_l_printer.html#ad04d29562b46fcdb23ab320f8b664240',1,'tinyxml2::XMLPrinter']]], + ['cstr_6',['CStr',['../classtinyxml2_1_1_x_m_l_printer.html#abfa772366c44a17cdeb8aea294d57f78',1,'tinyxml2::XMLPrinter']]], + ['cstrsize_7',['CStrSize',['../classtinyxml2_1_1_x_m_l_printer.html#a3256cf3523d4898b91abb18b924be04c',1,'tinyxml2::XMLPrinter']]] +]; diff --git a/Engine/lib/tinyxml/docs/search/all_4.html b/Engine/lib/tinyxml2/docs/search/all_4.html similarity index 100% rename from Engine/lib/tinyxml/docs/search/all_4.html rename to Engine/lib/tinyxml2/docs/search/all_4.html diff --git a/Engine/lib/tinyxml2/docs/search/all_4.js b/Engine/lib/tinyxml2/docs/search/all_4.js new file mode 100644 index 000000000..389526f01 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/search/all_4.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['deepclone_0',['DeepClone',['../classtinyxml2_1_1_x_m_l_node.html#a3bb369fd733f1989b751d99a9417adab',1,'tinyxml2::XMLNode']]], + ['deepcopy_1',['DeepCopy',['../classtinyxml2_1_1_x_m_l_document.html#af592ffc91514e25a39664521ac83db45',1,'tinyxml2::XMLDocument']]], + ['deleteattribute_2',['DeleteAttribute',['../classtinyxml2_1_1_x_m_l_element.html#aebd45aa7118964c30b32fe12e944628a',1,'tinyxml2::XMLElement']]], + ['deletechild_3',['DeleteChild',['../classtinyxml2_1_1_x_m_l_node.html#a363b6edbd6ebd55f8387d2b89f2b0921',1,'tinyxml2::XMLNode']]], + ['deletechildren_4',['DeleteChildren',['../classtinyxml2_1_1_x_m_l_node.html#a0360085cc54df5bff85d5c5da13afdce',1,'tinyxml2::XMLNode']]], + ['deletenode_5',['DeleteNode',['../classtinyxml2_1_1_x_m_l_document.html#ac1d6e2c7fcc1a660624ac4f68e96380d',1,'tinyxml2::XMLDocument']]], + ['doubleattribute_6',['DoubleAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a10a90c505aea716bf073eea1c97f33b5',1,'tinyxml2::XMLElement']]], + ['doubletext_7',['DoubleText',['../classtinyxml2_1_1_x_m_l_element.html#a81b1ff0cf2f2cd09be8badc08b39a2b7',1,'tinyxml2::XMLElement']]], + ['doublevalue_8',['DoubleValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a4aa73513f54ff0087d3e804f0f54e30f',1,'tinyxml2::XMLAttribute']]] +]; diff --git a/Engine/lib/tinyxml/docs/search/all_5.html b/Engine/lib/tinyxml2/docs/search/all_5.html similarity index 100% rename from Engine/lib/tinyxml/docs/search/all_5.html rename to Engine/lib/tinyxml2/docs/search/all_5.html diff --git a/Engine/lib/tinyxml2/docs/search/all_5.js b/Engine/lib/tinyxml2/docs/search/all_5.js new file mode 100644 index 000000000..45f017ad8 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/search/all_5.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['error_0',['Error',['../classtinyxml2_1_1_x_m_l_document.html#a34e6318e182e40e3cc4f4ba5d59ed9ed',1,'tinyxml2::XMLDocument']]], + ['errorid_1',['ErrorID',['../classtinyxml2_1_1_x_m_l_document.html#afa3ed33b3107f920ec2b301f805ac17d',1,'tinyxml2::XMLDocument']]], + ['errorlinenum_2',['ErrorLineNum',['../classtinyxml2_1_1_x_m_l_document.html#a57400f816dbe7799ece33615ead9ab76',1,'tinyxml2::XMLDocument']]], + ['errorstr_3',['ErrorStr',['../classtinyxml2_1_1_x_m_l_document.html#ae97fff2402a0d01e0509c430b37996b3',1,'tinyxml2::XMLDocument']]] +]; diff --git a/Engine/lib/tinyxml/docs/search/all_6.html b/Engine/lib/tinyxml2/docs/search/all_6.html similarity index 100% rename from Engine/lib/tinyxml/docs/search/all_6.html rename to Engine/lib/tinyxml2/docs/search/all_6.html diff --git a/Engine/lib/tinyxml2/docs/search/all_6.js b/Engine/lib/tinyxml2/docs/search/all_6.js new file mode 100644 index 000000000..c0f7a60de --- /dev/null +++ b/Engine/lib/tinyxml2/docs/search/all_6.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['file_0',['Load an XML File',['../_example_1.html',1,'']]], + ['findattribute_1',['FindAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a157750dac8037a316fd1af1a973dfa2c',1,'tinyxml2::XMLElement']]], + ['firstattribute_2',['FirstAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a4a7c4392658833bb8138c474d15a805a',1,'tinyxml2::XMLElement']]], + ['firstchild_3',['FirstChild',['../classtinyxml2_1_1_x_m_l_node.html#abcc2e572dce329539689b426a0840661',1,'tinyxml2::XMLNode::FirstChild()'],['../classtinyxml2_1_1_x_m_l_handle.html#a536447dc7f54c0cd11e031dad94795ae',1,'tinyxml2::XMLHandle::FirstChild()']]], + ['firstchildelement_4',['FirstChildElement',['../classtinyxml2_1_1_x_m_l_node.html#a1bec132dcf085284e0a10755f2cf0d57',1,'tinyxml2::XMLNode::FirstChildElement()'],['../classtinyxml2_1_1_x_m_l_handle.html#a74b04dd0f15e0bf01860e282b840b6a3',1,'tinyxml2::XMLHandle::FirstChildElement()']]], + ['floatattribute_5',['FloatAttribute',['../classtinyxml2_1_1_x_m_l_element.html#ab1f4be2332e27dc640e9b6abd01d64dd',1,'tinyxml2::XMLElement']]], + ['floattext_6',['FloatText',['../classtinyxml2_1_1_x_m_l_element.html#a45444eb21f99ca46101545992dc2e927',1,'tinyxml2::XMLElement']]], + ['floatvalue_7',['FloatValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a27797b45d21c981257720db94f5f8801',1,'tinyxml2::XMLAttribute']]], + ['from_20char_20buffer_8',['Parse an XML from char buffer',['../_example_2.html',1,'']]] +]; diff --git a/Engine/lib/tinyxml/docs/search/all_7.html b/Engine/lib/tinyxml2/docs/search/all_7.html similarity index 100% rename from Engine/lib/tinyxml/docs/search/all_7.html rename to Engine/lib/tinyxml2/docs/search/all_7.html diff --git a/Engine/lib/tinyxml2/docs/search/all_7.js b/Engine/lib/tinyxml2/docs/search/all_7.js new file mode 100644 index 000000000..43a46e024 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/search/all_7.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['get_20information_20out_20of_20xml_0',['Get information out of XML',['../_example_3.html',1,'']]], + ['getdocument_1',['GetDocument',['../classtinyxml2_1_1_x_m_l_node.html#a6ce3bbe80357f5a4dc5db31a66f2bb18',1,'tinyxml2::XMLNode::GetDocument() const'],['../classtinyxml2_1_1_x_m_l_node.html#a48d1695f7c834129e072548957a50501',1,'tinyxml2::XMLNode::GetDocument()']]], + ['getlinenum_2',['GetLineNum',['../classtinyxml2_1_1_x_m_l_node.html#a9b5fc636646fda761d342c72e91cb286',1,'tinyxml2::XMLNode::GetLineNum()'],['../classtinyxml2_1_1_x_m_l_attribute.html#a02d5ea924586e35f9c13857d1671b765',1,'tinyxml2::XMLAttribute::GetLineNum()']]], + ['gettext_3',['GetText',['../classtinyxml2_1_1_x_m_l_element.html#a0fa5bea0a4daf3ddd503dcabb823eba6',1,'tinyxml2::XMLElement']]], + ['getuserdata_4',['GetUserData',['../classtinyxml2_1_1_x_m_l_node.html#a18cc02ebd0b06f6bf5db7ef87653e00e',1,'tinyxml2::XMLNode']]] +]; diff --git a/Engine/lib/tinyxml/docs/search/all_8.html b/Engine/lib/tinyxml2/docs/search/all_8.html similarity index 100% rename from Engine/lib/tinyxml/docs/search/all_8.html rename to Engine/lib/tinyxml2/docs/search/all_8.html diff --git a/Engine/lib/tinyxml2/docs/search/all_8.js b/Engine/lib/tinyxml2/docs/search/all_8.js new file mode 100644 index 000000000..ad1874591 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/search/all_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['hasbom_0',['HasBOM',['../classtinyxml2_1_1_x_m_l_document.html#a33fc5d159db873a179fa26338adb05bd',1,'tinyxml2::XMLDocument']]] +]; diff --git a/Engine/lib/tinyxml/docs/search/all_9.html b/Engine/lib/tinyxml2/docs/search/all_9.html similarity index 100% rename from Engine/lib/tinyxml/docs/search/all_9.html rename to Engine/lib/tinyxml2/docs/search/all_9.html diff --git a/Engine/lib/tinyxml2/docs/search/all_9.js b/Engine/lib/tinyxml2/docs/search/all_9.js new file mode 100644 index 000000000..d5de6ebc0 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/search/all_9.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['information_0',['Read attributes and text information.',['../_example_4.html',1,'']]], + ['information_20out_20of_20xml_1',['Get information out of XML',['../_example_3.html',1,'']]], + ['insertafterchild_2',['InsertAfterChild',['../classtinyxml2_1_1_x_m_l_node.html#a9275138a1b8dd5d8e2c26789bdc23ac8',1,'tinyxml2::XMLNode']]], + ['insertendchild_3',['InsertEndChild',['../classtinyxml2_1_1_x_m_l_node.html#ae3b422e98914d6002ca99bb1d2837103',1,'tinyxml2::XMLNode']]], + ['insertfirstchild_4',['InsertFirstChild',['../classtinyxml2_1_1_x_m_l_node.html#ac609a8f3ea949027f439280c640bbaf2',1,'tinyxml2::XMLNode']]], + ['insertnewchildelement_5',['InsertNewChildElement',['../classtinyxml2_1_1_x_m_l_element.html#abf01fdeb702165fddbc97bcc8af8a1ad',1,'tinyxml2::XMLElement']]], + ['insertnewcomment_6',['InsertNewComment',['../classtinyxml2_1_1_x_m_l_element.html#aaed36d3a8082b083ec4f1de55ee68cc2',1,'tinyxml2::XMLElement']]], + ['insertnewdeclaration_7',['InsertNewDeclaration',['../classtinyxml2_1_1_x_m_l_element.html#a7f11671a928649add7e3e18de7adf84a',1,'tinyxml2::XMLElement']]], + ['insertnewtext_8',['InsertNewText',['../classtinyxml2_1_1_x_m_l_element.html#ac30367a5e25ff30e178b56e0e1456d23',1,'tinyxml2::XMLElement']]], + ['insertnewunknown_9',['InsertNewUnknown',['../classtinyxml2_1_1_x_m_l_element.html#afe6cfefb48f8fbcb29a790f2042b55a4',1,'tinyxml2::XMLElement']]], + ['int64attribute_10',['Int64Attribute',['../classtinyxml2_1_1_x_m_l_element.html#a66d96972adecd816194191f13cc4a0a0',1,'tinyxml2::XMLElement']]], + ['int64text_11',['Int64Text',['../classtinyxml2_1_1_x_m_l_element.html#aab6151f7e3b4c2c0a8234e262d7b6b8a',1,'tinyxml2::XMLElement']]], + ['intattribute_12',['IntAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a95a89b13bb14a2d4655e2b5b406c00d4',1,'tinyxml2::XMLElement']]], + ['intvalue_13',['IntValue',['../classtinyxml2_1_1_x_m_l_attribute.html#adfa2433f0fdafd5c3880936de9affa80',1,'tinyxml2::XMLAttribute']]] +]; diff --git a/Engine/lib/tinyxml/docs/search/all_a.html b/Engine/lib/tinyxml2/docs/search/all_a.html similarity index 100% rename from Engine/lib/tinyxml/docs/search/all_a.html rename to Engine/lib/tinyxml2/docs/search/all_a.html diff --git a/Engine/lib/tinyxml2/docs/search/all_a.js b/Engine/lib/tinyxml2/docs/search/all_a.js new file mode 100644 index 000000000..474fb7174 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/search/all_a.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['lastchild_0',['LastChild',['../classtinyxml2_1_1_x_m_l_node.html#a69a29bb8263ff5e9815be180bf27e7af',1,'tinyxml2::XMLNode::LastChild()'],['../classtinyxml2_1_1_x_m_l_handle.html#a9d09f04435f0f2f7d0816b0198d0517b',1,'tinyxml2::XMLHandle::LastChild()']]], + ['lastchildelement_1',['LastChildElement',['../classtinyxml2_1_1_x_m_l_node.html#a609e02f02044f39b928d1a3e0de9f532',1,'tinyxml2::XMLNode::LastChildElement()'],['../classtinyxml2_1_1_x_m_l_handle.html#a42cccd0ce8b1ce704f431025e9f19e0c',1,'tinyxml2::XMLHandle::LastChildElement()']]], + ['load_20an_20xml_20file_2',['Load an XML File',['../_example_1.html',1,'']]], + ['loadfile_3',['LoadFile',['../classtinyxml2_1_1_x_m_l_document.html#a2ebd4647a8af5fc6831b294ac26a150a',1,'tinyxml2::XMLDocument::LoadFile(const char *filename)'],['../classtinyxml2_1_1_x_m_l_document.html#a5f1d330fad44c52f3d265338dd2a6dc2',1,'tinyxml2::XMLDocument::LoadFile(FILE *)']]] +]; diff --git a/Engine/lib/tinyxml/docs/search/all_b.html b/Engine/lib/tinyxml2/docs/search/all_b.html similarity index 100% rename from Engine/lib/tinyxml/docs/search/all_b.html rename to Engine/lib/tinyxml2/docs/search/all_b.html diff --git a/Engine/lib/tinyxml2/docs/search/all_b.js b/Engine/lib/tinyxml2/docs/search/all_b.js new file mode 100644 index 000000000..acaea4fd4 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/search/all_b.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['name_0',['Name',['../classtinyxml2_1_1_x_m_l_attribute.html#a5a5c135d24cce7abda6f17301c6274d8',1,'tinyxml2::XMLAttribute::Name()'],['../classtinyxml2_1_1_x_m_l_element.html#abd36e34e4428a8eeeffbe87eab0b124d',1,'tinyxml2::XMLElement::Name()']]], + ['newcomment_1',['NewComment',['../classtinyxml2_1_1_x_m_l_document.html#a386df0befd06aadb5e0cd21381aa955a',1,'tinyxml2::XMLDocument']]], + ['newdeclaration_2',['NewDeclaration',['../classtinyxml2_1_1_x_m_l_document.html#ae519030c0262fa2daff8993681990e16',1,'tinyxml2::XMLDocument']]], + ['newelement_3',['NewElement',['../classtinyxml2_1_1_x_m_l_document.html#a3c335a700a43d7c363a393142a23f234',1,'tinyxml2::XMLDocument']]], + ['newtext_4',['NewText',['../classtinyxml2_1_1_x_m_l_document.html#acece5de77a0819f2341b08c1e1ed9987',1,'tinyxml2::XMLDocument']]], + ['newunknown_5',['NewUnknown',['../classtinyxml2_1_1_x_m_l_document.html#a4954f502c5fd7f49de54c3c0c99bb73d',1,'tinyxml2::XMLDocument']]], + ['next_6',['Next',['../classtinyxml2_1_1_x_m_l_attribute.html#aa8c7cf4c94a636ae75046658e551614e',1,'tinyxml2::XMLAttribute']]], + ['nextsibling_7',['NextSibling',['../classtinyxml2_1_1_x_m_l_node.html#af986c568061b020cf6232bec091388c0',1,'tinyxml2::XMLNode::NextSibling()'],['../classtinyxml2_1_1_x_m_l_handle.html#aad2eccc7c7c7b18145877c978c3850b5',1,'tinyxml2::XMLHandle::NextSibling()']]], + ['nextsiblingelement_8',['NextSiblingElement',['../classtinyxml2_1_1_x_m_l_node.html#a14ea560df31110ff07a9f566171bf797',1,'tinyxml2::XMLNode::NextSiblingElement()'],['../classtinyxml2_1_1_x_m_l_handle.html#ae41d88ee061f3c49a081630ff753b2c5',1,'tinyxml2::XMLHandle::NextSiblingElement()']]], + ['nochildren_9',['NoChildren',['../classtinyxml2_1_1_x_m_l_node.html#ac3ab489e6e202a3cd1762d3b332e89d4',1,'tinyxml2::XMLNode']]] +]; diff --git a/Engine/lib/tinyxml/docs/search/all_c.html b/Engine/lib/tinyxml2/docs/search/all_c.html similarity index 100% rename from Engine/lib/tinyxml/docs/search/all_c.html rename to Engine/lib/tinyxml2/docs/search/all_c.html diff --git a/Engine/lib/tinyxml2/docs/search/all_c.js b/Engine/lib/tinyxml2/docs/search/all_c.js new file mode 100644 index 000000000..6f24aaf10 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/search/all_c.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['of_20xml_0',['Get information out of XML',['../_example_3.html',1,'']]], + ['openelement_1',['OpenElement',['../classtinyxml2_1_1_x_m_l_printer.html#a20fb06c83bd13e5140d7dd13af06c010',1,'tinyxml2::XMLPrinter']]], + ['operator_3d_2',['operator=',['../classtinyxml2_1_1_x_m_l_handle.html#aa07c9a53f78d7b2dc1018668641521d8',1,'tinyxml2::XMLHandle']]], + ['out_20of_20xml_3',['Get information out of XML',['../_example_3.html',1,'']]] +]; diff --git a/Engine/lib/tinyxml/docs/search/all_d.html b/Engine/lib/tinyxml2/docs/search/all_d.html similarity index 100% rename from Engine/lib/tinyxml/docs/search/all_d.html rename to Engine/lib/tinyxml2/docs/search/all_d.html diff --git a/Engine/lib/tinyxml2/docs/search/all_d.js b/Engine/lib/tinyxml2/docs/search/all_d.js new file mode 100644 index 000000000..32d019a7e --- /dev/null +++ b/Engine/lib/tinyxml2/docs/search/all_d.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['parent_0',['Parent',['../classtinyxml2_1_1_x_m_l_node.html#a4d76b30d1bf4b166d3e4fa3419d51595',1,'tinyxml2::XMLNode']]], + ['parse_1',['Parse',['../classtinyxml2_1_1_x_m_l_document.html#af2b616169e6517182f6725f2498e9a01',1,'tinyxml2::XMLDocument']]], + ['parse_20an_20xml_20from_20char_20buffer_2',['Parse an XML from char buffer',['../_example_2.html',1,'']]], + ['previoussibling_3',['PreviousSibling',['../classtinyxml2_1_1_x_m_l_node.html#a92ee96b0d8628bc609f1d34e56d69dfa',1,'tinyxml2::XMLNode::PreviousSibling()'],['../classtinyxml2_1_1_x_m_l_handle.html#a428374e756f4db4cbc287fec64eae02c',1,'tinyxml2::XMLHandle::PreviousSibling()']]], + ['previoussiblingelement_4',['PreviousSiblingElement',['../classtinyxml2_1_1_x_m_l_node.html#a9453cda5e970375a7b1b2099f8a7c40a',1,'tinyxml2::XMLNode::PreviousSiblingElement()'],['../classtinyxml2_1_1_x_m_l_handle.html#a786957e498039554ed334cdc36612a7e',1,'tinyxml2::XMLHandle::PreviousSiblingElement()']]], + ['print_5',['Print',['../classtinyxml2_1_1_x_m_l_document.html#a867cf5fa3e3ff6ae4847a8b7ee8ec083',1,'tinyxml2::XMLDocument']]], + ['printerror_6',['PrintError',['../classtinyxml2_1_1_x_m_l_document.html#a1d033945b42e125d933d6231e4571552',1,'tinyxml2::XMLDocument']]], + ['printspace_7',['PrintSpace',['../classtinyxml2_1_1_x_m_l_printer.html#a01148e2ebe6776e38c5a3e41bc5feb74',1,'tinyxml2::XMLPrinter']]], + ['pushattribute_8',['PushAttribute',['../classtinyxml2_1_1_x_m_l_printer.html#a9a4e2c9348b42e147629d5a99f4af3f0',1,'tinyxml2::XMLPrinter']]], + ['pushcomment_9',['PushComment',['../classtinyxml2_1_1_x_m_l_printer.html#afc8416814219591c2fd5656e0c233140',1,'tinyxml2::XMLPrinter']]], + ['pushheader_10',['PushHeader',['../classtinyxml2_1_1_x_m_l_printer.html#a178c608ce8476043d5d6513819cde903',1,'tinyxml2::XMLPrinter']]], + ['pushtext_11',['PushText',['../classtinyxml2_1_1_x_m_l_printer.html#a1cc16a9362df4332012cb13cff6441b3',1,'tinyxml2::XMLPrinter::PushText(const char *text, bool cdata=false)'],['../classtinyxml2_1_1_x_m_l_printer.html#a3e0d4d78de25d4cf081009e1431cea7e',1,'tinyxml2::XMLPrinter::PushText(int value)'],['../classtinyxml2_1_1_x_m_l_printer.html#a661fb50e7e0a4918d2d259cb0fae647e',1,'tinyxml2::XMLPrinter::PushText(unsigned value)'],['../classtinyxml2_1_1_x_m_l_printer.html#a96b0a0bfe105154a0a6c37d725258f0a',1,'tinyxml2::XMLPrinter::PushText(int64_t value)'],['../classtinyxml2_1_1_x_m_l_printer.html#a60b0a4cf57371ff8679c2c7556ccb708',1,'tinyxml2::XMLPrinter::PushText(uint64_t value)'],['../classtinyxml2_1_1_x_m_l_printer.html#a4390e5fa1ed05189a8686647345ab29f',1,'tinyxml2::XMLPrinter::PushText(bool value)'],['../classtinyxml2_1_1_x_m_l_printer.html#a1dbb1390e829d0673af66b9cd1928bd7',1,'tinyxml2::XMLPrinter::PushText(float value)'],['../classtinyxml2_1_1_x_m_l_printer.html#aa715302dfc09473c77c853cbd5431965',1,'tinyxml2::XMLPrinter::PushText(double value)']]] +]; diff --git a/Engine/lib/tinyxml/docs/search/all_e.html b/Engine/lib/tinyxml2/docs/search/all_e.html similarity index 100% rename from Engine/lib/tinyxml/docs/search/all_e.html rename to Engine/lib/tinyxml2/docs/search/all_e.html diff --git a/Engine/lib/tinyxml2/docs/search/all_e.js b/Engine/lib/tinyxml2/docs/search/all_e.js new file mode 100644 index 000000000..c090f7a16 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/search/all_e.js @@ -0,0 +1,26 @@ +var searchData= +[ + ['queryattribute_0',['QueryAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a5b7df3bed2b8954eabf227fa204522eb',1,'tinyxml2::XMLElement']]], + ['queryboolattribute_1',['QueryBoolAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a14c1bb77c39689838be01838d86ca872',1,'tinyxml2::XMLElement']]], + ['querybooltext_2',['QueryBoolText',['../classtinyxml2_1_1_x_m_l_element.html#a3fe5417d59eb8f5c4afe924b7d332736',1,'tinyxml2::XMLElement']]], + ['queryboolvalue_3',['QueryBoolValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a5f32e038954256f61c21ff20fd13a09c',1,'tinyxml2::XMLAttribute']]], + ['querydoubleattribute_4',['QueryDoubleAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a5f0964e2dbd8e2ee7fce9beab689443c',1,'tinyxml2::XMLElement']]], + ['querydoubletext_5',['QueryDoubleText',['../classtinyxml2_1_1_x_m_l_element.html#a684679c99bb036a25652744cec6c4d96',1,'tinyxml2::XMLElement']]], + ['querydoublevalue_6',['QueryDoubleValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a2aa6e55e8ea03af0609cf6690bff79b9',1,'tinyxml2::XMLAttribute']]], + ['queryfloatattribute_7',['QueryFloatAttribute',['../classtinyxml2_1_1_x_m_l_element.html#acd5eeddf6002ef90806af794b9d9a5a5',1,'tinyxml2::XMLElement']]], + ['queryfloattext_8',['QueryFloatText',['../classtinyxml2_1_1_x_m_l_element.html#afa332afedd93210daa6d44b88eb11e29',1,'tinyxml2::XMLElement']]], + ['queryfloatvalue_9',['QueryFloatValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a049dea6449a6259b6cfed44a9427b607',1,'tinyxml2::XMLAttribute']]], + ['queryint64attribute_10',['QueryInt64Attribute',['../classtinyxml2_1_1_x_m_l_element.html#a7c0955d80b6f8d196744eacb0f6e90a8',1,'tinyxml2::XMLElement']]], + ['queryint64text_11',['QueryInt64Text',['../classtinyxml2_1_1_x_m_l_element.html#a120c538c8eead169e635dbc70fb226d8',1,'tinyxml2::XMLElement']]], + ['queryint64value_12',['QueryInt64Value',['../classtinyxml2_1_1_x_m_l_attribute.html#a4e25344d6e4159026be34dbddf1dcac2',1,'tinyxml2::XMLAttribute']]], + ['queryintattribute_13',['QueryIntAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a8a78bc1187c1c45ad89f2690eab567b1',1,'tinyxml2::XMLElement']]], + ['queryinttext_14',['QueryIntText',['../classtinyxml2_1_1_x_m_l_element.html#a926357996bef633cb736e1a558419632',1,'tinyxml2::XMLElement']]], + ['queryintvalue_15',['QueryIntValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a6d5176260db00ea301c01af8457cd993',1,'tinyxml2::XMLAttribute']]], + ['querystringattribute_16',['QueryStringAttribute',['../classtinyxml2_1_1_x_m_l_element.html#adb8ae765f98d0c5037faec48deea78bc',1,'tinyxml2::XMLElement']]], + ['queryunsigned64attribute_17',['QueryUnsigned64Attribute',['../classtinyxml2_1_1_x_m_l_element.html#a13dd590b5d3958ce2ed79844aacd9405',1,'tinyxml2::XMLElement']]], + ['queryunsigned64text_18',['QueryUnsigned64Text',['../classtinyxml2_1_1_x_m_l_element.html#ac2239b3bd172ad8f5b78d04d4236144b',1,'tinyxml2::XMLElement']]], + ['queryunsigned64value_19',['QueryUnsigned64Value',['../classtinyxml2_1_1_x_m_l_attribute.html#af793c695e7ee65cf20b8010d38b1d157',1,'tinyxml2::XMLAttribute']]], + ['queryunsignedattribute_20',['QueryUnsignedAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a26fc84cbfba6769dafcfbf256c05e22f',1,'tinyxml2::XMLElement']]], + ['queryunsignedtext_21',['QueryUnsignedText',['../classtinyxml2_1_1_x_m_l_element.html#a14d38aa4b5e18a46274a27425188a6a1',1,'tinyxml2::XMLElement']]], + ['queryunsignedvalue_22',['QueryUnsignedValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a48a7f3496f1415832e451bd8d09c9cb9',1,'tinyxml2::XMLAttribute']]] +]; diff --git a/Engine/lib/tinyxml/docs/search/all_f.html b/Engine/lib/tinyxml2/docs/search/all_f.html similarity index 100% rename from Engine/lib/tinyxml/docs/search/all_f.html rename to Engine/lib/tinyxml2/docs/search/all_f.html diff --git a/Engine/lib/tinyxml2/docs/search/all_f.js b/Engine/lib/tinyxml2/docs/search/all_f.js new file mode 100644 index 000000000..404f651c5 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/search/all_f.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['read_20attributes_20and_20text_20information_0',['Read attributes and text information.',['../_example_4.html',1,'']]], + ['rootelement_1',['RootElement',['../classtinyxml2_1_1_x_m_l_document.html#a0e6855771cbe87d839fb301d3646f5b8',1,'tinyxml2::XMLDocument']]] +]; diff --git a/Engine/lib/tinyxml/docs/search/classes_0.html b/Engine/lib/tinyxml2/docs/search/classes_0.html similarity index 100% rename from Engine/lib/tinyxml/docs/search/classes_0.html rename to Engine/lib/tinyxml2/docs/search/classes_0.html diff --git a/Engine/lib/tinyxml2/docs/search/classes_0.js b/Engine/lib/tinyxml2/docs/search/classes_0.js new file mode 100644 index 000000000..a377ed4e5 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/search/classes_0.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['xmlattribute_0',['XMLAttribute',['../classtinyxml2_1_1_x_m_l_attribute.html',1,'tinyxml2']]], + ['xmlcomment_1',['XMLComment',['../classtinyxml2_1_1_x_m_l_comment.html',1,'tinyxml2']]], + ['xmlconsthandle_2',['XMLConstHandle',['../classtinyxml2_1_1_x_m_l_const_handle.html',1,'tinyxml2']]], + ['xmldeclaration_3',['XMLDeclaration',['../classtinyxml2_1_1_x_m_l_declaration.html',1,'tinyxml2']]], + ['xmldocument_4',['XMLDocument',['../classtinyxml2_1_1_x_m_l_document.html',1,'tinyxml2']]], + ['xmlelement_5',['XMLElement',['../classtinyxml2_1_1_x_m_l_element.html',1,'tinyxml2']]], + ['xmlhandle_6',['XMLHandle',['../classtinyxml2_1_1_x_m_l_handle.html',1,'tinyxml2']]], + ['xmlnode_7',['XMLNode',['../classtinyxml2_1_1_x_m_l_node.html',1,'tinyxml2']]], + ['xmlprinter_8',['XMLPrinter',['../classtinyxml2_1_1_x_m_l_printer.html',1,'tinyxml2']]], + ['xmltext_9',['XMLText',['../classtinyxml2_1_1_x_m_l_text.html',1,'tinyxml2']]], + ['xmlunknown_10',['XMLUnknown',['../classtinyxml2_1_1_x_m_l_unknown.html',1,'tinyxml2']]], + ['xmlvisitor_11',['XMLVisitor',['../classtinyxml2_1_1_x_m_l_visitor.html',1,'tinyxml2']]] +]; diff --git a/Engine/lib/tinyxml/docs/search/close.png b/Engine/lib/tinyxml2/docs/search/close.png similarity index 100% rename from Engine/lib/tinyxml/docs/search/close.png rename to Engine/lib/tinyxml2/docs/search/close.png diff --git a/Engine/lib/tinyxml/docs/search/close.svg b/Engine/lib/tinyxml2/docs/search/close.svg similarity index 62% rename from Engine/lib/tinyxml/docs/search/close.svg rename to Engine/lib/tinyxml2/docs/search/close.svg index a933eea1a..337d6cc13 100644 --- a/Engine/lib/tinyxml/docs/search/close.svg +++ b/Engine/lib/tinyxml2/docs/search/close.svg @@ -1,27 +1,14 @@ + - - - - image/svg+xml - - - - - + + + + + + diff --git a/Engine/lib/tinyxml2/docs/search/mag_d.svg b/Engine/lib/tinyxml2/docs/search/mag_d.svg new file mode 100644 index 000000000..4122773f9 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/Engine/lib/tinyxml/docs/search/mag_sel.png b/Engine/lib/tinyxml2/docs/search/mag_sel.png similarity index 100% rename from Engine/lib/tinyxml/docs/search/mag_sel.png rename to Engine/lib/tinyxml2/docs/search/mag_sel.png diff --git a/Engine/lib/tinyxml2/docs/search/mag_sel.svg b/Engine/lib/tinyxml2/docs/search/mag_sel.svg new file mode 100644 index 000000000..553dba877 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/Engine/lib/tinyxml2/docs/search/mag_seld.svg b/Engine/lib/tinyxml2/docs/search/mag_seld.svg new file mode 100644 index 000000000..c906f84c8 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/Engine/lib/tinyxml/docs/search/nomatches.html b/Engine/lib/tinyxml2/docs/search/nomatches.html similarity index 100% rename from Engine/lib/tinyxml/docs/search/nomatches.html rename to Engine/lib/tinyxml2/docs/search/nomatches.html diff --git a/Engine/lib/tinyxml/docs/search/pages_0.html b/Engine/lib/tinyxml2/docs/search/pages_0.html similarity index 100% rename from Engine/lib/tinyxml/docs/search/pages_0.html rename to Engine/lib/tinyxml2/docs/search/pages_0.html diff --git a/Engine/lib/tinyxml2/docs/search/pages_0.js b/Engine/lib/tinyxml2/docs/search/pages_0.js new file mode 100644 index 000000000..5da8a5542 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['2_0',['TinyXML-2',['../index.html',1,'']]] +]; diff --git a/Engine/lib/tinyxml/docs/search/pages_1.html b/Engine/lib/tinyxml2/docs/search/pages_1.html similarity index 100% rename from Engine/lib/tinyxml/docs/search/pages_1.html rename to Engine/lib/tinyxml2/docs/search/pages_1.html diff --git a/Engine/lib/tinyxml2/docs/search/pages_1.js b/Engine/lib/tinyxml2/docs/search/pages_1.js new file mode 100644 index 000000000..f9619a20c --- /dev/null +++ b/Engine/lib/tinyxml2/docs/search/pages_1.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['an_20xml_20file_0',['Load an XML File',['../_example_1.html',1,'']]], + ['an_20xml_20from_20char_20buffer_1',['Parse an XML from char buffer',['../_example_2.html',1,'']]], + ['and_20text_20information_2',['Read attributes and text information.',['../_example_4.html',1,'']]], + ['attributes_20and_20text_20information_3',['Read attributes and text information.',['../_example_4.html',1,'']]] +]; diff --git a/Engine/lib/tinyxml/docs/search/pages_2.html b/Engine/lib/tinyxml2/docs/search/pages_2.html similarity index 100% rename from Engine/lib/tinyxml/docs/search/pages_2.html rename to Engine/lib/tinyxml2/docs/search/pages_2.html diff --git a/Engine/lib/tinyxml2/docs/search/pages_2.js b/Engine/lib/tinyxml2/docs/search/pages_2.js new file mode 100644 index 000000000..d3e9de97d --- /dev/null +++ b/Engine/lib/tinyxml2/docs/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['buffer_0',['Parse an XML from char buffer',['../_example_2.html',1,'']]] +]; diff --git a/Engine/lib/tinyxml/docs/search/pages_3.html b/Engine/lib/tinyxml2/docs/search/pages_3.html similarity index 100% rename from Engine/lib/tinyxml/docs/search/pages_3.html rename to Engine/lib/tinyxml2/docs/search/pages_3.html diff --git a/Engine/lib/tinyxml2/docs/search/pages_3.js b/Engine/lib/tinyxml2/docs/search/pages_3.js new file mode 100644 index 000000000..9a095ad24 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/search/pages_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['char_20buffer_0',['Parse an XML from char buffer',['../_example_2.html',1,'']]] +]; diff --git a/Engine/lib/tinyxml/docs/search/pages_4.html b/Engine/lib/tinyxml2/docs/search/pages_4.html similarity index 100% rename from Engine/lib/tinyxml/docs/search/pages_4.html rename to Engine/lib/tinyxml2/docs/search/pages_4.html diff --git a/Engine/lib/tinyxml2/docs/search/pages_4.js b/Engine/lib/tinyxml2/docs/search/pages_4.js new file mode 100644 index 000000000..568316d07 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/search/pages_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['file_0',['Load an XML File',['../_example_1.html',1,'']]], + ['from_20char_20buffer_1',['Parse an XML from char buffer',['../_example_2.html',1,'']]] +]; diff --git a/Engine/lib/tinyxml2/docs/search/pages_5.js b/Engine/lib/tinyxml2/docs/search/pages_5.js new file mode 100644 index 000000000..098aa655e --- /dev/null +++ b/Engine/lib/tinyxml2/docs/search/pages_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['get_20information_20out_20of_20xml_0',['Get information out of XML',['../_example_3.html',1,'']]] +]; diff --git a/Engine/lib/tinyxml2/docs/search/pages_6.js b/Engine/lib/tinyxml2/docs/search/pages_6.js new file mode 100644 index 000000000..ad78bd85c --- /dev/null +++ b/Engine/lib/tinyxml2/docs/search/pages_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['information_0',['Read attributes and text information.',['../_example_4.html',1,'']]], + ['information_20out_20of_20xml_1',['Get information out of XML',['../_example_3.html',1,'']]] +]; diff --git a/Engine/lib/tinyxml2/docs/search/pages_7.js b/Engine/lib/tinyxml2/docs/search/pages_7.js new file mode 100644 index 000000000..8bd34d134 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/search/pages_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['load_20an_20xml_20file_0',['Load an XML File',['../_example_1.html',1,'']]] +]; diff --git a/Engine/lib/tinyxml2/docs/search/pages_8.js b/Engine/lib/tinyxml2/docs/search/pages_8.js new file mode 100644 index 000000000..9271697ac --- /dev/null +++ b/Engine/lib/tinyxml2/docs/search/pages_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['of_20xml_0',['Get information out of XML',['../_example_3.html',1,'']]], + ['out_20of_20xml_1',['Get information out of XML',['../_example_3.html',1,'']]] +]; diff --git a/Engine/lib/tinyxml2/docs/search/pages_9.js b/Engine/lib/tinyxml2/docs/search/pages_9.js new file mode 100644 index 000000000..e74d27f36 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/search/pages_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['parse_20an_20xml_20from_20char_20buffer_0',['Parse an XML from char buffer',['../_example_2.html',1,'']]] +]; diff --git a/Engine/lib/tinyxml2/docs/search/pages_a.js b/Engine/lib/tinyxml2/docs/search/pages_a.js new file mode 100644 index 000000000..a65967821 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/search/pages_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['read_20attributes_20and_20text_20information_0',['Read attributes and text information.',['../_example_4.html',1,'']]] +]; diff --git a/Engine/lib/tinyxml2/docs/search/pages_b.js b/Engine/lib/tinyxml2/docs/search/pages_b.js new file mode 100644 index 000000000..e7e3775d9 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/search/pages_b.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['text_20information_0',['Read attributes and text information.',['../_example_4.html',1,'']]], + ['tinyxml_202_1',['TinyXML-2',['../index.html',1,'']]] +]; diff --git a/Engine/lib/tinyxml2/docs/search/pages_c.js b/Engine/lib/tinyxml2/docs/search/pages_c.js new file mode 100644 index 000000000..e0ed4f36b --- /dev/null +++ b/Engine/lib/tinyxml2/docs/search/pages_c.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['xml_0',['Get information out of XML',['../_example_3.html',1,'']]], + ['xml_20file_1',['Load an XML File',['../_example_1.html',1,'']]], + ['xml_20from_20char_20buffer_2',['Parse an XML from char buffer',['../_example_2.html',1,'']]] +]; diff --git a/Engine/lib/tinyxml/docs/search/search.css b/Engine/lib/tinyxml2/docs/search/search.css similarity index 63% rename from Engine/lib/tinyxml/docs/search/search.css rename to Engine/lib/tinyxml2/docs/search/search.css index 9074198f8..19f76f9d5 100644 --- a/Engine/lib/tinyxml/docs/search/search.css +++ b/Engine/lib/tinyxml2/docs/search/search.css @@ -1,10 +1,33 @@ -/*---------------- Search Box */ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} #MSearchBox { + display: inline-block; white-space : nowrap; - background: white; + background: var(--search-background-color); border-radius: 0.65em; - box-shadow: inset 0.5px 0.5px 3px 0px #555; + box-shadow: var(--search-box-shadow); z-index: 102; } @@ -17,28 +40,47 @@ #MSearchSelect { display: inline-block; vertical-align: middle; - height: 1.4em; - padding: 0 0 0 0.3em; - margin: 0; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; } +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; +} + + #MSearchField { display: inline-block; vertical-align: middle; width: 7.5em; - height: 1.1em; + height: 19px; margin: 0 0.15em; padding: 0; line-height: 1em; border:none; - color: #909090; + color: var(--search-foreground-color); outline: none; - font-family: Arial, Verdana, sans-serif; + font-family: var(--font-family-search); -webkit-border-radius: 0px; border-radius: 0px; background: none; } +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} #MSearchBox .right { display: inline-block; @@ -59,23 +101,15 @@ } #MSearchCloseImg { - height: 1.4em; padding: 0.3em; margin: 0; } .MSearchBoxActive #MSearchField { - color: #000000; + color: var(--search-active-color); } -#main-menu > li:last-child { - /* This
  • object is the parent of the search bar */ - display: flex; - justify-content: center; - align-items: center; - height: 36px; - margin-right: 1em; -} + /*---------------- Search filter selection */ @@ -83,8 +117,8 @@ display: none; position: absolute; left: 0; top: 0; - border: 1px solid #90A5CE; - background-color: #F9FAFC; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); z-index: 10001; padding-top: 4px; padding-bottom: 4px; @@ -97,7 +131,7 @@ } .SelectItem { - font: 8pt Arial, Verdana, sans-serif; + font: 8pt var(--font-family-search); padding-left: 2px; padding-right: 12px; border: 0px; @@ -105,7 +139,7 @@ span.SelectionMark { margin-right: 4px; - font-family: monospace; + font-family: var(--font-family-monospace); outline-style: none; text-decoration: none; } @@ -113,7 +147,7 @@ span.SelectionMark { a.SelectItem { display: block; outline-style: none; - color: #000000; + color: var(--search-filter-foreground-color); text-decoration: none; padding-left: 6px; padding-right: 12px; @@ -121,14 +155,14 @@ a.SelectItem { a.SelectItem:focus, a.SelectItem:active { - color: #000000; + color: var(--search-filter-foreground-color); outline-style: none; text-decoration: none; } a.SelectItem:hover { - color: #FFFFFF; - background-color: #3D578C; + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); outline-style: none; text-decoration: none; cursor: pointer; @@ -138,7 +172,7 @@ a.SelectItem:hover { /*---------------- Search results window */ iframe#MSearchResults { - width: 60ex; + /*width: 60ex;*/ height: 15em; } @@ -146,9 +180,12 @@ iframe#MSearchResults { display: none; position: absolute; left: 0; top: 0; - border: 1px solid #000; - background-color: #EEF1F7; + border: 1px solid var(--search-results-border-color); + background-color: var(--search-results-background-color); z-index:10000; + width: 300px; + height: 400px; + overflow: auto; } /* ----------------------------------- */ @@ -156,7 +193,6 @@ iframe#MSearchResults { #SRIndex { clear:both; - padding-bottom: 15px; } .SREntry { @@ -169,8 +205,9 @@ iframe#MSearchResults { padding: 1px 5px; } -body.SRPage { +div.SRPage { margin: 5px 2px; + background-color: var(--search-results-background-color); } .SRChildren { @@ -182,17 +219,18 @@ body.SRPage { } .SRSymbol { - font-weight: bold; - color: #425E97; - font-family: Arial, Verdana, sans-serif; + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); text-decoration: none; outline: none; } a.SRScope { display: block; - color: #425E97; - font-family: Arial, Verdana, sans-serif; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; text-decoration: none; outline: none; } @@ -204,14 +242,14 @@ a.SRScope:focus, a.SRScope:active { span.SRScope { padding-left: 4px; - font-family: Arial, Verdana, sans-serif; + font-family: var(--font-family-search); } .SRPage .SRStatus { padding: 2px 5px; font-size: 8pt; font-style: italic; - font-family: Arial, Verdana, sans-serif; + font-family: var(--font-family-search); } .SRResult { @@ -225,14 +263,10 @@ div.searchresults { /*---------------- External search page results */ -.searchresult { - background-color: #F0F3F8; -} - .pages b { color: white; padding: 5px 5px 3px 5px; - background-image: url("../tab_a.png"); + background-image: var(--nav-gradient-active-image-parent); background-repeat: repeat-x; text-shadow: 0 1px 1px #000000; } diff --git a/Engine/lib/tinyxml2/docs/search/search.js b/Engine/lib/tinyxml2/docs/search/search.js new file mode 100644 index 000000000..666af01e5 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/search/search.js @@ -0,0 +1,694 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +const SEARCH_COOKIE_NAME = ''+'search_grp'; + +const searchResults = new SearchResults(); + +/* A class handling everything associated with the search panel. + + Parameters: + name - The name of the global variable that will be + storing this instance. Is needed to be able to set timeouts. + resultPath - path to use for external files +*/ +function SearchBox(name, resultsPath, extension) { + if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); } + if (!extension || extension == "") { extension = ".html"; } + + function getXPos(item) { + let x = 0; + if (item.offsetWidth) { + while (item && item!=document.body) { + x += item.offsetLeft; + item = item.offsetParent; + } + } + return x; + } + + function getYPos(item) { + let y = 0; + if (item.offsetWidth) { + while (item && item!=document.body) { + y += item.offsetTop; + item = item.offsetParent; + } + } + return y; + } + + // ---------- Instance variables + this.name = name; + this.resultsPath = resultsPath; + this.keyTimeout = 0; + this.keyTimeoutLength = 500; + this.closeSelectionTimeout = 300; + this.lastSearchValue = ""; + this.lastResultsPage = ""; + this.hideTimeout = 0; + this.searchIndex = 0; + this.searchActive = false; + this.extension = extension; + + // ----------- DOM Elements + + this.DOMSearchField = () => document.getElementById("MSearchField"); + this.DOMSearchSelect = () => document.getElementById("MSearchSelect"); + this.DOMSearchSelectWindow = () => document.getElementById("MSearchSelectWindow"); + this.DOMPopupSearchResults = () => document.getElementById("MSearchResults"); + this.DOMPopupSearchResultsWindow = () => document.getElementById("MSearchResultsWindow"); + this.DOMSearchClose = () => document.getElementById("MSearchClose"); + this.DOMSearchBox = () => document.getElementById("MSearchBox"); + + // ------------ Event Handlers + + // Called when focus is added or removed from the search field. + this.OnSearchFieldFocus = function(isActive) { + this.Activate(isActive); + } + + this.OnSearchSelectShow = function() { + const searchSelectWindow = this.DOMSearchSelectWindow(); + const searchField = this.DOMSearchSelect(); + + const left = getXPos(searchField); + const top = getYPos(searchField) + searchField.offsetHeight; + + // show search selection popup + searchSelectWindow.style.display='block'; + searchSelectWindow.style.left = left + 'px'; + searchSelectWindow.style.top = top + 'px'; + + // stop selection hide timer + if (this.hideTimeout) { + clearTimeout(this.hideTimeout); + this.hideTimeout=0; + } + return false; // to avoid "image drag" default event + } + + this.OnSearchSelectHide = function() { + this.hideTimeout = setTimeout(this.CloseSelectionWindow.bind(this), + this.closeSelectionTimeout); + } + + // Called when the content of the search field is changed. + this.OnSearchFieldChange = function(evt) { + if (this.keyTimeout) { // kill running timer + clearTimeout(this.keyTimeout); + this.keyTimeout = 0; + } + + const e = evt ? evt : window.event; // for IE + if (e.keyCode==40 || e.keyCode==13) { + if (e.shiftKey==1) { + this.OnSearchSelectShow(); + const win=this.DOMSearchSelectWindow(); + for (let i=0;i do a search + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) { // Up + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } else if (e.keyCode==13 || e.keyCode==27) { + e.stopPropagation(); + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() { + this.keyTimeout = 0; + + // strip leading whitespace + const searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + const code = searchValue.toLowerCase().charCodeAt(0); + let idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) { // surrogate pair + idxChar = searchValue.substr(0, 2); + } + + let jsFile; + let idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) { + const hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + const loadJS = function(url, impl, loc) { + const scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + const domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + const domSearchBox = this.DOMSearchBox(); + const domPopupSearchResults = this.DOMPopupSearchResults(); + const domSearchClose = this.DOMSearchClose(); + const resultsPath = this.resultsPath; + + const handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') { + domSearchClose.style.display = 'inline-block'; + let left = getXPos(domSearchBox) + 150; + let top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + const maxWidth = document.body.clientWidth; + const maxHeight = document.body.clientHeight; + let width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + let height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } else if (!isActive) { // directly remove the panel + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults() { + + function convertToId(search) { + let result = ''; + for (let i=0;i. + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) { + const parentElement = document.getElementById(id); + let element = parentElement.firstChild; + + while (element && element!=parentElement) { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) { + element = element.firstChild; + } else if (element.nextSibling) { + element = element.nextSibling; + } else { + do { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) { + const element = this.FindChildElement(id); + if (element) { + if (element.style.display == 'block') { + element.style.display = 'none'; + } else { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) { + if (!search) { // get search word from URL + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + const resultRows = document.getElementsByTagName("div"); + let matches = 0; + + let i = 0; + while (i < resultRows.length) { + const row = resultRows.item(i); + if (row.className == "SRResult") { + let rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) { + row.style.display = 'block'; + matches++; + } else { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) { // no results + document.getElementById("NoMatches").style.display='block'; + } else { // at least one result + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) { + let focusItem; + for (;;) { + const focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { + break; + } else if (!focusItem) { // last element + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) { + let focusItem; + for (;;) { + const focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { + break; + } else if (!focusItem) { // last element + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) { + if (e.type == "keydown") { + this.repeatOn = false; + this.lastKey = e.keyCode; + } else if (e.type == "keypress") { + if (!this.repeatOn) { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } else if (e.type == "keyup") { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) { // Up + const newIndex = itemIndex-1; + let focusItem = this.NavPrev(newIndex); + if (focusItem) { + let child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') { // children visible + let n=0; + let tmpElem; + for (;;) { // search for last child + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) { + focusItem = tmpElem; + } else { // found it! + break; + } + n++; + } + } + } + if (focusItem) { + focusItem.focus(); + } else { // return focus to search field + document.getElementById("MSearchField").focus(); + } + } else if (this.lastKey==40) { // Down + const newIndex = itemIndex+1; + let focusItem; + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') { // children visible + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } else if (this.lastKey==39) { // Right + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } else if (this.lastKey==37) { // Left + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } else if (this.lastKey==27) { // Escape + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } else if (this.lastKey==13) { // Enter + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) { // Up + if (childIndex>0) { + const newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } else { // already at first child, jump to parent + document.getElementById('Item'+itemIndex).focus(); + } + } else if (this.lastKey==40) { // Down + const newIndex = childIndex+1; + let elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) { // last child, jump to parent next parent + elem = this.NavNext(itemIndex+1); + } + if (elem) { + elem.focus(); + } + } else if (this.lastKey==27) { // Escape + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } else if (this.lastKey==13) { // Enter + return true; + } + return false; + } +} + +function createResults(resultsPath) { + + function setKeyActions(elem,action) { + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); + } + + function setClassAttr(elem,attr) { + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); + } + + const results = document.getElementById("SRResults"); + results.innerHTML = ''; + searchData.forEach((elem,index) => { + const id = elem[0]; + const srResult = document.createElement('div'); + srResult.setAttribute('id','SR_'+id); + setClassAttr(srResult,'SRResult'); + const srEntry = document.createElement('div'); + setClassAttr(srEntry,'SREntry'); + const srLink = document.createElement('a'); + srLink.setAttribute('id','Item'+index); + setKeyActions(srLink,'return searchResults.Nav(event,'+index+')'); + setClassAttr(srLink,'SRSymbol'); + srLink.innerHTML = elem[1][0]; + srEntry.appendChild(srLink); + if (elem[1].length==2) { // single result + srLink.setAttribute('href',resultsPath+elem[1][1][0]); + srLink.setAttribute('onclick','searchBox.CloseResultsWindow()'); + if (elem[1][1][1]) { + srLink.setAttribute('target','_parent'); + } else { + srLink.setAttribute('target','_blank'); + } + const srScope = document.createElement('span'); + setClassAttr(srScope,'SRScope'); + srScope.innerHTML = elem[1][1][2]; + srEntry.appendChild(srScope); + } else { // multiple results + srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")'); + const srChildren = document.createElement('div'); + setClassAttr(srChildren,'SRChildren'); + for (let c=0; c-{AmhX=Jf@VhhFKy35^fiT zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE= zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd? literal 0 HcmV?d00001 diff --git a/Engine/lib/tinyxml/docs/sync_off.png b/Engine/lib/tinyxml2/docs/sync_off.png similarity index 100% rename from Engine/lib/tinyxml/docs/sync_off.png rename to Engine/lib/tinyxml2/docs/sync_off.png diff --git a/Engine/lib/tinyxml/docs/sync_on.png b/Engine/lib/tinyxml2/docs/sync_on.png similarity index 100% rename from Engine/lib/tinyxml/docs/sync_on.png rename to Engine/lib/tinyxml2/docs/sync_on.png diff --git a/Engine/lib/tinyxml/docs/tab_a.png b/Engine/lib/tinyxml2/docs/tab_a.png similarity index 100% rename from Engine/lib/tinyxml/docs/tab_a.png rename to Engine/lib/tinyxml2/docs/tab_a.png diff --git a/Engine/lib/tinyxml2/docs/tab_ad.png b/Engine/lib/tinyxml2/docs/tab_ad.png new file mode 100644 index 0000000000000000000000000000000000000000..e34850acfc24be58da6d2fd1ccc6b29cc84fe34d GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4 jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6y&q2{!U5bk+Tso_B!YCpDh>v z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796zopr0EBT&m;e9( literal 0 HcmV?d00001 diff --git a/Engine/lib/tinyxml/docs/tab_s.png b/Engine/lib/tinyxml2/docs/tab_s.png similarity index 100% rename from Engine/lib/tinyxml/docs/tab_s.png rename to Engine/lib/tinyxml2/docs/tab_s.png diff --git a/Engine/lib/tinyxml2/docs/tab_sd.png b/Engine/lib/tinyxml2/docs/tab_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..757a565ced4730f85c833fb2547d8e199ae68f19 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9% zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>% literal 0 HcmV?d00001 diff --git a/Engine/lib/tinyxml2/docs/tabs.css b/Engine/lib/tinyxml2/docs/tabs.css new file mode 100644 index 000000000..fe4854aa5 --- /dev/null +++ b/Engine/lib/tinyxml2/docs/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:0}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} \ No newline at end of file diff --git a/Engine/lib/tinyxml2/docs/tinyxml2_8h_source.html b/Engine/lib/tinyxml2/docs/tinyxml2_8h_source.html new file mode 100644 index 000000000..553613e6e --- /dev/null +++ b/Engine/lib/tinyxml2/docs/tinyxml2_8h_source.html @@ -0,0 +1,2166 @@ + + + + + + + +TinyXML-2: tinyxml2.h Source File + + + + + + + + + + + +
    +
    + + + + + + +
    +
    TinyXML-2 10.0.0 +
    +
    +
    + + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    tinyxml2.h
    +
    +
    +
    1/*
    +
    2Original code by Lee Thomason (www.grinninglizard.com)
    +
    3
    +
    4This software is provided 'as-is', without any express or implied
    +
    5warranty. In no event will the authors be held liable for any
    +
    6damages arising from the use of this software.
    +
    7
    +
    8Permission is granted to anyone to use this software for any
    +
    9purpose, including commercial applications, and to alter it and
    +
    10redistribute it freely, subject to the following restrictions:
    +
    11
    +
    121. The origin of this software must not be misrepresented; you must
    +
    13not claim that you wrote the original software. If you use this
    +
    14software in a product, an acknowledgment in the product documentation
    +
    15would be appreciated but is not required.
    +
    16
    +
    172. Altered source versions must be plainly marked as such, and
    +
    18must not be misrepresented as being the original software.
    +
    19
    +
    203. This notice may not be removed or altered from any source
    +
    21distribution.
    +
    22*/
    +
    23
    +
    24#ifndef TINYXML2_INCLUDED
    +
    25#define TINYXML2_INCLUDED
    +
    26
    +
    27#if defined(ANDROID_NDK) || defined(__BORLANDC__) || defined(__QNXNTO__)
    +
    28# include <ctype.h>
    +
    29# include <limits.h>
    +
    30# include <stdio.h>
    +
    31# include <stdlib.h>
    +
    32# include <string.h>
    +
    33# if defined(__PS3__)
    +
    34# include <stddef.h>
    +
    35# endif
    +
    36#else
    +
    37# include <cctype>
    +
    38# include <climits>
    +
    39# include <cstdio>
    +
    40# include <cstdlib>
    +
    41# include <cstring>
    +
    42#endif
    +
    43#include <stdint.h>
    +
    44
    +
    45/*
    +
    46 gcc:
    +
    47 g++ -Wall -DTINYXML2_DEBUG tinyxml2.cpp xmltest.cpp -o gccxmltest.exe
    +
    48
    +
    49 Formatting, Artistic Style:
    +
    50 AStyle.exe --style=1tbs --indent-switches --break-closing-brackets --indent-preprocessor tinyxml2.cpp tinyxml2.h
    +
    51*/
    +
    52
    +
    53#if defined( _DEBUG ) || defined (__DEBUG__)
    +
    54# ifndef TINYXML2_DEBUG
    +
    55# define TINYXML2_DEBUG
    +
    56# endif
    +
    57#endif
    +
    58
    +
    59#ifdef _MSC_VER
    +
    60# pragma warning(push)
    +
    61# pragma warning(disable: 4251)
    +
    62#endif
    +
    63
    +
    64#ifdef _MSC_VER
    +
    65# ifdef TINYXML2_EXPORT
    +
    66# define TINYXML2_LIB __declspec(dllexport)
    +
    67# elif defined(TINYXML2_IMPORT)
    +
    68# define TINYXML2_LIB __declspec(dllimport)
    +
    69# else
    +
    70# define TINYXML2_LIB
    +
    71# endif
    +
    72#elif __GNUC__ >= 4
    +
    73# define TINYXML2_LIB __attribute__((visibility("default")))
    +
    74#else
    +
    75# define TINYXML2_LIB
    +
    76#endif
    +
    77
    +
    78
    +
    79#if !defined(TIXMLASSERT)
    +
    80#if defined(TINYXML2_DEBUG)
    +
    81# if defined(_MSC_VER)
    +
    82# // "(void)0," is for suppressing C4127 warning in "assert(false)", "assert(true)" and the like
    +
    83# define TIXMLASSERT( x ) do { if ( !((void)0,(x))) { __debugbreak(); } } while(false)
    +
    84# elif defined (ANDROID_NDK)
    +
    85# include <android/log.h>
    +
    86# define TIXMLASSERT( x ) do { if ( !(x)) { __android_log_assert( "assert", "grinliz", "ASSERT in '%s' at %d.", __FILE__, __LINE__ ); } } while(false)
    +
    87# else
    +
    88# include <assert.h>
    +
    89# define TIXMLASSERT assert
    +
    90# endif
    +
    91#else
    +
    92# define TIXMLASSERT( x ) do {} while(false)
    +
    93#endif
    +
    94#endif
    +
    95
    +
    96/* Versioning, past 1.0.14:
    +
    97 http://semver.org/
    +
    98*/
    +
    99static const int TIXML2_MAJOR_VERSION = 10;
    +
    100static const int TIXML2_MINOR_VERSION = 0;
    +
    101static const int TIXML2_PATCH_VERSION = 0;
    +
    102
    +
    103#define TINYXML2_MAJOR_VERSION 10
    +
    104#define TINYXML2_MINOR_VERSION 0
    +
    105#define TINYXML2_PATCH_VERSION 0
    +
    106
    +
    107// A fixed element depth limit is problematic. There needs to be a
    +
    108// limit to avoid a stack overflow. However, that limit varies per
    +
    109// system, and the capacity of the stack. On the other hand, it's a trivial
    +
    110// attack that can result from ill, malicious, or even correctly formed XML,
    +
    111// so there needs to be a limit in place.
    +
    112static const int TINYXML2_MAX_ELEMENT_DEPTH = 500;
    +
    113
    +
    114namespace tinyxml2
    +
    115{
    +
    116class XMLDocument;
    +
    117class XMLElement;
    +
    118class XMLAttribute;
    +
    119class XMLComment;
    +
    120class XMLText;
    +
    121class XMLDeclaration;
    +
    122class XMLUnknown;
    +
    123class XMLPrinter;
    +
    124
    +
    125/*
    +
    126 A class that wraps strings. Normally stores the start and end
    +
    127 pointers into the XML file itself, and will apply normalization
    +
    128 and entity translation if actually read. Can also store (and memory
    +
    129 manage) a traditional char[]
    +
    130
    +
    131 Isn't clear why TINYXML2_LIB is needed; but seems to fix #719
    +
    132*/
    +
    133class TINYXML2_LIB StrPair
    +
    134{
    +
    135public:
    +
    136 enum Mode {
    +
    137 NEEDS_ENTITY_PROCESSING = 0x01,
    +
    138 NEEDS_NEWLINE_NORMALIZATION = 0x02,
    +
    139 NEEDS_WHITESPACE_COLLAPSING = 0x04,
    +
    140
    +
    141 TEXT_ELEMENT = NEEDS_ENTITY_PROCESSING | NEEDS_NEWLINE_NORMALIZATION,
    +
    142 TEXT_ELEMENT_LEAVE_ENTITIES = NEEDS_NEWLINE_NORMALIZATION,
    +
    143 ATTRIBUTE_NAME = 0,
    +
    144 ATTRIBUTE_VALUE = NEEDS_ENTITY_PROCESSING | NEEDS_NEWLINE_NORMALIZATION,
    +
    145 ATTRIBUTE_VALUE_LEAVE_ENTITIES = NEEDS_NEWLINE_NORMALIZATION,
    +
    146 COMMENT = NEEDS_NEWLINE_NORMALIZATION
    +
    147 };
    +
    148
    +
    149 StrPair() : _flags( 0 ), _start( 0 ), _end( 0 ) {}
    +
    150 ~StrPair();
    +
    151
    +
    152 void Set( char* start, char* end, int flags ) {
    +
    153 TIXMLASSERT( start );
    +
    154 TIXMLASSERT( end );
    +
    155 Reset();
    +
    156 _start = start;
    +
    157 _end = end;
    +
    158 _flags = flags | NEEDS_FLUSH;
    +
    159 }
    +
    160
    +
    161 const char* GetStr();
    +
    162
    +
    163 bool Empty() const {
    +
    164 return _start == _end;
    +
    165 }
    +
    166
    +
    167 void SetInternedStr( const char* str ) {
    +
    168 Reset();
    +
    169 _start = const_cast<char*>(str);
    +
    170 }
    +
    171
    +
    172 void SetStr( const char* str, int flags=0 );
    +
    173
    +
    174 char* ParseText( char* in, const char* endTag, int strFlags, int* curLineNumPtr );
    +
    175 char* ParseName( char* in );
    +
    176
    +
    177 void TransferTo( StrPair* other );
    +
    178 void Reset();
    +
    179
    +
    180private:
    +
    181 void CollapseWhitespace();
    +
    182
    +
    183 enum {
    +
    184 NEEDS_FLUSH = 0x100,
    +
    185 NEEDS_DELETE = 0x200
    +
    186 };
    +
    187
    +
    188 int _flags;
    +
    189 char* _start;
    +
    190 char* _end;
    +
    191
    +
    192 StrPair( const StrPair& other ); // not supported
    +
    193 void operator=( const StrPair& other ); // not supported, use TransferTo()
    +
    194};
    +
    195
    +
    196
    +
    197/*
    +
    198 A dynamic array of Plain Old Data. Doesn't support constructors, etc.
    +
    199 Has a small initial memory pool, so that low or no usage will not
    +
    200 cause a call to new/delete
    +
    201*/
    +
    202template <class T, int INITIAL_SIZE>
    +
    203class DynArray
    +
    204{
    +
    205public:
    +
    206 DynArray() :
    +
    207 _mem( _pool ),
    +
    208 _allocated( INITIAL_SIZE ),
    +
    209 _size( 0 )
    +
    210 {
    +
    211 }
    +
    212
    +
    213 ~DynArray() {
    +
    214 if ( _mem != _pool ) {
    +
    215 delete [] _mem;
    +
    216 }
    +
    217 }
    +
    218
    +
    219 void Clear() {
    +
    220 _size = 0;
    +
    221 }
    +
    222
    +
    223 void Push( T t ) {
    +
    224 TIXMLASSERT( _size < INT_MAX );
    +
    225 EnsureCapacity( _size+1 );
    +
    226 _mem[_size] = t;
    +
    227 ++_size;
    +
    228 }
    +
    229
    +
    230 T* PushArr( int count ) {
    +
    231 TIXMLASSERT( count >= 0 );
    +
    232 TIXMLASSERT( _size <= INT_MAX - count );
    +
    233 EnsureCapacity( _size+count );
    +
    234 T* ret = &_mem[_size];
    +
    235 _size += count;
    +
    236 return ret;
    +
    237 }
    +
    238
    +
    239 T Pop() {
    +
    240 TIXMLASSERT( _size > 0 );
    +
    241 --_size;
    +
    242 return _mem[_size];
    +
    243 }
    +
    244
    +
    245 void PopArr( int count ) {
    +
    246 TIXMLASSERT( _size >= count );
    +
    247 _size -= count;
    +
    248 }
    +
    249
    +
    250 bool Empty() const {
    +
    251 return _size == 0;
    +
    252 }
    +
    253
    +
    254 T& operator[](int i) {
    +
    255 TIXMLASSERT( i>= 0 && i < _size );
    +
    256 return _mem[i];
    +
    257 }
    +
    258
    +
    259 const T& operator[](int i) const {
    +
    260 TIXMLASSERT( i>= 0 && i < _size );
    +
    261 return _mem[i];
    +
    262 }
    +
    263
    +
    264 const T& PeekTop() const {
    +
    265 TIXMLASSERT( _size > 0 );
    +
    266 return _mem[ _size - 1];
    +
    267 }
    +
    268
    +
    269 int Size() const {
    +
    270 TIXMLASSERT( _size >= 0 );
    +
    271 return _size;
    +
    272 }
    +
    273
    +
    274 int Capacity() const {
    +
    275 TIXMLASSERT( _allocated >= INITIAL_SIZE );
    +
    276 return _allocated;
    +
    277 }
    +
    278
    +
    279 void SwapRemove(int i) {
    +
    280 TIXMLASSERT(i >= 0 && i < _size);
    +
    281 TIXMLASSERT(_size > 0);
    +
    282 _mem[i] = _mem[_size - 1];
    +
    283 --_size;
    +
    284 }
    +
    285
    +
    286 const T* Mem() const {
    +
    287 TIXMLASSERT( _mem );
    +
    288 return _mem;
    +
    289 }
    +
    290
    +
    291 T* Mem() {
    +
    292 TIXMLASSERT( _mem );
    +
    293 return _mem;
    +
    294 }
    +
    295
    +
    296private:
    +
    297 DynArray( const DynArray& ); // not supported
    +
    298 void operator=( const DynArray& ); // not supported
    +
    299
    +
    300 void EnsureCapacity( int cap ) {
    +
    301 TIXMLASSERT( cap > 0 );
    +
    302 if ( cap > _allocated ) {
    +
    303 TIXMLASSERT( cap <= INT_MAX / 2 );
    +
    304 const int newAllocated = cap * 2;
    +
    305 T* newMem = new T[static_cast<unsigned int>(newAllocated)];
    +
    306 TIXMLASSERT( newAllocated >= _size );
    +
    307 memcpy( newMem, _mem, sizeof(T)*static_cast<size_t>(_size) ); // warning: not using constructors, only works for PODs
    +
    308 if ( _mem != _pool ) {
    +
    309 delete [] _mem;
    +
    310 }
    +
    311 _mem = newMem;
    +
    312 _allocated = newAllocated;
    +
    313 }
    +
    314 }
    +
    315
    +
    316 T* _mem;
    +
    317 T _pool[static_cast<size_t>(INITIAL_SIZE)];
    +
    318 int _allocated; // objects allocated
    +
    319 int _size; // number objects in use
    +
    320};
    +
    321
    +
    322
    +
    323/*
    +
    324 Parent virtual class of a pool for fast allocation
    +
    325 and deallocation of objects.
    +
    326*/
    +
    327class MemPool
    +
    328{
    +
    329public:
    +
    330 MemPool() {}
    +
    331 virtual ~MemPool() {}
    +
    332
    +
    333 virtual int ItemSize() const = 0;
    +
    334 virtual void* Alloc() = 0;
    +
    335 virtual void Free( void* ) = 0;
    +
    336 virtual void SetTracked() = 0;
    +
    337};
    +
    338
    +
    339
    +
    340/*
    +
    341 Template child class to create pools of the correct type.
    +
    342*/
    +
    343template< int ITEM_SIZE >
    +
    344class MemPoolT : public MemPool
    +
    345{
    +
    346public:
    +
    347 MemPoolT() : _blockPtrs(), _root(0), _currentAllocs(0), _nAllocs(0), _maxAllocs(0), _nUntracked(0) {}
    +
    348 ~MemPoolT() {
    +
    349 MemPoolT< ITEM_SIZE >::Clear();
    +
    350 }
    +
    351
    +
    352 void Clear() {
    +
    353 // Delete the blocks.
    +
    354 while( !_blockPtrs.Empty()) {
    +
    355 Block* lastBlock = _blockPtrs.Pop();
    +
    356 delete lastBlock;
    +
    357 }
    +
    358 _root = 0;
    +
    359 _currentAllocs = 0;
    +
    360 _nAllocs = 0;
    +
    361 _maxAllocs = 0;
    +
    362 _nUntracked = 0;
    +
    363 }
    +
    364
    +
    365 virtual int ItemSize() const override{
    +
    366 return ITEM_SIZE;
    +
    367 }
    +
    368 int CurrentAllocs() const {
    +
    369 return _currentAllocs;
    +
    370 }
    +
    371
    +
    372 virtual void* Alloc() override{
    +
    373 if ( !_root ) {
    +
    374 // Need a new block.
    +
    375 Block* block = new Block;
    +
    376 _blockPtrs.Push( block );
    +
    377
    +
    378 Item* blockItems = block->items;
    +
    379 for( int i = 0; i < ITEMS_PER_BLOCK - 1; ++i ) {
    +
    380 blockItems[i].next = &(blockItems[i + 1]);
    +
    381 }
    +
    382 blockItems[ITEMS_PER_BLOCK - 1].next = 0;
    +
    383 _root = blockItems;
    +
    384 }
    +
    385 Item* const result = _root;
    +
    386 TIXMLASSERT( result != 0 );
    +
    387 _root = _root->next;
    +
    388
    +
    389 ++_currentAllocs;
    +
    390 if ( _currentAllocs > _maxAllocs ) {
    +
    391 _maxAllocs = _currentAllocs;
    +
    392 }
    +
    393 ++_nAllocs;
    +
    394 ++_nUntracked;
    +
    395 return result;
    +
    396 }
    +
    397
    +
    398 virtual void Free( void* mem ) override {
    +
    399 if ( !mem ) {
    +
    400 return;
    +
    401 }
    +
    402 --_currentAllocs;
    +
    403 Item* item = static_cast<Item*>( mem );
    +
    404#ifdef TINYXML2_DEBUG
    +
    405 memset( item, 0xfe, sizeof( *item ) );
    +
    406#endif
    +
    407 item->next = _root;
    +
    408 _root = item;
    +
    409 }
    +
    410 void Trace( const char* name ) {
    +
    411 printf( "Mempool %s watermark=%d [%dk] current=%d size=%d nAlloc=%d blocks=%d\n",
    +
    412 name, _maxAllocs, _maxAllocs * ITEM_SIZE / 1024, _currentAllocs,
    +
    413 ITEM_SIZE, _nAllocs, _blockPtrs.Size() );
    +
    414 }
    +
    415
    +
    416 void SetTracked() override {
    +
    417 --_nUntracked;
    +
    418 }
    +
    419
    +
    420 int Untracked() const {
    +
    421 return _nUntracked;
    +
    422 }
    +
    423
    +
    424 // This number is perf sensitive. 4k seems like a good tradeoff on my machine.
    +
    425 // The test file is large, 170k.
    +
    426 // Release: VS2010 gcc(no opt)
    +
    427 // 1k: 4000
    +
    428 // 2k: 4000
    +
    429 // 4k: 3900 21000
    +
    430 // 16k: 5200
    +
    431 // 32k: 4300
    +
    432 // 64k: 4000 21000
    +
    433 // Declared public because some compilers do not accept to use ITEMS_PER_BLOCK
    +
    434 // in private part if ITEMS_PER_BLOCK is private
    +
    435 enum { ITEMS_PER_BLOCK = (4 * 1024) / ITEM_SIZE };
    +
    436
    +
    437private:
    +
    438 MemPoolT( const MemPoolT& ); // not supported
    +
    439 void operator=( const MemPoolT& ); // not supported
    +
    440
    +
    441 union Item {
    +
    442 Item* next;
    +
    443 char itemData[static_cast<size_t>(ITEM_SIZE)];
    +
    444 };
    +
    445 struct Block {
    +
    446 Item items[ITEMS_PER_BLOCK];
    +
    447 };
    +
    448 DynArray< Block*, 10 > _blockPtrs;
    +
    449 Item* _root;
    +
    450
    +
    451 int _currentAllocs;
    +
    452 int _nAllocs;
    +
    453 int _maxAllocs;
    +
    454 int _nUntracked;
    +
    455};
    +
    456
    +
    457
    +
    458
    +
    +
    478class TINYXML2_LIB XMLVisitor
    +
    479{
    +
    480public:
    +
    481 virtual ~XMLVisitor() {}
    +
    482
    +
    +
    484 virtual bool VisitEnter( const XMLDocument& /*doc*/ ) {
    +
    485 return true;
    +
    486 }
    +
    +
    +
    488 virtual bool VisitExit( const XMLDocument& /*doc*/ ) {
    +
    489 return true;
    +
    490 }
    +
    +
    491
    +
    +
    493 virtual bool VisitEnter( const XMLElement& /*element*/, const XMLAttribute* /*firstAttribute*/ ) {
    +
    494 return true;
    +
    495 }
    +
    +
    +
    497 virtual bool VisitExit( const XMLElement& /*element*/ ) {
    +
    498 return true;
    +
    499 }
    +
    +
    500
    +
    +
    502 virtual bool Visit( const XMLDeclaration& /*declaration*/ ) {
    +
    503 return true;
    +
    504 }
    +
    +
    +
    506 virtual bool Visit( const XMLText& /*text*/ ) {
    +
    507 return true;
    +
    508 }
    +
    +
    +
    510 virtual bool Visit( const XMLComment& /*comment*/ ) {
    +
    511 return true;
    +
    512 }
    +
    +
    +
    514 virtual bool Visit( const XMLUnknown& /*unknown*/ ) {
    +
    515 return true;
    +
    516 }
    +
    +
    517};
    +
    +
    518
    +
    519// WARNING: must match XMLDocument::_errorNames[]
    +
    520enum XMLError {
    +
    521 XML_SUCCESS = 0,
    +
    522 XML_NO_ATTRIBUTE,
    +
    523 XML_WRONG_ATTRIBUTE_TYPE,
    +
    524 XML_ERROR_FILE_NOT_FOUND,
    +
    525 XML_ERROR_FILE_COULD_NOT_BE_OPENED,
    +
    526 XML_ERROR_FILE_READ_ERROR,
    +
    527 XML_ERROR_PARSING_ELEMENT,
    +
    528 XML_ERROR_PARSING_ATTRIBUTE,
    +
    529 XML_ERROR_PARSING_TEXT,
    +
    530 XML_ERROR_PARSING_CDATA,
    +
    531 XML_ERROR_PARSING_COMMENT,
    +
    532 XML_ERROR_PARSING_DECLARATION,
    +
    533 XML_ERROR_PARSING_UNKNOWN,
    +
    534 XML_ERROR_EMPTY_DOCUMENT,
    +
    535 XML_ERROR_MISMATCHED_ELEMENT,
    +
    536 XML_ERROR_PARSING,
    +
    537 XML_CAN_NOT_CONVERT_TEXT,
    +
    538 XML_NO_TEXT_NODE,
    +
    539 XML_ELEMENT_DEPTH_EXCEEDED,
    +
    540
    +
    541 XML_ERROR_COUNT
    +
    542};
    +
    543
    +
    544
    +
    545/*
    +
    546 Utility functionality.
    +
    547*/
    +
    548class TINYXML2_LIB XMLUtil
    +
    549{
    +
    550public:
    +
    551 static const char* SkipWhiteSpace( const char* p, int* curLineNumPtr ) {
    +
    552 TIXMLASSERT( p );
    +
    553
    +
    554 while( IsWhiteSpace(*p) ) {
    +
    555 if (curLineNumPtr && *p == '\n') {
    +
    556 ++(*curLineNumPtr);
    +
    557 }
    +
    558 ++p;
    +
    559 }
    +
    560 TIXMLASSERT( p );
    +
    561 return p;
    +
    562 }
    +
    563 static char* SkipWhiteSpace( char* const p, int* curLineNumPtr ) {
    +
    564 return const_cast<char*>( SkipWhiteSpace( const_cast<const char*>(p), curLineNumPtr ) );
    +
    565 }
    +
    566
    +
    567 // Anything in the high order range of UTF-8 is assumed to not be whitespace. This isn't
    +
    568 // correct, but simple, and usually works.
    +
    569 static bool IsWhiteSpace( char p ) {
    +
    570 return !IsUTF8Continuation(p) && isspace( static_cast<unsigned char>(p) );
    +
    571 }
    +
    572
    +
    573 inline static bool IsNameStartChar( unsigned char ch ) {
    +
    574 if ( ch >= 128 ) {
    +
    575 // This is a heuristic guess in attempt to not implement Unicode-aware isalpha()
    +
    576 return true;
    +
    577 }
    +
    578 if ( isalpha( ch ) ) {
    +
    579 return true;
    +
    580 }
    +
    581 return ch == ':' || ch == '_';
    +
    582 }
    +
    583
    +
    584 inline static bool IsNameChar( unsigned char ch ) {
    +
    585 return IsNameStartChar( ch )
    +
    586 || isdigit( ch )
    +
    587 || ch == '.'
    +
    588 || ch == '-';
    +
    589 }
    +
    590
    +
    591 inline static bool IsPrefixHex( const char* p) {
    +
    592 p = SkipWhiteSpace(p, 0);
    +
    593 return p && *p == '0' && ( *(p + 1) == 'x' || *(p + 1) == 'X');
    +
    594 }
    +
    595
    +
    596 inline static bool StringEqual( const char* p, const char* q, int nChar=INT_MAX ) {
    +
    597 if ( p == q ) {
    +
    598 return true;
    +
    599 }
    +
    600 TIXMLASSERT( p );
    +
    601 TIXMLASSERT( q );
    +
    602 TIXMLASSERT( nChar >= 0 );
    +
    603 return strncmp( p, q, static_cast<size_t>(nChar) ) == 0;
    +
    604 }
    +
    605
    +
    606 inline static bool IsUTF8Continuation( const char p ) {
    +
    607 return ( p & 0x80 ) != 0;
    +
    608 }
    +
    609
    +
    610 static const char* ReadBOM( const char* p, bool* hasBOM );
    +
    611 // p is the starting location,
    +
    612 // the UTF-8 value of the entity will be placed in value, and length filled in.
    +
    613 static const char* GetCharacterRef( const char* p, char* value, int* length );
    +
    614 static void ConvertUTF32ToUTF8( unsigned long input, char* output, int* length );
    +
    615
    +
    616 // converts primitive types to strings
    +
    617 static void ToStr( int v, char* buffer, int bufferSize );
    +
    618 static void ToStr( unsigned v, char* buffer, int bufferSize );
    +
    619 static void ToStr( bool v, char* buffer, int bufferSize );
    +
    620 static void ToStr( float v, char* buffer, int bufferSize );
    +
    621 static void ToStr( double v, char* buffer, int bufferSize );
    +
    622 static void ToStr(int64_t v, char* buffer, int bufferSize);
    +
    623 static void ToStr(uint64_t v, char* buffer, int bufferSize);
    +
    624
    +
    625 // converts strings to primitive types
    +
    626 static bool ToInt( const char* str, int* value );
    +
    627 static bool ToUnsigned( const char* str, unsigned* value );
    +
    628 static bool ToBool( const char* str, bool* value );
    +
    629 static bool ToFloat( const char* str, float* value );
    +
    630 static bool ToDouble( const char* str, double* value );
    +
    631 static bool ToInt64(const char* str, int64_t* value);
    +
    632 static bool ToUnsigned64(const char* str, uint64_t* value);
    +
    633 // Changes what is serialized for a boolean value.
    +
    634 // Default to "true" and "false". Shouldn't be changed
    +
    635 // unless you have a special testing or compatibility need.
    +
    636 // Be careful: static, global, & not thread safe.
    +
    637 // Be sure to set static const memory as parameters.
    +
    638 static void SetBoolSerialization(const char* writeTrue, const char* writeFalse);
    +
    639
    +
    640private:
    +
    641 static const char* writeBoolTrue;
    +
    642 static const char* writeBoolFalse;
    +
    643};
    +
    644
    +
    645
    +
    +
    671class TINYXML2_LIB XMLNode
    +
    672{
    +
    673 friend class XMLDocument;
    +
    674 friend class XMLElement;
    +
    675public:
    +
    676
    +
    +
    678 const XMLDocument* GetDocument() const {
    +
    679 TIXMLASSERT( _document );
    +
    680 return _document;
    +
    681 }
    +
    +
    + +
    684 TIXMLASSERT( _document );
    +
    685 return _document;
    +
    686 }
    +
    +
    687
    +
    + +
    690 return 0;
    +
    691 }
    +
    +
    +
    693 virtual XMLText* ToText() {
    +
    694 return 0;
    +
    695 }
    +
    +
    + +
    698 return 0;
    +
    699 }
    +
    +
    + +
    702 return 0;
    +
    703 }
    +
    +
    + +
    706 return 0;
    +
    707 }
    +
    +
    + +
    710 return 0;
    +
    711 }
    +
    +
    712
    +
    713 virtual const XMLElement* ToElement() const {
    +
    714 return 0;
    +
    715 }
    +
    716 virtual const XMLText* ToText() const {
    +
    717 return 0;
    +
    718 }
    +
    719 virtual const XMLComment* ToComment() const {
    +
    720 return 0;
    +
    721 }
    +
    722 virtual const XMLDocument* ToDocument() const {
    +
    723 return 0;
    +
    724 }
    +
    725 virtual const XMLDeclaration* ToDeclaration() const {
    +
    726 return 0;
    +
    727 }
    +
    728 virtual const XMLUnknown* ToUnknown() const {
    +
    729 return 0;
    +
    730 }
    +
    731
    +
    732 // ChildElementCount was originally suggested by msteiger on the sourceforge page for TinyXML and modified by KB1SPH for TinyXML-2.
    +
    733
    +
    734 int ChildElementCount(const char *value) const;
    +
    735
    +
    736 int ChildElementCount() const;
    +
    737
    +
    747 const char* Value() const;
    +
    748
    +
    752 void SetValue( const char* val, bool staticMem=false );
    +
    753
    +
    755 int GetLineNum() const { return _parseLineNum; }
    +
    756
    +
    +
    758 const XMLNode* Parent() const {
    +
    759 return _parent;
    +
    760 }
    +
    +
    761
    +
    762 XMLNode* Parent() {
    +
    763 return _parent;
    +
    764 }
    +
    765
    +
    +
    767 bool NoChildren() const {
    +
    768 return !_firstChild;
    +
    769 }
    +
    +
    770
    +
    +
    772 const XMLNode* FirstChild() const {
    +
    773 return _firstChild;
    +
    774 }
    +
    +
    775
    +
    776 XMLNode* FirstChild() {
    +
    777 return _firstChild;
    +
    778 }
    +
    779
    +
    783 const XMLElement* FirstChildElement( const char* name = 0 ) const;
    +
    784
    +
    785 XMLElement* FirstChildElement( const char* name = 0 ) {
    +
    786 return const_cast<XMLElement*>(const_cast<const XMLNode*>(this)->FirstChildElement( name ));
    +
    787 }
    +
    788
    +
    +
    790 const XMLNode* LastChild() const {
    +
    791 return _lastChild;
    +
    792 }
    +
    +
    793
    +
    794 XMLNode* LastChild() {
    +
    795 return _lastChild;
    +
    796 }
    +
    797
    +
    801 const XMLElement* LastChildElement( const char* name = 0 ) const;
    +
    802
    +
    803 XMLElement* LastChildElement( const char* name = 0 ) {
    +
    804 return const_cast<XMLElement*>(const_cast<const XMLNode*>(this)->LastChildElement(name) );
    +
    805 }
    +
    806
    +
    +
    808 const XMLNode* PreviousSibling() const {
    +
    809 return _prev;
    +
    810 }
    +
    +
    811
    +
    812 XMLNode* PreviousSibling() {
    +
    813 return _prev;
    +
    814 }
    +
    815
    +
    817 const XMLElement* PreviousSiblingElement( const char* name = 0 ) const ;
    +
    818
    +
    819 XMLElement* PreviousSiblingElement( const char* name = 0 ) {
    +
    820 return const_cast<XMLElement*>(const_cast<const XMLNode*>(this)->PreviousSiblingElement( name ) );
    +
    821 }
    +
    822
    +
    +
    824 const XMLNode* NextSibling() const {
    +
    825 return _next;
    +
    826 }
    +
    +
    827
    +
    828 XMLNode* NextSibling() {
    +
    829 return _next;
    +
    830 }
    +
    831
    +
    833 const XMLElement* NextSiblingElement( const char* name = 0 ) const;
    +
    834
    +
    835 XMLElement* NextSiblingElement( const char* name = 0 ) {
    +
    836 return const_cast<XMLElement*>(const_cast<const XMLNode*>(this)->NextSiblingElement( name ) );
    +
    837 }
    +
    838
    + +
    847
    +
    848 XMLNode* LinkEndChild( XMLNode* addThis ) {
    +
    849 return InsertEndChild( addThis );
    +
    850 }
    + +
    867 XMLNode* InsertAfterChild( XMLNode* afterThis, XMLNode* addThis );
    +
    868
    + +
    873
    +
    877 void DeleteChild( XMLNode* node );
    +
    878
    +
    888 virtual XMLNode* ShallowClone( XMLDocument* document ) const = 0;
    +
    889
    +
    903 XMLNode* DeepClone( XMLDocument* target ) const;
    +
    904
    +
    911 virtual bool ShallowEqual( const XMLNode* compare ) const = 0;
    +
    912
    +
    935 virtual bool Accept( XMLVisitor* visitor ) const = 0;
    +
    936
    +
    942 void SetUserData(void* userData) { _userData = userData; }
    +
    943
    +
    949 void* GetUserData() const { return _userData; }
    +
    950
    +
    951protected:
    +
    952 explicit XMLNode( XMLDocument* );
    +
    953 virtual ~XMLNode();
    +
    954
    +
    955 virtual char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr);
    +
    956
    +
    957 XMLDocument* _document;
    +
    958 XMLNode* _parent;
    +
    959 mutable StrPair _value;
    +
    960 int _parseLineNum;
    +
    961
    +
    962 XMLNode* _firstChild;
    +
    963 XMLNode* _lastChild;
    +
    964
    +
    965 XMLNode* _prev;
    +
    966 XMLNode* _next;
    +
    967
    +
    968 void* _userData;
    +
    969
    +
    970private:
    +
    971 MemPool* _memPool;
    +
    972 void Unlink( XMLNode* child );
    +
    973 static void DeleteNode( XMLNode* node );
    +
    974 void InsertChildPreamble( XMLNode* insertThis ) const;
    +
    975 const XMLElement* ToElementWithName( const char* name ) const;
    +
    976
    +
    977 XMLNode( const XMLNode& ); // not supported
    +
    978 XMLNode& operator=( const XMLNode& ); // not supported
    +
    979};
    +
    +
    980
    +
    981
    +
    +
    994class TINYXML2_LIB XMLText : public XMLNode
    +
    995{
    +
    996 friend class XMLDocument;
    +
    997public:
    +
    998 virtual bool Accept( XMLVisitor* visitor ) const override;
    +
    999
    +
    +
    1000 virtual XMLText* ToText() override {
    +
    1001 return this;
    +
    1002 }
    +
    +
    1003 virtual const XMLText* ToText() const override {
    +
    1004 return this;
    +
    1005 }
    +
    1006
    +
    +
    1008 void SetCData( bool isCData ) {
    +
    1009 _isCData = isCData;
    +
    1010 }
    +
    +
    +
    1012 bool CData() const {
    +
    1013 return _isCData;
    +
    1014 }
    +
    +
    1015
    +
    1016 virtual XMLNode* ShallowClone( XMLDocument* document ) const override;
    +
    1017 virtual bool ShallowEqual( const XMLNode* compare ) const override;
    +
    1018
    +
    1019protected:
    +
    1020 explicit XMLText( XMLDocument* doc ) : XMLNode( doc ), _isCData( false ) {}
    +
    1021 virtual ~XMLText() {}
    +
    1022
    +
    1023 char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr ) override;
    +
    1024
    +
    1025private:
    +
    1026 bool _isCData;
    +
    1027
    +
    1028 XMLText( const XMLText& ); // not supported
    +
    1029 XMLText& operator=( const XMLText& ); // not supported
    +
    1030};
    +
    +
    1031
    +
    1032
    +
    +
    1034class TINYXML2_LIB XMLComment : public XMLNode
    +
    1035{
    +
    1036 friend class XMLDocument;
    +
    1037public:
    +
    +
    1038 virtual XMLComment* ToComment() override {
    +
    1039 return this;
    +
    1040 }
    +
    +
    1041 virtual const XMLComment* ToComment() const override {
    +
    1042 return this;
    +
    1043 }
    +
    1044
    +
    1045 virtual bool Accept( XMLVisitor* visitor ) const override;
    +
    1046
    +
    1047 virtual XMLNode* ShallowClone( XMLDocument* document ) const override;
    +
    1048 virtual bool ShallowEqual( const XMLNode* compare ) const override;
    +
    1049
    +
    1050protected:
    +
    1051 explicit XMLComment( XMLDocument* doc );
    +
    1052 virtual ~XMLComment();
    +
    1053
    +
    1054 char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr) override;
    +
    1055
    +
    1056private:
    +
    1057 XMLComment( const XMLComment& ); // not supported
    +
    1058 XMLComment& operator=( const XMLComment& ); // not supported
    +
    1059};
    +
    +
    1060
    +
    1061
    +
    +
    1073class TINYXML2_LIB XMLDeclaration : public XMLNode
    +
    1074{
    +
    1075 friend class XMLDocument;
    +
    1076public:
    +
    +
    1077 virtual XMLDeclaration* ToDeclaration() override {
    +
    1078 return this;
    +
    1079 }
    +
    +
    1080 virtual const XMLDeclaration* ToDeclaration() const override {
    +
    1081 return this;
    +
    1082 }
    +
    1083
    +
    1084 virtual bool Accept( XMLVisitor* visitor ) const override;
    +
    1085
    +
    1086 virtual XMLNode* ShallowClone( XMLDocument* document ) const override;
    +
    1087 virtual bool ShallowEqual( const XMLNode* compare ) const override;
    +
    1088
    +
    1089protected:
    +
    1090 explicit XMLDeclaration( XMLDocument* doc );
    +
    1091 virtual ~XMLDeclaration();
    +
    1092
    +
    1093 char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr ) override;
    +
    1094
    +
    1095private:
    +
    1096 XMLDeclaration( const XMLDeclaration& ); // not supported
    +
    1097 XMLDeclaration& operator=( const XMLDeclaration& ); // not supported
    +
    1098};
    +
    +
    1099
    +
    1100
    +
    +
    1108class TINYXML2_LIB XMLUnknown : public XMLNode
    +
    1109{
    +
    1110 friend class XMLDocument;
    +
    1111public:
    +
    +
    1112 virtual XMLUnknown* ToUnknown() override {
    +
    1113 return this;
    +
    1114 }
    +
    +
    1115 virtual const XMLUnknown* ToUnknown() const override {
    +
    1116 return this;
    +
    1117 }
    +
    1118
    +
    1119 virtual bool Accept( XMLVisitor* visitor ) const override;
    +
    1120
    +
    1121 virtual XMLNode* ShallowClone( XMLDocument* document ) const override;
    +
    1122 virtual bool ShallowEqual( const XMLNode* compare ) const override;
    +
    1123
    +
    1124protected:
    +
    1125 explicit XMLUnknown( XMLDocument* doc );
    +
    1126 virtual ~XMLUnknown();
    +
    1127
    +
    1128 char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr ) override;
    +
    1129
    +
    1130private:
    +
    1131 XMLUnknown( const XMLUnknown& ); // not supported
    +
    1132 XMLUnknown& operator=( const XMLUnknown& ); // not supported
    +
    1133};
    +
    +
    1134
    +
    1135
    +
    1136
    +
    +
    1143class TINYXML2_LIB XMLAttribute
    +
    1144{
    +
    1145 friend class XMLElement;
    +
    1146public:
    +
    1148 const char* Name() const;
    +
    1149
    +
    1151 const char* Value() const;
    +
    1152
    +
    1154 int GetLineNum() const { return _parseLineNum; }
    +
    1155
    +
    +
    1157 const XMLAttribute* Next() const {
    +
    1158 return _next;
    +
    1159 }
    +
    +
    1160
    +
    +
    1165 int IntValue() const {
    +
    1166 int i = 0;
    +
    1167 QueryIntValue(&i);
    +
    1168 return i;
    +
    1169 }
    +
    +
    1170
    +
    1171 int64_t Int64Value() const {
    +
    1172 int64_t i = 0;
    +
    1173 QueryInt64Value(&i);
    +
    1174 return i;
    +
    1175 }
    +
    1176
    +
    1177 uint64_t Unsigned64Value() const {
    +
    1178 uint64_t i = 0;
    +
    1179 QueryUnsigned64Value(&i);
    +
    1180 return i;
    +
    1181 }
    +
    1182
    +
    +
    1184 unsigned UnsignedValue() const {
    +
    1185 unsigned i=0;
    +
    1186 QueryUnsignedValue( &i );
    +
    1187 return i;
    +
    1188 }
    +
    +
    +
    1190 bool BoolValue() const {
    +
    1191 bool b=false;
    +
    1192 QueryBoolValue( &b );
    +
    1193 return b;
    +
    1194 }
    +
    +
    +
    1196 double DoubleValue() const {
    +
    1197 double d=0;
    +
    1198 QueryDoubleValue( &d );
    +
    1199 return d;
    +
    1200 }
    +
    +
    +
    1202 float FloatValue() const {
    +
    1203 float f=0;
    +
    1204 QueryFloatValue( &f );
    +
    1205 return f;
    +
    1206 }
    +
    +
    1207
    +
    1212 XMLError QueryIntValue( int* value ) const;
    +
    1214 XMLError QueryUnsignedValue( unsigned int* value ) const;
    +
    1216 XMLError QueryInt64Value(int64_t* value) const;
    +
    1218 XMLError QueryUnsigned64Value(uint64_t* value) const;
    +
    1220 XMLError QueryBoolValue( bool* value ) const;
    +
    1222 XMLError QueryDoubleValue( double* value ) const;
    +
    1224 XMLError QueryFloatValue( float* value ) const;
    +
    1225
    +
    1227 void SetAttribute( const char* value );
    +
    1229 void SetAttribute( int value );
    +
    1231 void SetAttribute( unsigned value );
    +
    1233 void SetAttribute(int64_t value);
    +
    1235 void SetAttribute(uint64_t value);
    +
    1237 void SetAttribute( bool value );
    +
    1239 void SetAttribute( double value );
    +
    1241 void SetAttribute( float value );
    +
    1242
    +
    1243private:
    +
    1244 enum { BUF_SIZE = 200 };
    +
    1245
    +
    1246 XMLAttribute() : _name(), _value(),_parseLineNum( 0 ), _next( 0 ), _memPool( 0 ) {}
    +
    1247 virtual ~XMLAttribute() {}
    +
    1248
    +
    1249 XMLAttribute( const XMLAttribute& ); // not supported
    +
    1250 void operator=( const XMLAttribute& ); // not supported
    +
    1251 void SetName( const char* name );
    +
    1252
    +
    1253 char* ParseDeep( char* p, bool processEntities, int* curLineNumPtr );
    +
    1254
    +
    1255 mutable StrPair _name;
    +
    1256 mutable StrPair _value;
    +
    1257 int _parseLineNum;
    +
    1258 XMLAttribute* _next;
    +
    1259 MemPool* _memPool;
    +
    1260};
    +
    +
    1261
    +
    1262
    +
    +
    1267class TINYXML2_LIB XMLElement : public XMLNode
    +
    1268{
    +
    1269 friend class XMLDocument;
    +
    1270public:
    +
    +
    1272 const char* Name() const {
    +
    1273 return Value();
    +
    1274 }
    +
    +
    +
    1276 void SetName( const char* str, bool staticMem=false ) {
    +
    1277 SetValue( str, staticMem );
    +
    1278 }
    +
    +
    1279
    +
    +
    1280 virtual XMLElement* ToElement() override {
    +
    1281 return this;
    +
    1282 }
    +
    +
    1283 virtual const XMLElement* ToElement() const override {
    +
    1284 return this;
    +
    1285 }
    +
    1286 virtual bool Accept( XMLVisitor* visitor ) const override;
    +
    1287
    +
    1311 const char* Attribute( const char* name, const char* value=0 ) const;
    +
    1312
    +
    1319 int IntAttribute(const char* name, int defaultValue = 0) const;
    +
    1321 unsigned UnsignedAttribute(const char* name, unsigned defaultValue = 0) const;
    +
    1323 int64_t Int64Attribute(const char* name, int64_t defaultValue = 0) const;
    +
    1325 uint64_t Unsigned64Attribute(const char* name, uint64_t defaultValue = 0) const;
    +
    1327 bool BoolAttribute(const char* name, bool defaultValue = false) const;
    +
    1329 double DoubleAttribute(const char* name, double defaultValue = 0) const;
    +
    1331 float FloatAttribute(const char* name, float defaultValue = 0) const;
    +
    1332
    +
    +
    1346 XMLError QueryIntAttribute( const char* name, int* value ) const {
    +
    1347 const XMLAttribute* a = FindAttribute( name );
    +
    1348 if ( !a ) {
    +
    1349 return XML_NO_ATTRIBUTE;
    +
    1350 }
    +
    1351 return a->QueryIntValue( value );
    +
    1352 }
    +
    +
    1353
    +
    +
    1355 XMLError QueryUnsignedAttribute( const char* name, unsigned int* value ) const {
    +
    1356 const XMLAttribute* a = FindAttribute( name );
    +
    1357 if ( !a ) {
    +
    1358 return XML_NO_ATTRIBUTE;
    +
    1359 }
    +
    1360 return a->QueryUnsignedValue( value );
    +
    1361 }
    +
    +
    1362
    +
    +
    1364 XMLError QueryInt64Attribute(const char* name, int64_t* value) const {
    +
    1365 const XMLAttribute* a = FindAttribute(name);
    +
    1366 if (!a) {
    +
    1367 return XML_NO_ATTRIBUTE;
    +
    1368 }
    +
    1369 return a->QueryInt64Value(value);
    +
    1370 }
    +
    +
    1371
    +
    +
    1373 XMLError QueryUnsigned64Attribute(const char* name, uint64_t* value) const {
    +
    1374 const XMLAttribute* a = FindAttribute(name);
    +
    1375 if(!a) {
    +
    1376 return XML_NO_ATTRIBUTE;
    +
    1377 }
    +
    1378 return a->QueryUnsigned64Value(value);
    +
    1379 }
    +
    +
    1380
    +
    +
    1382 XMLError QueryBoolAttribute( const char* name, bool* value ) const {
    +
    1383 const XMLAttribute* a = FindAttribute( name );
    +
    1384 if ( !a ) {
    +
    1385 return XML_NO_ATTRIBUTE;
    +
    1386 }
    +
    1387 return a->QueryBoolValue( value );
    +
    1388 }
    +
    +
    +
    1390 XMLError QueryDoubleAttribute( const char* name, double* value ) const {
    +
    1391 const XMLAttribute* a = FindAttribute( name );
    +
    1392 if ( !a ) {
    +
    1393 return XML_NO_ATTRIBUTE;
    +
    1394 }
    +
    1395 return a->QueryDoubleValue( value );
    +
    1396 }
    +
    +
    +
    1398 XMLError QueryFloatAttribute( const char* name, float* value ) const {
    +
    1399 const XMLAttribute* a = FindAttribute( name );
    +
    1400 if ( !a ) {
    +
    1401 return XML_NO_ATTRIBUTE;
    +
    1402 }
    +
    1403 return a->QueryFloatValue( value );
    +
    1404 }
    +
    +
    1405
    +
    +
    1407 XMLError QueryStringAttribute(const char* name, const char** value) const {
    +
    1408 const XMLAttribute* a = FindAttribute(name);
    +
    1409 if (!a) {
    +
    1410 return XML_NO_ATTRIBUTE;
    +
    1411 }
    +
    1412 *value = a->Value();
    +
    1413 return XML_SUCCESS;
    +
    1414 }
    +
    +
    1415
    +
    1416
    +
    1417
    +
    +
    1435 XMLError QueryAttribute( const char* name, int* value ) const {
    +
    1436 return QueryIntAttribute( name, value );
    +
    1437 }
    +
    +
    1438
    +
    1439 XMLError QueryAttribute( const char* name, unsigned int* value ) const {
    +
    1440 return QueryUnsignedAttribute( name, value );
    +
    1441 }
    +
    1442
    +
    1443 XMLError QueryAttribute(const char* name, int64_t* value) const {
    +
    1444 return QueryInt64Attribute(name, value);
    +
    1445 }
    +
    1446
    +
    1447 XMLError QueryAttribute(const char* name, uint64_t* value) const {
    +
    1448 return QueryUnsigned64Attribute(name, value);
    +
    1449 }
    +
    1450
    +
    1451 XMLError QueryAttribute( const char* name, bool* value ) const {
    +
    1452 return QueryBoolAttribute( name, value );
    +
    1453 }
    +
    1454
    +
    1455 XMLError QueryAttribute( const char* name, double* value ) const {
    +
    1456 return QueryDoubleAttribute( name, value );
    +
    1457 }
    +
    1458
    +
    1459 XMLError QueryAttribute( const char* name, float* value ) const {
    +
    1460 return QueryFloatAttribute( name, value );
    +
    1461 }
    +
    1462
    +
    1463 XMLError QueryAttribute(const char* name, const char** value) const {
    +
    1464 return QueryStringAttribute(name, value);
    +
    1465 }
    +
    1466
    +
    +
    1468 void SetAttribute( const char* name, const char* value ) {
    +
    1469 XMLAttribute* a = FindOrCreateAttribute( name );
    +
    1470 a->SetAttribute( value );
    +
    1471 }
    +
    +
    +
    1473 void SetAttribute( const char* name, int value ) {
    +
    1474 XMLAttribute* a = FindOrCreateAttribute( name );
    +
    1475 a->SetAttribute( value );
    +
    1476 }
    +
    +
    +
    1478 void SetAttribute( const char* name, unsigned value ) {
    +
    1479 XMLAttribute* a = FindOrCreateAttribute( name );
    +
    1480 a->SetAttribute( value );
    +
    1481 }
    +
    +
    1482
    +
    +
    1484 void SetAttribute(const char* name, int64_t value) {
    +
    1485 XMLAttribute* a = FindOrCreateAttribute(name);
    +
    1486 a->SetAttribute(value);
    +
    1487 }
    +
    +
    1488
    +
    +
    1490 void SetAttribute(const char* name, uint64_t value) {
    +
    1491 XMLAttribute* a = FindOrCreateAttribute(name);
    +
    1492 a->SetAttribute(value);
    +
    1493 }
    +
    +
    1494
    +
    +
    1496 void SetAttribute( const char* name, bool value ) {
    +
    1497 XMLAttribute* a = FindOrCreateAttribute( name );
    +
    1498 a->SetAttribute( value );
    +
    1499 }
    +
    +
    +
    1501 void SetAttribute( const char* name, double value ) {
    +
    1502 XMLAttribute* a = FindOrCreateAttribute( name );
    +
    1503 a->SetAttribute( value );
    +
    1504 }
    +
    +
    +
    1506 void SetAttribute( const char* name, float value ) {
    +
    1507 XMLAttribute* a = FindOrCreateAttribute( name );
    +
    1508 a->SetAttribute( value );
    +
    1509 }
    +
    +
    1510
    +
    1514 void DeleteAttribute( const char* name );
    +
    1515
    +
    + +
    1518 return _rootAttribute;
    +
    1519 }
    +
    +
    1521 const XMLAttribute* FindAttribute( const char* name ) const;
    +
    1522
    +
    1551 const char* GetText() const;
    +
    1552
    +
    1587 void SetText( const char* inText );
    +
    1589 void SetText( int value );
    +
    1591 void SetText( unsigned value );
    +
    1593 void SetText(int64_t value);
    +
    1595 void SetText(uint64_t value);
    +
    1597 void SetText( bool value );
    +
    1599 void SetText( double value );
    +
    1601 void SetText( float value );
    +
    1602
    +
    1629 XMLError QueryIntText( int* ival ) const;
    +
    1631 XMLError QueryUnsignedText( unsigned* uval ) const;
    +
    1633 XMLError QueryInt64Text(int64_t* uval) const;
    +
    1635 XMLError QueryUnsigned64Text(uint64_t* uval) const;
    +
    1637 XMLError QueryBoolText( bool* bval ) const;
    +
    1639 XMLError QueryDoubleText( double* dval ) const;
    +
    1641 XMLError QueryFloatText( float* fval ) const;
    +
    1642
    +
    1643 int IntText(int defaultValue = 0) const;
    +
    1644
    +
    1646 unsigned UnsignedText(unsigned defaultValue = 0) const;
    +
    1648 int64_t Int64Text(int64_t defaultValue = 0) const;
    +
    1650 uint64_t Unsigned64Text(uint64_t defaultValue = 0) const;
    +
    1652 bool BoolText(bool defaultValue = false) const;
    +
    1654 double DoubleText(double defaultValue = 0) const;
    +
    1656 float FloatText(float defaultValue = 0) const;
    +
    1657
    + +
    1664 XMLComment* InsertNewComment(const char* comment);
    +
    1666 XMLText* InsertNewText(const char* text);
    + +
    1670 XMLUnknown* InsertNewUnknown(const char* text);
    +
    1671
    +
    1672
    +
    1673 // internal:
    +
    1674 enum ElementClosingType {
    +
    1675 OPEN, // <foo>
    +
    1676 CLOSED, // <foo/>
    +
    1677 CLOSING // </foo>
    +
    1678 };
    +
    1679 ElementClosingType ClosingType() const {
    +
    1680 return _closingType;
    +
    1681 }
    +
    1682 virtual XMLNode* ShallowClone( XMLDocument* document ) const override;
    +
    1683 virtual bool ShallowEqual( const XMLNode* compare ) const override;
    +
    1684
    +
    1685protected:
    +
    1686 char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr ) override;
    +
    1687
    +
    1688private:
    +
    1689 XMLElement( XMLDocument* doc );
    +
    1690 virtual ~XMLElement();
    +
    1691 XMLElement( const XMLElement& ); // not supported
    +
    1692 void operator=( const XMLElement& ); // not supported
    +
    1693
    +
    1694 XMLAttribute* FindOrCreateAttribute( const char* name );
    +
    1695 char* ParseAttributes( char* p, int* curLineNumPtr );
    +
    1696 static void DeleteAttribute( XMLAttribute* attribute );
    +
    1697 XMLAttribute* CreateAttribute();
    +
    1698
    +
    1699 enum { BUF_SIZE = 200 };
    +
    1700 ElementClosingType _closingType;
    +
    1701 // The attribute list is ordered; there is no 'lastAttribute'
    +
    1702 // because the list needs to be scanned for dupes before adding
    +
    1703 // a new attribute.
    +
    1704 XMLAttribute* _rootAttribute;
    +
    1705};
    +
    +
    1706
    +
    1707
    +
    1708enum Whitespace {
    +
    1709 PRESERVE_WHITESPACE,
    +
    1710 COLLAPSE_WHITESPACE,
    +
    1711 PEDANTIC_WHITESPACE
    +
    1712};
    +
    1713
    +
    1714
    +
    +
    1720class TINYXML2_LIB XMLDocument : public XMLNode
    +
    1721{
    +
    1722 friend class XMLElement;
    +
    1723 // Gives access to SetError and Push/PopDepth, but over-access for everything else.
    +
    1724 // Wishing C++ had "internal" scope.
    +
    1725 friend class XMLNode;
    +
    1726 friend class XMLText;
    +
    1727 friend class XMLComment;
    +
    1728 friend class XMLDeclaration;
    +
    1729 friend class XMLUnknown;
    +
    1730public:
    +
    1732 XMLDocument( bool processEntities = true, Whitespace whitespaceMode = PRESERVE_WHITESPACE );
    +
    1733 ~XMLDocument();
    +
    1734
    +
    +
    1735 virtual XMLDocument* ToDocument() override {
    +
    1736 TIXMLASSERT( this == _document );
    +
    1737 return this;
    +
    1738 }
    +
    +
    1739 virtual const XMLDocument* ToDocument() const override {
    +
    1740 TIXMLASSERT( this == _document );
    +
    1741 return this;
    +
    1742 }
    +
    1743
    +
    1754 XMLError Parse( const char* xml, size_t nBytes=static_cast<size_t>(-1) );
    +
    1755
    +
    1761 XMLError LoadFile( const char* filename );
    +
    1762
    +
    1774 XMLError LoadFile( FILE* );
    +
    1775
    +
    1781 XMLError SaveFile( const char* filename, bool compact = false );
    +
    1782
    +
    1790 XMLError SaveFile( FILE* fp, bool compact = false );
    +
    1791
    +
    1792 bool ProcessEntities() const {
    +
    1793 return _processEntities;
    +
    1794 }
    +
    1795 Whitespace WhitespaceMode() const {
    +
    1796 return _whitespaceMode;
    +
    1797 }
    +
    1798
    +
    +
    1802 bool HasBOM() const {
    +
    1803 return _writeBOM;
    +
    1804 }
    +
    +
    +
    1807 void SetBOM( bool useBOM ) {
    +
    1808 _writeBOM = useBOM;
    +
    1809 }
    +
    +
    1810
    +
    + +
    1815 return FirstChildElement();
    +
    1816 }
    +
    +
    1817 const XMLElement* RootElement() const {
    +
    1818 return FirstChildElement();
    +
    1819 }
    +
    1820
    +
    1835 void Print( XMLPrinter* streamer=0 ) const;
    +
    1836 virtual bool Accept( XMLVisitor* visitor ) const override;
    +
    1837
    +
    1843 XMLElement* NewElement( const char* name );
    +
    1849 XMLComment* NewComment( const char* comment );
    +
    1855 XMLText* NewText( const char* text );
    +
    1867 XMLDeclaration* NewDeclaration( const char* text=0 );
    +
    1873 XMLUnknown* NewUnknown( const char* text );
    +
    1874
    +
    1879 void DeleteNode( XMLNode* node );
    +
    1880
    + +
    1883
    +
    +
    1885 bool Error() const {
    +
    1886 return _errorID != XML_SUCCESS;
    +
    1887 }
    +
    +
    +
    1889 XMLError ErrorID() const {
    +
    1890 return _errorID;
    +
    1891 }
    +
    +
    1892 const char* ErrorName() const;
    +
    1893 static const char* ErrorIDToName(XMLError errorID);
    +
    1894
    +
    1898 const char* ErrorStr() const;
    +
    1899
    +
    1901 void PrintError() const;
    +
    1902
    +
    +
    1904 int ErrorLineNum() const
    +
    1905 {
    +
    1906 return _errorLineNum;
    +
    1907 }
    +
    +
    1908
    +
    1910 void Clear();
    +
    1911
    +
    1919 void DeepCopy(XMLDocument* target) const;
    +
    1920
    +
    1921 // internal
    +
    1922 char* Identify( char* p, XMLNode** node, bool first );
    +
    1923
    +
    1924 // internal
    +
    1925 void MarkInUse(const XMLNode* const);
    +
    1926
    +
    +
    1927 virtual XMLNode* ShallowClone( XMLDocument* /*document*/ ) const override{
    +
    1928 return 0;
    +
    1929 }
    +
    +
    +
    1930 virtual bool ShallowEqual( const XMLNode* /*compare*/ ) const override{
    +
    1931 return false;
    +
    1932 }
    +
    +
    1933
    +
    1934private:
    +
    1935 XMLDocument( const XMLDocument& ); // not supported
    +
    1936 void operator=( const XMLDocument& ); // not supported
    +
    1937
    +
    1938 bool _writeBOM;
    +
    1939 bool _processEntities;
    +
    1940 XMLError _errorID;
    +
    1941 Whitespace _whitespaceMode;
    +
    1942 mutable StrPair _errorStr;
    +
    1943 int _errorLineNum;
    +
    1944 char* _charBuffer;
    +
    1945 int _parseCurLineNum;
    +
    1946 int _parsingDepth;
    +
    1947 // Memory tracking does add some overhead.
    +
    1948 // However, the code assumes that you don't
    +
    1949 // have a bunch of unlinked nodes around.
    +
    1950 // Therefore it takes less memory to track
    +
    1951 // in the document vs. a linked list in the XMLNode,
    +
    1952 // and the performance is the same.
    +
    1953 DynArray<XMLNode*, 10> _unlinked;
    +
    1954
    +
    1955 MemPoolT< sizeof(XMLElement) > _elementPool;
    +
    1956 MemPoolT< sizeof(XMLAttribute) > _attributePool;
    +
    1957 MemPoolT< sizeof(XMLText) > _textPool;
    +
    1958 MemPoolT< sizeof(XMLComment) > _commentPool;
    +
    1959
    +
    1960 static const char* _errorNames[XML_ERROR_COUNT];
    +
    1961
    +
    1962 void Parse();
    +
    1963
    +
    1964 void SetError( XMLError error, int lineNum, const char* format, ... );
    +
    1965
    +
    1966 // Something of an obvious security hole, once it was discovered.
    +
    1967 // Either an ill-formed XML or an excessively deep one can overflow
    +
    1968 // the stack. Track stack depth, and error out if needed.
    +
    1969 class DepthTracker {
    +
    1970 public:
    +
    1971 explicit DepthTracker(XMLDocument * document) {
    +
    1972 this->_document = document;
    +
    1973 document->PushDepth();
    +
    1974 }
    +
    1975 ~DepthTracker() {
    +
    1976 _document->PopDepth();
    +
    1977 }
    +
    1978 private:
    +
    1979 XMLDocument * _document;
    +
    1980 };
    +
    1981 void PushDepth();
    +
    1982 void PopDepth();
    +
    1983
    +
    1984 template<class NodeType, int PoolElementSize>
    +
    1985 NodeType* CreateUnlinkedNode( MemPoolT<PoolElementSize>& pool );
    +
    1986};
    +
    +
    1987
    +
    1988template<class NodeType, int PoolElementSize>
    +
    1989inline NodeType* XMLDocument::CreateUnlinkedNode( MemPoolT<PoolElementSize>& pool )
    +
    1990{
    +
    1991 TIXMLASSERT( sizeof( NodeType ) == PoolElementSize );
    +
    1992 TIXMLASSERT( sizeof( NodeType ) == pool.ItemSize() );
    +
    1993 NodeType* returnNode = new (pool.Alloc()) NodeType( this );
    +
    1994 TIXMLASSERT( returnNode );
    +
    1995 returnNode->_memPool = &pool;
    +
    1996
    +
    1997 _unlinked.Push(returnNode);
    +
    1998 return returnNode;
    +
    1999}
    +
    2000
    +
    +
    2056class TINYXML2_LIB XMLHandle
    +
    2057{
    +
    2058public:
    +
    +
    2060 explicit XMLHandle( XMLNode* node ) : _node( node ) {
    +
    2061 }
    +
    +
    +
    2063 explicit XMLHandle( XMLNode& node ) : _node( &node ) {
    +
    2064 }
    +
    +
    +
    2066 XMLHandle( const XMLHandle& ref ) : _node( ref._node ) {
    +
    2067 }
    +
    +
    + +
    2070 _node = ref._node;
    +
    2071 return *this;
    +
    2072 }
    +
    +
    2073
    +
    + +
    2076 return XMLHandle( _node ? _node->FirstChild() : 0 );
    +
    2077 }
    +
    +
    +
    2079 XMLHandle FirstChildElement( const char* name = 0 ) {
    +
    2080 return XMLHandle( _node ? _node->FirstChildElement( name ) : 0 );
    +
    2081 }
    +
    +
    + +
    2084 return XMLHandle( _node ? _node->LastChild() : 0 );
    +
    2085 }
    +
    +
    +
    2087 XMLHandle LastChildElement( const char* name = 0 ) {
    +
    2088 return XMLHandle( _node ? _node->LastChildElement( name ) : 0 );
    +
    2089 }
    +
    +
    + +
    2092 return XMLHandle( _node ? _node->PreviousSibling() : 0 );
    +
    2093 }
    +
    +
    +
    2095 XMLHandle PreviousSiblingElement( const char* name = 0 ) {
    +
    2096 return XMLHandle( _node ? _node->PreviousSiblingElement( name ) : 0 );
    +
    2097 }
    +
    +
    + +
    2100 return XMLHandle( _node ? _node->NextSibling() : 0 );
    +
    2101 }
    +
    +
    +
    2103 XMLHandle NextSiblingElement( const char* name = 0 ) {
    +
    2104 return XMLHandle( _node ? _node->NextSiblingElement( name ) : 0 );
    +
    2105 }
    +
    +
    2106
    +
    + +
    2109 return _node;
    +
    2110 }
    +
    +
    + +
    2113 return ( _node ? _node->ToElement() : 0 );
    +
    2114 }
    +
    +
    + +
    2117 return ( _node ? _node->ToText() : 0 );
    +
    2118 }
    +
    +
    + +
    2121 return ( _node ? _node->ToUnknown() : 0 );
    +
    2122 }
    +
    +
    + +
    2125 return ( _node ? _node->ToDeclaration() : 0 );
    +
    2126 }
    +
    +
    2127
    +
    2128private:
    +
    2129 XMLNode* _node;
    +
    2130};
    +
    +
    2131
    +
    2132
    +
    +
    2137class TINYXML2_LIB XMLConstHandle
    +
    2138{
    +
    2139public:
    +
    2140 explicit XMLConstHandle( const XMLNode* node ) : _node( node ) {
    +
    2141 }
    +
    2142 explicit XMLConstHandle( const XMLNode& node ) : _node( &node ) {
    +
    2143 }
    +
    2144 XMLConstHandle( const XMLConstHandle& ref ) : _node( ref._node ) {
    +
    2145 }
    +
    2146
    +
    2147 XMLConstHandle& operator=( const XMLConstHandle& ref ) {
    +
    2148 _node = ref._node;
    +
    2149 return *this;
    +
    2150 }
    +
    2151
    +
    2152 const XMLConstHandle FirstChild() const {
    +
    2153 return XMLConstHandle( _node ? _node->FirstChild() : 0 );
    +
    2154 }
    +
    2155 const XMLConstHandle FirstChildElement( const char* name = 0 ) const {
    +
    2156 return XMLConstHandle( _node ? _node->FirstChildElement( name ) : 0 );
    +
    2157 }
    +
    2158 const XMLConstHandle LastChild() const {
    +
    2159 return XMLConstHandle( _node ? _node->LastChild() : 0 );
    +
    2160 }
    +
    2161 const XMLConstHandle LastChildElement( const char* name = 0 ) const {
    +
    2162 return XMLConstHandle( _node ? _node->LastChildElement( name ) : 0 );
    +
    2163 }
    +
    2164 const XMLConstHandle PreviousSibling() const {
    +
    2165 return XMLConstHandle( _node ? _node->PreviousSibling() : 0 );
    +
    2166 }
    +
    2167 const XMLConstHandle PreviousSiblingElement( const char* name = 0 ) const {
    +
    2168 return XMLConstHandle( _node ? _node->PreviousSiblingElement( name ) : 0 );
    +
    2169 }
    +
    2170 const XMLConstHandle NextSibling() const {
    +
    2171 return XMLConstHandle( _node ? _node->NextSibling() : 0 );
    +
    2172 }
    +
    2173 const XMLConstHandle NextSiblingElement( const char* name = 0 ) const {
    +
    2174 return XMLConstHandle( _node ? _node->NextSiblingElement( name ) : 0 );
    +
    2175 }
    +
    2176
    +
    2177
    +
    2178 const XMLNode* ToNode() const {
    +
    2179 return _node;
    +
    2180 }
    +
    2181 const XMLElement* ToElement() const {
    +
    2182 return ( _node ? _node->ToElement() : 0 );
    +
    2183 }
    +
    2184 const XMLText* ToText() const {
    +
    2185 return ( _node ? _node->ToText() : 0 );
    +
    2186 }
    +
    2187 const XMLUnknown* ToUnknown() const {
    +
    2188 return ( _node ? _node->ToUnknown() : 0 );
    +
    2189 }
    +
    2190 const XMLDeclaration* ToDeclaration() const {
    +
    2191 return ( _node ? _node->ToDeclaration() : 0 );
    +
    2192 }
    +
    2193
    +
    2194private:
    +
    2195 const XMLNode* _node;
    +
    2196};
    +
    +
    2197
    +
    2198
    +
    +
    2241class TINYXML2_LIB XMLPrinter : public XMLVisitor
    +
    2242{
    +
    2243public:
    +
    2250 XMLPrinter( FILE* file=0, bool compact = false, int depth = 0 );
    +
    2251 virtual ~XMLPrinter() {}
    +
    2252
    +
    2254 void PushHeader( bool writeBOM, bool writeDeclaration );
    +
    2258 void OpenElement( const char* name, bool compactMode=false );
    +
    2260 void PushAttribute( const char* name, const char* value );
    +
    2261 void PushAttribute( const char* name, int value );
    +
    2262 void PushAttribute( const char* name, unsigned value );
    +
    2263 void PushAttribute( const char* name, int64_t value );
    +
    2264 void PushAttribute( const char* name, uint64_t value );
    +
    2265 void PushAttribute( const char* name, bool value );
    +
    2266 void PushAttribute( const char* name, double value );
    +
    2268 virtual void CloseElement( bool compactMode=false );
    +
    2269
    +
    2271 void PushText( const char* text, bool cdata=false );
    +
    2273 void PushText( int value );
    +
    2275 void PushText( unsigned value );
    +
    2277 void PushText( int64_t value );
    +
    2279 void PushText( uint64_t value );
    +
    2281 void PushText( bool value );
    +
    2283 void PushText( float value );
    +
    2285 void PushText( double value );
    +
    2286
    +
    2288 void PushComment( const char* comment );
    +
    2289
    +
    2290 void PushDeclaration( const char* value );
    +
    2291 void PushUnknown( const char* value );
    +
    2292
    +
    2293 virtual bool VisitEnter( const XMLDocument& /*doc*/ ) override;
    +
    +
    2294 virtual bool VisitExit( const XMLDocument& /*doc*/ ) override {
    +
    2295 return true;
    +
    2296 }
    +
    +
    2297
    +
    2298 virtual bool VisitEnter( const XMLElement& element, const XMLAttribute* attribute ) override;
    +
    2299 virtual bool VisitExit( const XMLElement& element ) override;
    +
    2300
    +
    2301 virtual bool Visit( const XMLText& text ) override;
    +
    2302 virtual bool Visit( const XMLComment& comment ) override;
    +
    2303 virtual bool Visit( const XMLDeclaration& declaration ) override;
    +
    2304 virtual bool Visit( const XMLUnknown& unknown ) override;
    +
    2305
    +
    +
    2310 const char* CStr() const {
    +
    2311 return _buffer.Mem();
    +
    2312 }
    +
    +
    +
    2318 int CStrSize() const {
    +
    2319 return _buffer.Size();
    +
    2320 }
    +
    +
    +
    2325 void ClearBuffer( bool resetToFirstElement = true ) {
    +
    2326 _buffer.Clear();
    +
    2327 _buffer.Push(0);
    +
    2328 _firstElement = resetToFirstElement;
    +
    2329 }
    +
    +
    2330
    +
    2331protected:
    +
    2332 virtual bool CompactMode( const XMLElement& ) { return _compactMode; }
    +
    2333
    +
    2337 virtual void PrintSpace( int depth );
    +
    2338 virtual void Print( const char* format, ... );
    +
    2339 virtual void Write( const char* data, size_t size );
    +
    2340 virtual void Putc( char ch );
    +
    2341
    +
    2342 inline void Write(const char* data) { Write(data, strlen(data)); }
    +
    2343
    +
    2344 void SealElementIfJustOpened();
    +
    2345 bool _elementJustOpened;
    +
    2346 DynArray< const char*, 10 > _stack;
    +
    2347
    +
    2348private:
    +
    2353 void PrepareForNewNode( bool compactMode );
    +
    2354 void PrintString( const char*, bool restrictedEntitySet ); // prints out, after detecting entities.
    +
    2355
    +
    2356 bool _firstElement;
    +
    2357 FILE* _fp;
    +
    2358 int _depth;
    +
    2359 int _textDepth;
    +
    2360 bool _processEntities;
    +
    2361 bool _compactMode;
    +
    2362
    +
    2363 enum {
    +
    2364 ENTITY_RANGE = 64,
    +
    2365 BUF_SIZE = 200
    +
    2366 };
    +
    2367 bool _entityFlag[ENTITY_RANGE];
    +
    2368 bool _restrictedEntityFlag[ENTITY_RANGE];
    +
    2369
    +
    2370 DynArray< char, 20 > _buffer;
    +
    2371
    +
    2372 // Prohibit cloning, intentionally not implemented
    +
    2373 XMLPrinter( const XMLPrinter& );
    +
    2374 XMLPrinter& operator=( const XMLPrinter& );
    +
    2375};
    +
    +
    2376
    +
    2377
    +
    2378} // tinyxml2
    +
    2379
    +
    2380#if defined(_MSC_VER)
    +
    2381# pragma warning(pop)
    +
    2382#endif
    +
    2383
    +
    2384#endif // TINYXML2_INCLUDED
    +
    Definition tinyxml2.h:1144
    +
    int GetLineNum() const
    Gets the line number the attribute is in, if the document was parsed from a file.
    Definition tinyxml2.h:1154
    +
    XMLError QueryFloatValue(float *value) const
    See QueryIntValue.
    +
    unsigned UnsignedValue() const
    Query as an unsigned integer. See IntValue()
    Definition tinyxml2.h:1184
    +
    void SetAttribute(uint64_t value)
    Set the attribute to value.
    +
    float FloatValue() const
    Query as a float. See IntValue()
    Definition tinyxml2.h:1202
    +
    XMLError QueryDoubleValue(double *value) const
    See QueryIntValue.
    +
    void SetAttribute(const char *value)
    Set the attribute to a string value.
    +
    XMLError QueryUnsignedValue(unsigned int *value) const
    See QueryIntValue.
    +
    double DoubleValue() const
    Query as a double. See IntValue()
    Definition tinyxml2.h:1196
    +
    XMLError QueryInt64Value(int64_t *value) const
    See QueryIntValue.
    +
    const char * Name() const
    The name of the attribute.
    +
    XMLError QueryBoolValue(bool *value) const
    See QueryIntValue.
    +
    XMLError QueryIntValue(int *value) const
    +
    void SetAttribute(int64_t value)
    Set the attribute to value.
    +
    bool BoolValue() const
    Query as a boolean. See IntValue()
    Definition tinyxml2.h:1190
    +
    void SetAttribute(double value)
    Set the attribute to value.
    +
    const XMLAttribute * Next() const
    The next attribute in the list.
    Definition tinyxml2.h:1157
    +
    const char * Value() const
    The value of the attribute.
    +
    void SetAttribute(bool value)
    Set the attribute to value.
    +
    void SetAttribute(int value)
    Set the attribute to value.
    +
    int IntValue() const
    Definition tinyxml2.h:1165
    +
    void SetAttribute(unsigned value)
    Set the attribute to value.
    +
    void SetAttribute(float value)
    Set the attribute to value.
    +
    XMLError QueryUnsigned64Value(uint64_t *value) const
    See QueryIntValue.
    +
    Definition tinyxml2.h:1035
    +
    virtual bool Accept(XMLVisitor *visitor) const override
    +
    virtual XMLNode * ShallowClone(XMLDocument *document) const override
    +
    virtual bool ShallowEqual(const XMLNode *compare) const override
    +
    virtual XMLComment * ToComment() override
    Safely cast to a Comment, or null.
    Definition tinyxml2.h:1038
    +
    Definition tinyxml2.h:2138
    +
    Definition tinyxml2.h:1074
    +
    virtual XMLNode * ShallowClone(XMLDocument *document) const override
    +
    virtual bool ShallowEqual(const XMLNode *compare) const override
    +
    virtual XMLDeclaration * ToDeclaration() override
    Safely cast to a Declaration, or null.
    Definition tinyxml2.h:1077
    +
    virtual bool Accept(XMLVisitor *visitor) const override
    +
    Definition tinyxml2.h:1721
    +
    virtual XMLNode * ShallowClone(XMLDocument *) const override
    Definition tinyxml2.h:1927
    +
    XMLElement * RootElement()
    Definition tinyxml2.h:1814
    +
    void SetBOM(bool useBOM)
    Definition tinyxml2.h:1807
    +
    void PrintError() const
    A (trivial) utility function that prints the ErrorStr() to stdout.
    +
    virtual XMLDocument * ToDocument() override
    Safely cast to a Document, or null.
    Definition tinyxml2.h:1735
    +
    XMLError LoadFile(const char *filename)
    +
    bool HasBOM() const
    Definition tinyxml2.h:1802
    +
    bool Error() const
    Return true if there was an error parsing the document.
    Definition tinyxml2.h:1885
    +
    XMLComment * NewComment(const char *comment)
    +
    XMLElement * NewElement(const char *name)
    +
    void ClearError()
    Clears the error flags.
    +
    XMLUnknown * NewUnknown(const char *text)
    +
    int ErrorLineNum() const
    Return the line where the error occurred, or zero if unknown.
    Definition tinyxml2.h:1904
    +
    XMLDocument(bool processEntities=true, Whitespace whitespaceMode=PRESERVE_WHITESPACE)
    constructor
    +
    XMLError LoadFile(FILE *)
    +
    void Clear()
    Clear the document, resetting it to the initial state.
    +
    XMLError SaveFile(const char *filename, bool compact=false)
    +
    virtual bool Accept(XMLVisitor *visitor) const override
    +
    void Print(XMLPrinter *streamer=0) const
    +
    XMLError SaveFile(FILE *fp, bool compact=false)
    +
    void DeleteNode(XMLNode *node)
    +
    virtual bool ShallowEqual(const XMLNode *) const override
    Definition tinyxml2.h:1930
    +
    XMLText * NewText(const char *text)
    +
    XMLDeclaration * NewDeclaration(const char *text=0)
    +
    const char * ErrorStr() const
    +
    XMLError Parse(const char *xml, size_t nBytes=static_cast< size_t >(-1))
    +
    void DeepCopy(XMLDocument *target) const
    +
    XMLError ErrorID() const
    Return the errorID.
    Definition tinyxml2.h:1889
    +
    Definition tinyxml2.h:1268
    +
    const char * GetText() const
    +
    double DoubleAttribute(const char *name, double defaultValue=0) const
    See IntAttribute()
    +
    void SetAttribute(const char *name, const char *value)
    Sets the named attribute to value.
    Definition tinyxml2.h:1468
    +
    XMLError QueryInt64Text(int64_t *uval) const
    See QueryIntText()
    +
    XMLError QueryUnsigned64Attribute(const char *name, uint64_t *value) const
    See QueryIntAttribute()
    Definition tinyxml2.h:1373
    +
    XMLError QueryBoolAttribute(const char *name, bool *value) const
    See QueryIntAttribute()
    Definition tinyxml2.h:1382
    +
    XMLError QueryUnsignedText(unsigned *uval) const
    See QueryIntText()
    +
    const XMLAttribute * FindAttribute(const char *name) const
    Query a specific attribute in the list.
    +
    void SetText(const char *inText)
    +
    uint64_t Unsigned64Attribute(const char *name, uint64_t defaultValue=0) const
    See IntAttribute()
    +
    void SetAttribute(const char *name, double value)
    Sets the named attribute to value.
    Definition tinyxml2.h:1501
    +
    XMLError QueryUnsignedAttribute(const char *name, unsigned int *value) const
    See QueryIntAttribute()
    Definition tinyxml2.h:1355
    +
    XMLError QueryBoolText(bool *bval) const
    See QueryIntText()
    +
    float FloatText(float defaultValue=0) const
    See QueryIntText()
    +
    const char * Attribute(const char *name, const char *value=0) const
    +
    unsigned UnsignedText(unsigned defaultValue=0) const
    See QueryIntText()
    +
    const XMLAttribute * FirstAttribute() const
    Return the first attribute in the list.
    Definition tinyxml2.h:1517
    +
    void SetText(float value)
    Convenience method for setting text inside an element. See SetText() for important limitations.
    +
    bool BoolAttribute(const char *name, bool defaultValue=false) const
    See IntAttribute()
    +
    void SetAttribute(const char *name, float value)
    Sets the named attribute to value.
    Definition tinyxml2.h:1506
    +
    XMLError QueryAttribute(const char *name, int *value) const
    Definition tinyxml2.h:1435
    +
    XMLError QueryDoubleAttribute(const char *name, double *value) const
    See QueryIntAttribute()
    Definition tinyxml2.h:1390
    +
    int64_t Int64Attribute(const char *name, int64_t defaultValue=0) const
    See IntAttribute()
    +
    void SetText(double value)
    Convenience method for setting text inside an element. See SetText() for important limitations.
    +
    XMLError QueryDoubleText(double *dval) const
    See QueryIntText()
    +
    bool BoolText(bool defaultValue=false) const
    See QueryIntText()
    +
    virtual XMLNode * ShallowClone(XMLDocument *document) const override
    +
    void SetText(uint64_t value)
    Convenience method for setting text inside an element. See SetText() for important limitations.
    +
    void SetText(int64_t value)
    Convenience method for setting text inside an element. See SetText() for important limitations.
    +
    void SetText(unsigned value)
    Convenience method for setting text inside an element. See SetText() for important limitations.
    +
    XMLError QueryInt64Attribute(const char *name, int64_t *value) const
    See QueryIntAttribute()
    Definition tinyxml2.h:1364
    +
    XMLDeclaration * InsertNewDeclaration(const char *text)
    See InsertNewChildElement()
    +
    double DoubleText(double defaultValue=0) const
    See QueryIntText()
    +
    virtual XMLElement * ToElement() override
    Safely cast to an Element, or null.
    Definition tinyxml2.h:1280
    +
    XMLError QueryIntAttribute(const char *name, int *value) const
    Definition tinyxml2.h:1346
    +
    XMLError QueryIntText(int *ival) const
    +
    int IntAttribute(const char *name, int defaultValue=0) const
    +
    void SetName(const char *str, bool staticMem=false)
    Set the name of the element.
    Definition tinyxml2.h:1276
    +
    void SetAttribute(const char *name, bool value)
    Sets the named attribute to value.
    Definition tinyxml2.h:1496
    +
    int64_t Int64Text(int64_t defaultValue=0) const
    See QueryIntText()
    +
    virtual bool ShallowEqual(const XMLNode *compare) const override
    +
    void SetAttribute(const char *name, int value)
    Sets the named attribute to value.
    Definition tinyxml2.h:1473
    +
    XMLComment * InsertNewComment(const char *comment)
    See InsertNewChildElement()
    +
    void SetAttribute(const char *name, int64_t value)
    Sets the named attribute to value.
    Definition tinyxml2.h:1484
    +
    float FloatAttribute(const char *name, float defaultValue=0) const
    See IntAttribute()
    +
    const char * Name() const
    Get the name of an element (which is the Value() of the node.)
    Definition tinyxml2.h:1272
    +
    XMLElement * InsertNewChildElement(const char *name)
    +
    XMLError QueryUnsigned64Text(uint64_t *uval) const
    See QueryIntText()
    +
    XMLText * InsertNewText(const char *text)
    See InsertNewChildElement()
    +
    virtual bool Accept(XMLVisitor *visitor) const override
    +
    XMLError QueryFloatAttribute(const char *name, float *value) const
    See QueryIntAttribute()
    Definition tinyxml2.h:1398
    +
    void SetAttribute(const char *name, uint64_t value)
    Sets the named attribute to value.
    Definition tinyxml2.h:1490
    +
    XMLError QueryStringAttribute(const char *name, const char **value) const
    See QueryIntAttribute()
    Definition tinyxml2.h:1407
    +
    void SetAttribute(const char *name, unsigned value)
    Sets the named attribute to value.
    Definition tinyxml2.h:1478
    +
    void SetText(bool value)
    Convenience method for setting text inside an element. See SetText() for important limitations.
    +
    void SetText(int value)
    Convenience method for setting text inside an element. See SetText() for important limitations.
    +
    void DeleteAttribute(const char *name)
    +
    uint64_t Unsigned64Text(uint64_t defaultValue=0) const
    See QueryIntText()
    +
    XMLError QueryFloatText(float *fval) const
    See QueryIntText()
    +
    XMLUnknown * InsertNewUnknown(const char *text)
    See InsertNewChildElement()
    +
    unsigned UnsignedAttribute(const char *name, unsigned defaultValue=0) const
    See IntAttribute()
    +
    Definition tinyxml2.h:2057
    +
    XMLHandle PreviousSibling()
    Get the previous sibling of this handle.
    Definition tinyxml2.h:2091
    +
    XMLHandle LastChildElement(const char *name=0)
    Get the last child element of this handle.
    Definition tinyxml2.h:2087
    +
    XMLHandle FirstChild()
    Get the first child of this handle.
    Definition tinyxml2.h:2075
    +
    XMLNode * ToNode()
    Safe cast to XMLNode. This can return null.
    Definition tinyxml2.h:2108
    +
    XMLHandle FirstChildElement(const char *name=0)
    Get the first child element of this handle.
    Definition tinyxml2.h:2079
    +
    XMLHandle PreviousSiblingElement(const char *name=0)
    Get the previous sibling element of this handle.
    Definition tinyxml2.h:2095
    +
    XMLDeclaration * ToDeclaration()
    Safe cast to XMLDeclaration. This can return null.
    Definition tinyxml2.h:2124
    +
    XMLHandle(XMLNode *node)
    Create a handle from any node (at any depth of the tree.) This can be a null pointer.
    Definition tinyxml2.h:2060
    +
    XMLHandle LastChild()
    Get the last child of this handle.
    Definition tinyxml2.h:2083
    +
    XMLHandle & operator=(const XMLHandle &ref)
    Assignment.
    Definition tinyxml2.h:2069
    +
    XMLHandle(XMLNode &node)
    Create a handle from a node.
    Definition tinyxml2.h:2063
    +
    XMLHandle NextSibling()
    Get the next sibling of this handle.
    Definition tinyxml2.h:2099
    +
    XMLElement * ToElement()
    Safe cast to XMLElement. This can return null.
    Definition tinyxml2.h:2112
    +
    XMLText * ToText()
    Safe cast to XMLText. This can return null.
    Definition tinyxml2.h:2116
    +
    XMLUnknown * ToUnknown()
    Safe cast to XMLUnknown. This can return null.
    Definition tinyxml2.h:2120
    +
    XMLHandle NextSiblingElement(const char *name=0)
    Get the next sibling element of this handle.
    Definition tinyxml2.h:2103
    +
    XMLHandle(const XMLHandle &ref)
    Copy constructor.
    Definition tinyxml2.h:2066
    +
    Definition tinyxml2.h:672
    +
    void SetUserData(void *userData)
    Definition tinyxml2.h:942
    + +
    const char * Value() const
    +
    void SetValue(const char *val, bool staticMem=false)
    +
    virtual XMLText * ToText()
    Safely cast to Text, or null.
    Definition tinyxml2.h:693
    +
    virtual XMLDeclaration * ToDeclaration()
    Safely cast to a Declaration, or null.
    Definition tinyxml2.h:705
    +
    const XMLElement * NextSiblingElement(const char *name=0) const
    Get the next (right) sibling element of this node, with an optionally supplied name.
    +
    void * GetUserData() const
    Definition tinyxml2.h:949
    +
    const XMLElement * FirstChildElement(const char *name=0) const
    +
    void DeleteChild(XMLNode *node)
    +
    XMLNode * DeepClone(XMLDocument *target) const
    +
    XMLDocument * GetDocument()
    Get the XMLDocument that owns this XMLNode.
    Definition tinyxml2.h:683
    +
    const XMLNode * Parent() const
    Get the parent of this node on the DOM.
    Definition tinyxml2.h:758
    +
    virtual XMLComment * ToComment()
    Safely cast to a Comment, or null.
    Definition tinyxml2.h:697
    +
    const XMLElement * LastChildElement(const char *name=0) const
    +
    virtual XMLDocument * ToDocument()
    Safely cast to a Document, or null.
    Definition tinyxml2.h:701
    +
    const XMLNode * LastChild() const
    Get the last child node, or null if none exists.
    Definition tinyxml2.h:790
    +
    const XMLDocument * GetDocument() const
    Get the XMLDocument that owns this XMLNode.
    Definition tinyxml2.h:678
    +
    virtual bool ShallowEqual(const XMLNode *compare) const =0
    +
    virtual bool Accept(XMLVisitor *visitor) const =0
    +
    virtual XMLNode * ShallowClone(XMLDocument *document) const =0
    +
    XMLNode * InsertAfterChild(XMLNode *afterThis, XMLNode *addThis)
    +
    const XMLNode * PreviousSibling() const
    Get the previous (left) sibling node of this node.
    Definition tinyxml2.h:808
    +
    virtual XMLElement * ToElement()
    Safely cast to an Element, or null.
    Definition tinyxml2.h:689
    +
    const XMLElement * PreviousSiblingElement(const char *name=0) const
    Get the previous (left) sibling element of this node, with an optionally supplied name.
    +
    int GetLineNum() const
    Gets the line number the node is in, if the document was parsed from a file.
    Definition tinyxml2.h:755
    +
    virtual XMLUnknown * ToUnknown()
    Safely cast to an Unknown, or null.
    Definition tinyxml2.h:709
    +
    const XMLNode * FirstChild() const
    Get the first child node, or null if none exists.
    Definition tinyxml2.h:772
    +
    bool NoChildren() const
    Returns true if this node has no children.
    Definition tinyxml2.h:767
    +
    XMLNode * InsertFirstChild(XMLNode *addThis)
    +
    XMLNode * InsertEndChild(XMLNode *addThis)
    +
    const XMLNode * NextSibling() const
    Get the next (right) sibling node of this node.
    Definition tinyxml2.h:824
    +
    Definition tinyxml2.h:2242
    +
    virtual void PrintSpace(int depth)
    +
    void PushHeader(bool writeBOM, bool writeDeclaration)
    +
    void PushText(const char *text, bool cdata=false)
    Add a text node.
    +
    void PushText(float value)
    Add a text node from a float.
    +
    void OpenElement(const char *name, bool compactMode=false)
    +
    virtual bool VisitExit(const XMLDocument &) override
    Visit a document.
    Definition tinyxml2.h:2294
    +
    virtual bool Visit(const XMLUnknown &unknown) override
    Visit an unknown node.
    +
    int CStrSize() const
    Definition tinyxml2.h:2318
    +
    void PushText(int value)
    Add a text node from an integer.
    +
    void PushText(bool value)
    Add a text node from a bool.
    +
    virtual bool VisitEnter(const XMLElement &element, const XMLAttribute *attribute) override
    Visit an element.
    +
    void PushText(uint64_t value)
    Add a text node from an unsigned 64bit integer.
    +
    virtual bool Visit(const XMLDeclaration &declaration) override
    Visit a declaration.
    +
    void PushText(unsigned value)
    Add a text node from an unsigned.
    +
    void ClearBuffer(bool resetToFirstElement=true)
    Definition tinyxml2.h:2325
    +
    virtual bool VisitEnter(const XMLDocument &) override
    Visit a document.
    +
    virtual bool Visit(const XMLComment &comment) override
    Visit a comment node.
    +
    void PushText(int64_t value)
    Add a text node from a signed 64bit integer.
    +
    virtual bool VisitExit(const XMLElement &element) override
    Visit an element.
    +
    void PushAttribute(const char *name, const char *value)
    If streaming, add an attribute to an open element.
    +
    XMLPrinter(FILE *file=0, bool compact=false, int depth=0)
    +
    void PushText(double value)
    Add a text node from a double.
    +
    const char * CStr() const
    Definition tinyxml2.h:2310
    +
    virtual void CloseElement(bool compactMode=false)
    If streaming, close the Element.
    +
    virtual bool Visit(const XMLText &text) override
    Visit a text node.
    +
    void PushComment(const char *comment)
    Add a comment.
    +
    Definition tinyxml2.h:995
    +
    virtual bool ShallowEqual(const XMLNode *compare) const override
    +
    virtual XMLText * ToText() override
    Safely cast to Text, or null.
    Definition tinyxml2.h:1000
    +
    virtual XMLNode * ShallowClone(XMLDocument *document) const override
    +
    virtual bool Accept(XMLVisitor *visitor) const override
    +
    bool CData() const
    Returns true if this is a CDATA text element.
    Definition tinyxml2.h:1012
    +
    void SetCData(bool isCData)
    Declare whether this should be CDATA or standard text.
    Definition tinyxml2.h:1008
    +
    Definition tinyxml2.h:1109
    +
    virtual bool ShallowEqual(const XMLNode *compare) const override
    +
    virtual XMLNode * ShallowClone(XMLDocument *document) const override
    +
    virtual XMLUnknown * ToUnknown() override
    Safely cast to an Unknown, or null.
    Definition tinyxml2.h:1112
    +
    virtual bool Accept(XMLVisitor *visitor) const override
    +
    Definition tinyxml2.h:479
    +
    virtual bool Visit(const XMLUnknown &)
    Visit an unknown node.
    Definition tinyxml2.h:514
    +
    virtual bool VisitExit(const XMLDocument &)
    Visit a document.
    Definition tinyxml2.h:488
    +
    virtual bool VisitExit(const XMLElement &)
    Visit an element.
    Definition tinyxml2.h:497
    +
    virtual bool VisitEnter(const XMLDocument &)
    Visit a document.
    Definition tinyxml2.h:484
    +
    virtual bool Visit(const XMLComment &)
    Visit a comment node.
    Definition tinyxml2.h:510
    +
    virtual bool Visit(const XMLDeclaration &)
    Visit a declaration.
    Definition tinyxml2.h:502
    +
    virtual bool Visit(const XMLText &)
    Visit a text node.
    Definition tinyxml2.h:506
    +
    virtual bool VisitEnter(const XMLElement &, const XMLAttribute *)
    Visit an element.
    Definition tinyxml2.h:493
    +
    + + + + diff --git a/Engine/lib/tinyxml2/dox b/Engine/lib/tinyxml2/dox new file mode 100644 index 000000000..a3c30672b --- /dev/null +++ b/Engine/lib/tinyxml2/dox @@ -0,0 +1,2441 @@ +# Doxyfile 1.8.13 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all text +# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv +# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv +# for the list of possible encodings. +# The default value is: UTF-8. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + +PROJECT_NAME = "TinyXML-2" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. + +PROJECT_NUMBER = 10.0.0 + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = + +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. + +PROJECT_LOGO = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where doxygen was started. If +# left blank the current directory will be used. + +OUTPUT_DIRECTORY = . + +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- +# directories (in 2 levels) under the output directory of each output format and +# will distribute the generated files over these directories. Enabling this +# option can be useful when feeding doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise causes +# performance problems for the file system. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, +# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), +# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, +# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, +# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, +# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, +# Ukrainian and Vietnamese. +# The default value is: English. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. +# The default value is: YES. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# doxygen will generate a detailed section even if there is only a brief +# description. +# The default value is: NO. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. + +FULL_PATH_NAMES = YES + +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# first line (until the first dot) of a Javadoc-style comment as the brief +# description. If set to NO, the Javadoc-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. + +JAVADOC_AUTOBRIEF = NO + +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:\n" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". You can put \n's in the value part of an alias to insert +# newlines. + +ALIASES = + +# This tag can be used to specify a number of word-keyword mappings (TCL only). +# A mapping has the form "name=value". For example adding "class=itcl::class" +# will allow you to use the command class in the itcl::class meaning. + +TCL_SUBST = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by doxygen: IDL, Java, Javascript, +# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: +# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: +# Fortran. In the later case the parser tries to guess whether the code is fixed +# or free formatted code, this is the default for Fortran type files), VHDL. For +# instance to make doxygen treat .inc files as Fortran files (default is PHP), +# and .f files as C (default is Fortran), use: inc=Fortran f=C. +# +# Note: For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. + +EXTENSION_MAPPING = + +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See http://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up +# to that level are automatically included in the table of contents, even if +# they do not have an id attribute. +# Note: This feature currently applies only to Markdown headings. +# Minimum value: 0, maximum value: 99, default value: 0. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +TOC_INCLUDE_HEADINGS = 0 + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen +# will parse them like normal C++ but will assume all classes use public instead +# of private inheritance when no explicit protection keyword is present. +# The default value is: NO. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# If one adds a struct or class to a group and this option is enabled, then also +# any nested class or struct is added to the same group. By default this option +# is disabled and one has to add nested compounds explicitly via \ingroup. +# The default value is: NO. + +GROUP_NESTED_COMPOUNDS = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. If set to YES, local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO, only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = YES + +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO, these classes will be included in the various overviews. This option +# has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_CLASSES = YES + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# (class|struct|union) declarations. If set to NO, these declarations will be +# included in the documentation. +# The default value is: NO. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file +# names in lower-case letters. If set to YES, upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. +# The default value is: system dependent. + +CASE_SENSE_NAMES = NO + +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = NO + +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = YES + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. +# The default value is: YES. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. +# The default value is: YES. + +GENERATE_TODOLIST = NO + +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. +# The default value is: YES. + +GENERATE_TESTLIST = NO + +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + +GENERATE_BUGLIST = NO + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if ... \endif and \cond +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES, the +# list will mention the files that were used to generate the documentation. +# The default value is: YES. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. See also \cite for info how to create references. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = YES + +# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = NO + +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some parameters +# in a documented function, or documenting parameters that don't exist or using +# markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO, doxygen will only warn about wrong or incomplete +# parameter documentation, but not about the absence of documentation. +# The default value is: NO. + +WARN_NO_PARAMDOC = NO + +# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when +# a warning is encountered. +# The default value is: NO. + +WARN_AS_ERROR = NO + +# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# The default value is: $file:$line: $text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING +# Note: If this tag is empty the current directory is searched. + +INPUT = tinyxml2.h \ + xmltest.cpp \ + readme.md + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: http://www.gnu.org/software/libiconv) for the list of +# possible encodings. +# The default value is: UTF-8. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# read by doxygen. +# +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, +# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, +# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, +# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, +# *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf and *.qsf. + +FILE_PATTERNS = + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories use the pattern */test/* + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). + +EXAMPLE_PATH = . + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# +# +# where is the value of the INPUT_FILTER tag, and is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = readme.md + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# classes and enums directly into the documentation. +# The default value is: NO. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# function all documented functions referencing it will be listed. +# The default value is: NO. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see http://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the config file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = YES + +# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the +# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the +# cost of reduced performance. This can be particularly helpful with template +# rich C++ code for which doxygen's built-in parser lacks the necessary type +# information. +# Note: The availability of this option depends on whether or not doxygen was +# generated with the -Duse-libclang=ON option for CMake. +# The default value is: NO. + +CLANG_ASSISTED_PARSING = NO + +# If clang assisted parsing is enabled you can provide the compiler with command +# line options that you would normally use when invoking the compiler. Note that +# the include paths will already be set by doxygen for the files and directories +# specified with INPUT and INCLUDE_PATH. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +CLANG_OPTIONS = + +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. + +ALPHABETICAL_INDEX = YES + +# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in +# which the alphabetical index list will be split. +# Minimum value: 1, maximum value: 20, default value: 5. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all classes will +# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag +# can be used to specify a prefix (or a list of prefixes) that should be ignored +# while generating the index headers. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# The default value is: YES. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_OUTPUT = docs + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). For an example see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the style sheet and background images according to +# this color. Hue is specified as an angle on a colorwheel, see +# http://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use grayscales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting this +# to YES can help to show when doxygen was last run and thus if the +# documentation is up to date. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_TIMESTAMP = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = NO + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: http://developer.apple.com/tools/xcode/), introduced with +# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a +# Makefile in the HTML output directory. Running make will produce the docset in +# that directory and running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on +# Windows. +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = NO + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler (hhc.exe). If non-empty, +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = + +# The GENERATE_CHI flag controls if a separate .chi index file is generated +# (YES) or that it should be included in the master .chm file (NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +TOC_EXPAND = YES + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- +# folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location of Qt's +# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the +# generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine-tune the look of the index. As an example, the default style +# sheet generated by doxygen has an example that shows how to put an image at +# the root of the tree instead of the PROJECT_NAME. Since the tree basically has +# the same information as the tab index, you could consider setting +# DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = NO + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 250 + +# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are not +# supported properly for IE 6.0, but are supported on all modern browsers. +# +# Note that when changing this option you need to delete any form_*.png files in +# the HTML output directory before the changes have effect. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_TRANSPARENT = YES + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# http://www.mathjax.org) which uses client side Javascript for the rendering +# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = NO + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. See the MathJax site (see: +# http://docs.mathjax.org/en/latest/output.html) for more details. +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility), NativeMML (i.e. MathML) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from http://www.mathjax.org before deployment. +# The default value is: http://cdn.mathjax.org/mathjax/latest. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use + S +# (what the is depends on the OS and browser, but it is typically +# , /
  • Fu)i_fkE7-fg!?|!{0^|cG&O$#*#8$b|6|yH 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 z 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

    eFFKM~R_Or=@@PC)4%T1b7u7dwT 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%0A{lZar1X0W! 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�HJsQVR!)TJRb4{-U&no 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 Date: Sun, 23 Mar 2025 20:53:32 -0500 Subject: [PATCH 90/91] correct further flaws with albedo handling --- .../core/rendering/shaders/gl/lighting.glsl | 12 ++++++----- .../game/core/rendering/shaders/lighting.hlsl | 20 ++++++++++++++----- .../advanced/gl/reflectionProbeArrayP.glsl | 5 +++-- .../advanced/reflectionProbeArrayP.hlsl | 13 ++++++++---- 4 files changed, 34 insertions(+), 16 deletions(-) diff --git a/Templates/BaseGame/game/core/rendering/shaders/gl/lighting.glsl b/Templates/BaseGame/game/core/rendering/shaders/gl/lighting.glsl index a4775b919..315e3434c 100644 --- a/Templates/BaseGame/game/core/rendering/shaders/gl/lighting.glsl +++ b/Templates/BaseGame/game/core/rendering/shaders/gl/lighting.glsl @@ -227,6 +227,7 @@ vec3 evaluateStandardBRDF(Surface surface, SurfaceToLight surfaceToLight) { // Compute Fresnel term vec3 F = F_Schlick(surface.f0, surfaceToLight.HdotV); + F += lerp(vec3(0.04f,0.04f,0.04f), surface.baseColor.rgb, surface.metalness); // GGX Normal Distribution Function float D = D_GGX(surfaceToLight.NdotH, surface.linearRoughness); @@ -583,12 +584,13 @@ vec4 computeForwardProbes(Surface surface, } vec2 envBRDF = textureLod(BRDFTexture, vec2(surface.NdotV, surface.roughness),0).rg; - vec3 diffuse = irradiance * surface.baseColor.rgb * (1.0 - surface.metalness); - vec3 specularCol = specular * lerp(envBRDF.y, envBRDF.x, surface.metalness * (1.0 - surface.roughness)); + vec3 diffuse = irradiance * lerp(surface.baseColor.rgb, vec3(0.04f,0.04f,0.04f), surface.metalness); + vec3 specularCol = ((specular + surface.baseColor.rgb) * envBRDF.x + envBRDF.y)*surface.metalness; // Final color output after environment lighting vec3 finalColor = diffuse + specularCol; finalColor *= surface.ao; + if(isCapturing == 1) return vec4(lerp((finalColor), surface.baseColor.rgb,surface.metalness),0); else @@ -735,13 +737,13 @@ vec4 debugVizForwardProbes(Surface surface, } vec2 envBRDF = textureLod(BRDFTexture, vec2(surface.NdotV, surface.roughness),0).rg; - vec3 diffuse = irradiance * surface.baseColor.rgb * (1.0 - surface.metalness); - vec3 specularCol = specular * lerp(envBRDF.y, envBRDF.x, surface.metalness * (1.0 - surface.roughness)); + vec3 diffuse = irradiance * lerp(surface.baseColor.rgb, vec3(0.04f,0.04f,0.04f), surface.metalness); + vec3 specularCol = ((specular + surface.baseColor.rgb) * envBRDF.x + envBRDF.y)*surface.metalness; - specularCol *= surface.metalness + (1.0 - surface.roughness); // Final color output after environment lighting vec3 finalColor = diffuse + specularCol; finalColor *= surface.ao; + if(isCapturing == 1) return vec4(lerp((finalColor), surface.baseColor.rgb,surface.metalness),0); else diff --git a/Templates/BaseGame/game/core/rendering/shaders/lighting.hlsl b/Templates/BaseGame/game/core/rendering/shaders/lighting.hlsl index 2d1c7a983..c125fe9e6 100644 --- a/Templates/BaseGame/game/core/rendering/shaders/lighting.hlsl +++ b/Templates/BaseGame/game/core/rendering/shaders/lighting.hlsl @@ -228,6 +228,7 @@ float3 evaluateStandardBRDF(Surface surface, SurfaceToLight surfaceToLight) { // Compute Fresnel term float3 F = F_Schlick(surface.f0, surfaceToLight.HdotV); + F += lerp(0.04f, surface.baseColor.rgb, surface.metalness); // GGX Normal Distribution Function float D = D_GGX(surfaceToLight.NdotH, surface.linearRoughness); @@ -589,12 +590,17 @@ float4 computeForwardProbes(Surface surface, } float2 envBRDF = TORQUE_TEX2DLOD(BRDFTexture, float4(surface.NdotV, surface.roughness,0,0)).rg; - float3 diffuse = irradiance * surface.baseColor.rgb * (1.0 - surface.metalness); - float3 specularCol = specular * lerp(envBRDF.y, envBRDF.x, surface.metalness * (1.0 - surface.roughness)); + float3 diffuse = irradiance * lerp(surface.baseColor.rgb, 0.04f, surface.metalness); + float3 specularCol = ((specular + surface.baseColor.rgb) * envBRDF.x + envBRDF.y)*surface.metalness; + + float horizonOcclusion = 1.3; + float horizon = saturate( 1 + horizonOcclusion * dot(surface.R, surface.N)); + horizon *= horizon; // Final color output after environment lighting float3 finalColor = diffuse + specularCol; finalColor *= surface.ao; + if(isCapturing == 1) return float4(lerp((finalColor), surface.baseColor.rgb,surface.metalness),0); else @@ -741,13 +747,17 @@ float4 debugVizForwardProbes(Surface surface, } float2 envBRDF = TORQUE_TEX2DLOD(BRDFTexture, float4(surface.NdotV, surface.roughness,0,0)).rg; - float3 diffuse = irradiance * surface.baseColor.rgb * (1.0 - surface.metalness); - float3 specularCol = specular * lerp(envBRDF.y, envBRDF.x, surface.metalness * (1.0 - surface.roughness)); + float3 diffuse = irradiance * lerp(surface.baseColor.rgb, 0.04f, surface.metalness); + float3 specularCol = ((specular + surface.baseColor.rgb) * envBRDF.x + envBRDF.y)*surface.metalness; + + float horizonOcclusion = 1.3; + float horizon = saturate( 1 + horizonOcclusion * dot(surface.R, surface.N)); + horizon *= horizon; - specularCol *= surface.metalness + (1.0 - surface.roughness); // Final color output after environment lighting float3 finalColor = diffuse + specularCol; finalColor *= surface.ao; + if(isCapturing == 1) return float4(lerp((finalColor), surface.baseColor.rgb,surface.metalness),0); else diff --git a/Templates/BaseGame/game/core/rendering/shaders/lighting/advanced/gl/reflectionProbeArrayP.glsl b/Templates/BaseGame/game/core/rendering/shaders/lighting/advanced/gl/reflectionProbeArrayP.glsl index 4860be006..7a6869352 100644 --- a/Templates/BaseGame/game/core/rendering/shaders/lighting/advanced/gl/reflectionProbeArrayP.glsl +++ b/Templates/BaseGame/game/core/rendering/shaders/lighting/advanced/gl/reflectionProbeArrayP.glsl @@ -205,12 +205,13 @@ void main() #endif vec2 envBRDF = textureLod(BRDFTexture, vec2(surface.NdotV, surface.roughness),0).rg; - vec3 diffuse = irradiance * surface.baseColor.rgb * (1.0 - surface.metalness); - vec3 specularCol = specular * lerp(envBRDF.y, envBRDF.x, surface.metalness * (1.0 - surface.roughness)); + vec3 diffuse = irradiance * lerp(surface.baseColor.rgb, vec3(0.04f,0.04f,0.04f), surface.metalness); + vec3 specularCol = ((specular + surface.baseColor.rgb) * envBRDF.x + envBRDF.y)*surface.metalness; // Final color output after environment lighting vec3 finalColor = diffuse + specularCol; finalColor *= surface.ao; + if(isCapturing == 1) OUT_col = vec4(lerp((finalColor), surface.baseColor.rgb,surface.metalness),0); else diff --git a/Templates/BaseGame/game/core/rendering/shaders/lighting/advanced/reflectionProbeArrayP.hlsl b/Templates/BaseGame/game/core/rendering/shaders/lighting/advanced/reflectionProbeArrayP.hlsl index 8785ada1d..258b0bd78 100644 --- a/Templates/BaseGame/game/core/rendering/shaders/lighting/advanced/reflectionProbeArrayP.hlsl +++ b/Templates/BaseGame/game/core/rendering/shaders/lighting/advanced/reflectionProbeArrayP.hlsl @@ -187,18 +187,23 @@ float4 main(PFXVertToPix IN) : SV_TARGET } #if DEBUGVIZ_SPECCUBEMAP == 1 && DEBUGVIZ_DIFFCUBEMAP == 0 - return float4(specular, 1); + return float4(specular, 1); #elif DEBUGVIZ_DIFFCUBEMAP == 1 return float4(irradiance, 1); #endif float2 envBRDF = TORQUE_TEX2DLOD(BRDFTexture, float4(surface.NdotV, surface.roughness,0,0)).rg; - float3 diffuse = irradiance * surface.baseColor.rgb * (1.0 - surface.metalness); - float3 specularCol = specular * lerp(envBRDF.y, envBRDF.x, surface.metalness * (1.0 - surface.roughness)); + float3 diffuse = irradiance * lerp(surface.baseColor.rgb, 0.04f, surface.metalness); + float3 specularCol = ((specular + surface.baseColor.rgb) * envBRDF.x + envBRDF.y)*surface.metalness; + float horizonOcclusion = 1.3; + float horizon = saturate( 1 + horizonOcclusion * dot(surface.R, surface.N)); + horizon *= horizon; + // Final color output after environment lighting float3 finalColor = diffuse + specularCol; - finalColor *= surface.ao; + finalColor *= surface.ao; + if(isCapturing == 1) return float4(lerp(finalColor, surface.baseColor.rgb,surface.metalness),0); else From 61e4107c393a51f889ad3bf04c9fd8b7c4783f59 Mon Sep 17 00:00:00 2001 From: AzaezelX Date: Mon, 24 Mar 2025 11:32:09 -0500 Subject: [PATCH 91/91] handle feeding a cubemap via 2d textures courtessey marauder --- Engine/source/gfx/D3D11/gfxD3D11Cubemap.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Engine/source/gfx/D3D11/gfxD3D11Cubemap.cpp b/Engine/source/gfx/D3D11/gfxD3D11Cubemap.cpp index 82f626be8..e81d972b5 100644 --- a/Engine/source/gfx/D3D11/gfxD3D11Cubemap.cpp +++ b/Engine/source/gfx/D3D11/gfxD3D11Cubemap.cpp @@ -112,6 +112,19 @@ void GFXD3D11Cubemap::_init(U32 size, GFXFormat format, U32 mipLevels, bool isDy delete[] pData; AssertFatal(SUCCEEDED(hr), "GFXD3D11Cubemap::_init - CreateTexture2D failed"); + if (faces) + { + for (U32 i = 0; i < CubeFaces; i++) + { + GFXD3D11TextureObject* texObj = static_cast((GFXTextureObject*)faces[i]); + for (U32 currentMip = 0; currentMip < mMipMapLevels; currentMip++) + { + U32 subResource = D3D11CalcSubresource(currentMip, i, mMipMapLevels); + D3D11DEVICECONTEXT->CopySubresourceRegion(mTexture, subResource, 0, 0, 0, texObj->get2DTex(), currentMip, NULL); + } + } + } + D3D11_SHADER_RESOURCE_VIEW_DESC viewDesc = {}; viewDesc.Format = GFXD3D11TextureFormat[mFaceFormat]; viewDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURECUBE;

    qjxjj--!3i?c`Y+dnbF5nf-<4_vXi* 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%0A7*-Jc$8p!~pKa09MKXmS6yL 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 z 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 cgq2|R#NdVoWD0Jq2hZsY-UlL2(l18gk= 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