]> git.saurik.com Git - apple/xnu.git/blobdiff - libkern/kxld/tests/kextcopyright.c
xnu-4903.270.47.tar.gz
[apple/xnu.git] / libkern / kxld / tests / kextcopyright.c
index b99feebf8c8913372eceb1fe004140431eaea4a9..8895fcb903f557566e267dace0c414555dd5a86d 100644 (file)
@@ -2,7 +2,7 @@
  * Copyright (c) 2009 Apple Inc. All rights reserved.
  *
  * @APPLE_OSREFERENCE_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
  * unlawful or unlicensed copies of an Apple operating system, or to
  * circumvent, violate, or enable the circumvention or violation of, any
  * terms of an Apple operating system software license agreement.
- * 
+ *
  * 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,
@@ -22,7 +22,7 @@
  * 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_OSREFERENCE_LICENSE_HEADER_END@
  */
 
@@ -46,11 +46,11 @@ static char *convert_cfstring(CFStringRef the_string);
 static void
 usage(void)
 {
-    printf("usage: %s [path to kext]\n\n"
-           "This program validates the copyright string in a kext's info "
-           "dictionary.\n\n", gProgname);
+       printf("usage: %s [path to kext]\n\n"
+           "This program validates the copyright string in a kext's info "
+           "dictionary.\n\n", gProgname);
 
-    printFormat();
+       printFormat();
 }
 
 /******************************************************************************
@@ -58,17 +58,17 @@ usage(void)
 static void
 printFormat(void)
 {
-    fprintf(stderr, 
-        "The copyright string should be contained in the NSHumanReadableCopyright key.\n"
-        "It should be of the format:\n"
-        "\tCopyright © [year(s) of publication] Apple Inc. All rights reserved.\n\n"
-        "where [year(s) of publication] is a comma-separated list of years and/or\n"
-        "year ranges, e.g., 2004, 2006-2008.  Years must be four digits.  Year ranges\n"
-        "may not contain spaces and must use four digits for both years.\n\n"
-        "The following are examples of valid copyright strings:\n"
-        "\tCopyright © 2008 Apple Inc. All rights reserved.\n"
-        "\tCopyright © 2004-2008 Apple Inc. All rights reserved.\n"
-        "\tCopyright © 1998,2000-2002,2004,2006-2008 Apple Inc. All rights reserved.\n");
+       fprintf(stderr,
+           "The copyright string should be contained in the NSHumanReadableCopyright key.\n"
+           "It should be of the format:\n"
+           "\tCopyright © [year(s) of publication] Apple Inc. All rights reserved.\n\n"
+           "where [year(s) of publication] is a comma-separated list of years and/or\n"
+           "year ranges, e.g., 2004, 2006-2008.  Years must be four digits.  Year ranges\n"
+           "may not contain spaces and must use four digits for both years.\n\n"
+           "The following are examples of valid copyright strings:\n"
+           "\tCopyright © 2008 Apple Inc. All rights reserved.\n"
+           "\tCopyright © 2004-2008 Apple Inc. All rights reserved.\n"
+           "\tCopyright © 1998,2000-2002,2004,2006-2008 Apple Inc. All rights reserved.\n");
 }
 
 /******************************************************************************
@@ -76,44 +76,46 @@ printFormat(void)
 char *
 convert_cfstring(CFStringRef the_string)
 {
-    char *result = NULL;
-    CFDataRef the_data = NULL;
-    const UInt8 *data_bytes = NULL;
-    char *converted_string = NULL;
-    u_long converted_len = 0;
-    u_long bytes_copied = 0;
-
-    the_data = CFStringCreateExternalRepresentation(kCFAllocatorDefault,
-        the_string, kCFStringEncodingUTF8, 0);
-    if (!the_data) {
-        fprintf(stderr, "Failed to convert string\n");
-        goto finish;
-    }
-
-    data_bytes = CFDataGetBytePtr(the_data);
-    if (!data_bytes) {
-        fprintf(stderr, "Failed to get converted string bytes\n");
-        goto finish;
-    }
-
-    converted_len = strlen((const char *)data_bytes) + 1; // +1 for nul
-    converted_string = malloc(converted_len);
-    if (!converted_string) {
-        fprintf(stderr, "Failed to allocate memory\n");
-        goto finish;
-    }
-
-    bytes_copied = strlcpy(converted_string, (const char *) data_bytes, 
-        converted_len) + 1; // +1 for nul
-    if (bytes_copied != converted_len) {
-        fprintf(stderr, "Failed to copy converted string\n");
-        goto finish;
-    }
-
-    result = converted_string;
+       char *result = NULL;
+       CFDataRef the_data = NULL;
+       const UInt8 *data_bytes = NULL;
+       char *converted_string = NULL;
+       u_long converted_len = 0;
+       u_long bytes_copied = 0;
+
+       the_data = CFStringCreateExternalRepresentation(kCFAllocatorDefault,
+           the_string, kCFStringEncodingUTF8, 0);
+       if (!the_data) {
+               fprintf(stderr, "Failed to convert string\n");
+               goto finish;
+       }
+
+       data_bytes = CFDataGetBytePtr(the_data);
+       if (!data_bytes) {
+               fprintf(stderr, "Failed to get converted string bytes\n");
+               goto finish;
+       }
+
+       converted_len = strlen((const char *)data_bytes) + 1; // +1 for nul
+       converted_string = malloc(converted_len);
+       if (!converted_string) {
+               fprintf(stderr, "Failed to allocate memory\n");
+               goto finish;
+       }
+
+       bytes_copied = strlcpy(converted_string, (const char *) data_bytes,
+           converted_len) + 1; // +1 for nul
+       if (bytes_copied != converted_len) {
+               fprintf(stderr, "Failed to copy converted string\n");
+               goto finish;
+       }
+
+       result = converted_string;
 finish:
-    if (the_data) CFRelease(the_data);
-    return result;
+       if (the_data) {
+               CFRelease(the_data);
+       }
+       return result;
 }
 
 /******************************************************************************
@@ -121,88 +123,99 @@ finish:
 int
 main(int argc, const char *argv[])
 {
-    int result = 1;
-    boolean_t infoCopyrightIsValid = false;
-    boolean_t readableCopyrightIsValid = false;
-    CFURLRef anURL = NULL;                      // must release
-    CFBundleRef aBundle = NULL;                 // must release
-    CFDictionaryRef aDict = NULL;               // do not release
-    CFStringRef infoCopyrightString = NULL;     // do not release
-    CFStringRef readableCopyrightString = NULL; // do not release
-    char *infoStr = NULL;                       // must free
-    char *readableStr = NULL;                   // must free
-
-    gProgname = argv[0];
-
-    if (argc != 2) {
-        usage();
-        goto finish;
-    }
-
-    anURL = CFURLCreateFromFileSystemRepresentation(kCFAllocatorDefault,
-        (const UInt8 *) argv[1], strlen(argv[1]), /* isDirectory */ FALSE);
-    if (!anURL) {
-        fprintf(stderr, "Can't create path from %s\n", argv[1]);
-        goto finish;
-    }
-
-    aBundle = CFBundleCreate(kCFAllocatorDefault, anURL);
-    if (!aBundle) {
-        fprintf(stderr, "Can't create bundle at path %s\n", argv[1]);
-        goto finish;
-    }
-
-    aDict = CFBundleGetInfoDictionary(aBundle);
-    if (!aDict) {
-        fprintf(stderr, "Can't get info dictionary from bundle\n");
-        goto finish;
-    }
-
-    infoCopyrightString = CFDictionaryGetValue(aDict, kCFBundleGetInfoStringKey);
-    readableCopyrightString = CFDictionaryGetValue(aDict, kNSHumanReadableCopyrightKey);
-
-    if (!infoCopyrightString && !readableCopyrightString) {
-        fprintf(stderr, "This kext does not have a value for NSHumanReadableCopyright");
-        goto finish;
-    }
-
-    if (infoCopyrightString) {
-        fprintf(stderr, "Warning: This kext has a value for CFBundleGetInfoString.\n"
-            "This key is obsolete, and may be removed from the kext's Info.plist.\n"
-            "It has been replaced by CFBundleVersion and NSHumanReadableCopyright.\n\n");
-
-        infoStr = convert_cfstring(infoCopyrightString);
-        if (!infoStr) goto finish;
-
-        infoCopyrightIsValid = kxld_validate_copyright_string(infoStr); 
-    }
-
-    if (readableCopyrightString) {
-        readableStr = convert_cfstring(readableCopyrightString);
-        if (!readableStr) goto finish;
-
-        readableCopyrightIsValid = kxld_validate_copyright_string(readableStr);
-    }
-
-    if (!readableCopyrightIsValid) {
-        if (infoCopyrightIsValid) {
-            fprintf(stderr, "Warning: The copyright string in NSHumanReadableCopyright is invalid,\n"
-                    "but the string in CFBundleGetInfoString is valid.  CFBundleGetInfoString is\n"
-                    "obsolete.  Please migrate your copyright string to NSHumanReadableCopyright.\n\n");
-        } else {
-            fprintf(stderr, "Error: There is no valid copyright string for this kext.\n\n");
-            printFormat(); 
-            goto finish;
-        }
-    }
-
-    result = 0;
+       int result = 1;
+       boolean_t infoCopyrightIsValid = false;
+       boolean_t readableCopyrightIsValid = false;
+       CFURLRef anURL = NULL;                  // must release
+       CFBundleRef aBundle = NULL;             // must release
+       CFDictionaryRef aDict = NULL;           // do not release
+       CFStringRef infoCopyrightString = NULL; // do not release
+       CFStringRef readableCopyrightString = NULL; // do not release
+       char *infoStr = NULL;                   // must free
+       char *readableStr = NULL;               // must free
+
+       gProgname = argv[0];
+
+       if (argc != 2) {
+               usage();
+               goto finish;
+       }
+
+       anURL = CFURLCreateFromFileSystemRepresentation(kCFAllocatorDefault,
+           (const UInt8 *) argv[1], strlen(argv[1]), /* isDirectory */ FALSE);
+       if (!anURL) {
+               fprintf(stderr, "Can't create path from %s\n", argv[1]);
+               goto finish;
+       }
+
+       aBundle = CFBundleCreate(kCFAllocatorDefault, anURL);
+       if (!aBundle) {
+               fprintf(stderr, "Can't create bundle at path %s\n", argv[1]);
+               goto finish;
+       }
+
+       aDict = CFBundleGetInfoDictionary(aBundle);
+       if (!aDict) {
+               fprintf(stderr, "Can't get info dictionary from bundle\n");
+               goto finish;
+       }
+
+       infoCopyrightString = CFDictionaryGetValue(aDict, kCFBundleGetInfoStringKey);
+       readableCopyrightString = CFDictionaryGetValue(aDict, kNSHumanReadableCopyrightKey);
+
+       if (!infoCopyrightString && !readableCopyrightString) {
+               fprintf(stderr, "This kext does not have a value for NSHumanReadableCopyright");
+               goto finish;
+       }
+
+       if (infoCopyrightString) {
+               fprintf(stderr, "Warning: This kext has a value for CFBundleGetInfoString.\n"
+                   "This key is obsolete, and may be removed from the kext's Info.plist.\n"
+                   "It has been replaced by CFBundleVersion and NSHumanReadableCopyright.\n\n");
+
+               infoStr = convert_cfstring(infoCopyrightString);
+               if (!infoStr) {
+                       goto finish;
+               }
+
+               infoCopyrightIsValid = kxld_validate_copyright_string(infoStr);
+       }
+
+       if (readableCopyrightString) {
+               readableStr = convert_cfstring(readableCopyrightString);
+               if (!readableStr) {
+                       goto finish;
+               }
+
+               readableCopyrightIsValid = kxld_validate_copyright_string(readableStr);
+       }
+
+       if (!readableCopyrightIsValid) {
+               if (infoCopyrightIsValid) {
+                       fprintf(stderr, "Warning: The copyright string in NSHumanReadableCopyright is invalid,\n"
+                           "but the string in CFBundleGetInfoString is valid.  CFBundleGetInfoString is\n"
+                           "obsolete.  Please migrate your copyright string to NSHumanReadableCopyright.\n\n");
+               } else {
+                       fprintf(stderr, "Error: There is no valid copyright string for this kext.\n\n");
+                       printFormat();
+                       goto finish;
+               }
+       }
+
+       result = 0;
 finish:
-    if (anURL) CFRelease(anURL);
-    if (aBundle) CFRelease(aBundle);
-    if (infoStr) free(infoStr);
-    if (readableStr) free(readableStr);
-
-    return result;
+       if (anURL) {
+               CFRelease(anURL);
+       }
+       if (aBundle) {
+               CFRelease(aBundle);
+       }
+       if (infoStr) {
+               free(infoStr);
+       }
+       if (readableStr) {
+               free(readableStr);
+       }
+
+       return result;
 }
-