#include #include int main (int argc, const char * argv[]) { CFStringRef qs, searchString; CFArrayRef defaultQueryArray; const char *cpath = "/Library/WebServer/Web/localhost"; CFStringRef path = CFStringCreateWithFileSystemRepresentation(NULL, cpath); CFStringRef strs[1] = {path}; CFArrayRef pathArray = CFArrayCreate(NULL, (const void **)strs, 1, &kCFTypeArrayCallBacks); //const char *ds = "((kMDItemTextContent = \"test*\"dc)) && (kMDItemContentType != com.apple.email.emlx) && (kMDItemContentType != public.vcard)"; //const char *ds = "kMDItemContentType == com.apple.email.emlx"; const char *search = "red underline n blur"; bool flag = 0; if(flag){ qs = CFStringCreateWithCString(NULL, search, kCFStringEncodingUTF8); CFStringRef defaultStr[1] = {qs}; defaultQueryArray = CFArrayCreate(NULL, (const void **)defaultStr, 1, &kCFTypeArrayCallBacks); }else{ qs = CFStringCreateWithCString(NULL, search, kCFStringEncodingUTF8); CFStringRef defaultStr[3] = {CFSTR("* =='*"), qs, CFSTR("*'")}; defaultQueryArray = CFArrayCreate(NULL, (const void **)defaultStr, 3, &kCFTypeArrayCallBacks); } searchString = CFStringCreateByCombiningStrings (NULL, defaultQueryArray, CFSTR("")); MDQueryRef query = MDQueryCreate(NULL, searchString, NULL, NULL); if(!query) { printf("Bad Query\n"); RETURN_NULL(); } CFRelease(qs); CFRelease(path); CFRelease(defaultQueryArray); CFRelease(searchString); MDQuerySetSearchScope(query, pathArray, 0); CFRelease(pathArray); MDQueryExecute(query, kMDQuerySynchronous); int i; CFIndex count = MDQueryGetResultCount(query); for (i = 0; i < count; i++) { MDItemRef item = (MDItemRef) MDQueryGetResultAtIndex(query, i); //CFStringRef fileName = MDItemCopyAttribute(item, kMDItemFSName); CFStringRef kmditempath = MDItemCopyAttribute(item, kMDItemPath); unsigned int len = 1 + CFStringGetMaximumSizeForEncoding(CFStringGetLength(kmditempath), kCFStringEncodingUTF8); char *str = malloc(len); CFStringGetCString(kmditempath, str, len, kCFStringEncodingUTF8); CFRelease(kmditempath); printf("%s\n",str); } CFRelease(query); return 0; } //CFSTR("kMDItemTextContent =='*test*'dc"), // CFSTR("kMDItemKeywords == '*Forest*'"), // CFSTR("kMDItemKind == '*Adobe Photoshop Image*'"), // CFSTR("kMDItemTextContent =='*test*'dc"),