+++ /dev/null
-/*
- Copyright (c) 2012 Frank Lahm <franklahm@gmail.com>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif /* HAVE_CONFIG_H */
-
-#include <unistd.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include <atalk/logger.h>
-
-#include "slmod_sparql_map.h"
-
-#define NOTSUPPORTED NULL
-#define SPECIAL NULL
-
-struct spotlight_sparql_map spotlight_sparql_map[] = {
- /* ssm_spotlight_attr ssm_enabled, ssm_type, ssm_sparql_attr */
- {"*", true, ssmt_fts, "fts:match"},
-
- /* Filesystem metadata */
- {"kMDItemFSLabel", true, ssmt_num, NOTSUPPORTED},
- {"kMDItemDisplayName", true, ssmt_str, "nfo:fileName"},
- {"kMDItemFSName", true, ssmt_str, "nfo:fileName"},
- {"kMDItemFSContentChangeDate", true, ssmt_date, "nfo:fileLastModified"},
-
- /* Common metadata */
- {"kMDItemTextContent", true, ssmt_fts, "fts:match"},
- {"kMDItemContentCreationDate", true, ssmt_date, "nie:contentCreated"},
- {"kMDItemContentModificationDate", true, ssmt_date, "nfo:fileLastModified"},
- {"kMDItemAttributeChangeDate", true, ssmt_date, "nfo:fileLastModified"},
- {"kMDItemLastUsedDate", true, ssmt_date, "nfo:fileLastAccessed"},
- {"kMDItemAuthors", true, ssmt_str, "dc:creator"},
- {"kMDItemCopyright", true, ssmt_str, "nie:copyright"},
- {"kMDItemCountry", true, ssmt_str, "nco:country"},
- {"kMDItemCreator", true, ssmt_str, "dc:creator"},
- {"kMDItemDurationSeconds", true, ssmt_num, "nfo:duration"},
- {"kMDItemNumberOfPages", true, ssmt_num, "nfo:pageCount"},
- {"kMDItemTitle", true, ssmt_str, "nie:title"},
- {"_kMDItemGroupId", true, ssmt_type, SPECIAL},
- {"kMDItemContentTypeTree", true, ssmt_type, SPECIAL},
-
- /* Image metadata */
- {"kMDItemPixelWidth", true, ssmt_num, "nfo:width"},
- {"kMDItemPixelHeight", true, ssmt_num, "nfo:height"},
- {"kMDItemColorSpace", true, ssmt_str, "nexif:colorSpace"},
- {"kMDItemBitsPerSample", true, ssmt_num, "nfo:colorDepth"},
- {"kMDItemFocalLength", true, ssmt_num, "nmm:focalLength"},
- {"kMDItemISOSpeed", true, ssmt_num, "nmm:isoSpeed"},
- {"kMDItemOrientation", true, ssmt_bool, "nfo:orientation"},
- {"kMDItemResolutionWidthDPI", true, ssmt_num, "nfo:horizontalResolution"},
- {"kMDItemResolutionHeightDPI", true, ssmt_num, "nfo:verticalResolution"},
- {"kMDItemExposureTimeSeconds", true, ssmt_num, "nmm:exposureTime"},
-
- /* Audio metadata */
- {"kMDItemComposer", true, ssmt_str, "nmm:composer"},
- {"kMDItemMusicalGenre", true, ssmt_str, "nfo:genre"},
-
- {NULL, false, ssmt_str, NULL}
-};
-
-struct MDTypeMap MDTypeMap[] = {
- {"1", kMDTypeMapRDF, "http://www.semanticdesktop.org/ontologies/2007/03/22/nmo#Email"},
- {"2", kMDTypeMapRDF, "http://www.semanticdesktop.org/ontologies/2007/03/22/nco#Contact"},
- {"3", kMDTypeMapNotSup, NULL}, /* PrefPane */
- {"4", kMDTypeMapRDF, "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#Font"},
- {"5", kMDTypeMapRDF, "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#Bookmark"},
- {"6", kMDTypeMapRDF, "http://www.semanticdesktop.org/ontologies/2007/03/22/nco#Contact"},
- {"7", kMDTypeMapRDF, "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#Video"},
- {"8", kMDTypeMapRDF, "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#Executable"},
- {"9", kMDTypeMapRDF, "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#Folder"},
- {"10", kMDTypeMapRDF, "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#Audio"},
- {"11", kMDTypeMapMime, "application/pdf"},
- {"12", kMDTypeMapRDF, "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#Presentation"},
- {"13", kMDTypeMapRDF, "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#Image"},
- {"public.jpeg", kMDTypeMapMime, "image/jpeg"},
- {"public.tiff", kMDTypeMapMime, "image/tiff"},
- {"com.compuserve.gif", kMDTypeMapMime, "image/gif"},
- {"public.png", kMDTypeMapMime, "image/png"},
- {"com.microsoft.bmp", kMDTypeMapMime, "image/bmp"},
- {"public.content", kMDTypeMapRDF, "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#Document"},
- {"public.mp3", kMDTypeMapMime, "audio/mpeg"},
- {"public.mpeg-4-audio", kMDTypeMapMime, "audio/x-aac"},
- {"com.apple.application", kMDTypeMapRDF, "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#Software"},
- {"public.text", kMDTypeMapRDF, "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#TextDocument"},
- {"public.plain-text", kMDTypeMapMime, "text/plain"},
- {"public.rtf", kMDTypeMapMime, "text/rtf"},
- {"public.html", kMDTypeMapMime, "text/html"},
- {"public.xml", kMDTypeMapMime, "text/xml"},
- {"public.source-code", kMDTypeMapRDF, "http://www.semanticdesktop.org/ontologies/2007/03/22/nfo#SourceCode"},
- {NULL, kMDTypeMapNotSup, NULL}
-};
-
-void configure_spotlight_attributes(const char *attributes_in)
-{
- char *attr, *attributes;
- int i;
-
- for (i = 0; spotlight_sparql_map[i].ssm_spotlight_attr != NULL; i++)
- spotlight_sparql_map[i].ssm_enabled = false;
-
- /*
- * Go through the attribute map and for every element scan
- * attributes_in with strtok(). If it's contained, keep it
- * enabled, otherwise disable it.
- */
-
- attributes = strdup(attributes_in);
-
- for (attr = strtok(attributes, ","); attr; attr = strtok(NULL, ",")) {
-
- for (i = 0; spotlight_sparql_map[i].ssm_spotlight_attr != NULL; i++)
-
- if (strcmp(attr, spotlight_sparql_map[i].ssm_spotlight_attr) == 0) {
- LOG(log_info, logtype_sl, "Enabling Spotlight attribute: %s",
- spotlight_sparql_map[i].ssm_spotlight_attr);
- spotlight_sparql_map[i].ssm_enabled = true;
- break;
- }
- }
-
- free(attributes);
-}