1 /* 2 * Copyright (C) 2012 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 /* 18 * "find_lock.exe", for Windows only. 19 */ 20 21 #ifdef _WIN32 22 23 #include "utils.h" 24 #include "find_lock.h" 25 #include <io.h> 26 #include <fcntl.h> 27 28 int main(int argc, char* argv[]) { 29 30 gIsConsole = true; // tell utils to to print errors to stderr 31 gIsDebug = (getenv("ANDROID_SDKMAN_DEBUG") != NULL); 32 CPath dirPath; 33 bool doPrintUsage = false; 34 35 for (int i = 1; i < argc; i++) { 36 if (strncmp(argv[i], "-d", 2) == 0) { 37 gIsDebug = true; 38 39 } else if (dirPath.isEmpty()) { 40 dirPath.set(argv[i]); 41 42 } else { 43 doPrintUsage = true; 44 } 45 } 46 47 if (dirPath.isEmpty()) { 48 fprintf(stderr, "Error: Missing directory path\n"); 49 doPrintUsage = true; 50 51 } else if (!dirPath.dirExists()) { 52 fprintf(stderr, "Error: '%s' is not a valid directory.\n", dirPath.cstr()); 53 return 1; 54 } 55 56 if (doPrintUsage) { 57 printf( 58 "Usage: find_lock.exe [options] sdk_directory_path\n" 59 "\n" 60 "Outputs the names of modules that are locking the given directory.\n" 61 "Returns code 0 when found, 1 when not found.\n" 62 "\n" 63 "Options:\n" 64 "-h / -help : This help.\n" 65 "-t / -test : Internal test.\n" 66 ); 67 return 2; 68 } 69 70 CString result; 71 if (findLock(dirPath, &result)) { 72 fflush(stdout); 73 fflush(stderr); 74 printf("%s", result.cstr()); 75 return 0; 76 } 77 return 1; 78 } 79 80 #endif /* _WIN32 */ 81