| Last change
 on this file since 341 was             2, checked in by Dmitry A. Kuminov, 16 years ago | 
        
          | 
Initially imported qt-all-opensource-src-4.5.1 from Trolltech.
 | 
        
          | File size:
            1.4 KB | 
      
      
| Line |  | 
|---|
| 1 | #include <stdlib.h> | 
|---|
| 2 | #include <stdio.h> | 
|---|
| 3 | #include <CoreFoundation/CoreFoundation.h> | 
|---|
| 4 | #include <Carbon/Carbon.h> | 
|---|
| 5 |  | 
|---|
| 6 | int success = 0; | 
|---|
| 7 | int fail = 1; | 
|---|
| 8 | int internal_error = success; // enable dwarf on internal errors | 
|---|
| 9 |  | 
|---|
| 10 | int main(int argc, const char **argv) | 
|---|
| 11 | { | 
|---|
| 12 | CFURLRef cfurl; | 
|---|
| 13 | OSStatus err = LSFindApplicationForInfo(0, CFSTR("com.apple.Xcode"), 0, 0, &cfurl); | 
|---|
| 14 | if (err != noErr) | 
|---|
| 15 | return internal_error; | 
|---|
| 16 |  | 
|---|
| 17 | CFBundleRef bundle = CFBundleCreate(0, cfurl); | 
|---|
| 18 | if (bundle == 0) | 
|---|
| 19 | return internal_error; | 
|---|
| 20 |  | 
|---|
| 21 | CFStringRef str = CFStringRef(CFBundleGetValueForInfoDictionaryKey(bundle, CFSTR("CFBundleShortVersionString"))); | 
|---|
| 22 | const char * ptr = CFStringGetCStringPtr(str, 0); | 
|---|
| 23 | if (ptr == 0) | 
|---|
| 24 | return internal_error; | 
|---|
| 25 |  | 
|---|
| 26 | // self-test | 
|---|
| 27 | const char * fail1 = "2.4"; | 
|---|
| 28 | const char * fail2 = "2.4.0"; | 
|---|
| 29 | const char * fail3  ="2.3"; | 
|---|
| 30 | const char * ok1  = "2.4.1"; | 
|---|
| 31 | const char * ok2  ="2.5"; | 
|---|
| 32 | const char * ok3  ="3.0"; | 
|---|
| 33 | //    ptr = fail1; | 
|---|
| 34 | //    printf ("string: %s\n", ptr); | 
|---|
| 35 |  | 
|---|
| 36 | int length = strlen(ptr); | 
|---|
| 37 | if (length < 3) // expect "x.y" at least | 
|---|
| 38 | return internal_error; | 
|---|
| 39 |  | 
|---|
| 40 | // fail on 2.4 and below (2.4.1 is ok) | 
|---|
| 41 |  | 
|---|
| 42 | if (ptr[0] < '2') | 
|---|
| 43 | return fail; | 
|---|
| 44 |  | 
|---|
| 45 | if (ptr[0] >= '3') | 
|---|
| 46 | return success; | 
|---|
| 47 |  | 
|---|
| 48 | if (ptr[2] < '4') | 
|---|
| 49 | return fail; | 
|---|
| 50 |  | 
|---|
| 51 | if (length < 5) | 
|---|
| 52 | return fail; | 
|---|
| 53 |  | 
|---|
| 54 | if (ptr[4] < '1') | 
|---|
| 55 | return fail; | 
|---|
| 56 |  | 
|---|
| 57 | return success; | 
|---|
| 58 | } | 
|---|
       
      
  Note:
 See   
TracBrowser
 for help on using the repository browser.