Loading...
mach_o/Version32.cpp dyld-1340 /dev/null
--- dyld/dyld-1340/mach_o/Version32.cpp
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Copyright (c) 2017 Apple Inc. All rights reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
- *
- * This file contains Original Code and/or Modifications of Original Code
- * as defined in and that are subject to the Apple Public Source License
- * Version 2.0 (the 'License'). You may not use this file except in
- * compliance with the License. Please obtain a copy of the License at
- * http://www.opensource.apple.com/apsl/ and read it before using this
- * file.
- *
- * The Original Code and all software distributed under the License are
- * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
- * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
- * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
- * Please see the License for the specific language governing rights and
- * limitations under the License.
- *
- * @APPLE_LICENSE_HEADER_END@
- */
-
-#include <stdint.h>
-#include <string.h>
-#include <assert.h>
-#include <charconv>
-
-#include "Version32.h"
-
-namespace mach_o {
-
-
-Error Version32::fromString(std::string_view versString, Version32& vers,
-                            void (^ _Nullable truncationHandler)(void))
-{
-    // Initialize default value
-    vers = Version32();
-
-    uint32_t x = 0;
-    uint32_t y = 0;
-    uint32_t z = 0;
-    const char* endPtr = versString.data() + versString.size();
-    auto res = std::from_chars(versString.data(), endPtr, x);
-    if ( res.ec == std::errc{} && *res.ptr == '.' ) {
-        res = std::from_chars(res.ptr + 1, endPtr, y);
-        if ( res.ec == std::errc{} && *res.ptr == '.' )
-            res = std::from_chars(res.ptr + 1, endPtr, z);
-    }
-    bool valueOverflow = (x > 0xffff) || (y > 0xff) || (z > 0xff);
-    if ( valueOverflow && truncationHandler ) {
-        truncationHandler();
-        x = std::min(x, 0xFFFFU);
-        y = std::min(y, 0xFFU);
-        z = std::min(z, 0xFFU);
-        valueOverflow = false;
-    }
-    if ( res.ptr == nullptr || res.ptr != endPtr || valueOverflow ) {
-        if ( valueOverflow || (truncationHandler == nullptr) || (res.ptr == versString.data()) ) {
-            char errVersString[versString.size() + 1];
-            memcpy(errVersString, versString.data(), versString.size());
-            errVersString[versString.size()] = 0;
-            return Error("malformed version number '%s' cannot fit in 32-bit xxxx.yy.zz", (const char*)errVersString);
-        }
-    }
-
-    vers = Version32(x, y, z);
-    return Error::none();
-}
-
-
-static void appendDigit(char*& s, unsigned& num, unsigned place, bool& startedPrinting)
-{
-    if ( num >= place ) {
-        unsigned dig = (num/place);
-        *s++ = '0' + dig;
-        num -= (dig*place);
-        startedPrinting = true;
-    }
-    else if ( startedPrinting ) {
-        *s++ = '0';
-    }
-}
-
-static void appendNumber(char*& s, unsigned num)
-{
-    assert(num < 99999);
-    bool startedPrinting = false;
-    appendDigit(s, num, 10000, startedPrinting);
-    appendDigit(s, num,  1000, startedPrinting);
-    appendDigit(s, num,   100, startedPrinting);
-    appendDigit(s, num,    10, startedPrinting);
-    appendDigit(s, num,     1, startedPrinting);
-    if ( !startedPrinting )
-        *s++ = '0';
-}
-
-
-const char* Version32::toString(char buffer[32]) const
-{
-    // sprintf(versionString, "%d.%d.%d", (_raw >> 16), ((_raw >> 8) & 0xFF), (_raw & 0xFF));
-    char* s = buffer;
-    appendNumber(s, (_raw >> 16));
-    *s++ = '.';
-    appendNumber(s, (_raw >> 8) & 0xFF);
-    unsigned micro = (_raw & 0xFF);
-    if ( micro != 0 ) {
-        *s++ = '.';
-        appendNumber(s, micro);
-    }
-    *s++ = '\0';
-    return buffer;
-}
-
-
-
-} // namespace mach_o
-
-
-
-
-