struct MDTypeMap MDTypeMap[] = {
{"1", "equals", "message/rfc822"},
{"2", "equals", "text/x-vcard"},
- {"3", NOTSUPPORTED}, /* PrefPane */
- {"4", NOTSUPPORTED}, /* Font. There's no single mime type to match all font formats, ugh! */
- {"5", NOTSUPPORTED}, /* Bookmark */
+ {"3", NOTSUPPORTED, NOTSUPPORTED}, /* PrefPane */
+ {"4", NOTSUPPORTED, NOTSUPPORTED}, /* Font. There's no single mime type to match all font formats, ugh! */
+ {"5", NOTSUPPORTED, NOTSUPPORTED}, /* Bookmark */
{"6", "equals", "text/x-vcard"},
{"7", "startsWith", "video"},
- {"8", NOTSUPPORTED}, /* Executable */
- {"9", NOTSUPPORTED}, /* Folder */
+ {"8", "equals", "application/x-executable"},
+ {"9", "equals", "Folder"},
{"10", "startsWith", "audio"},
{"11", "equals", "application/pdf"},
- {"12", NOTSUPPORTED}, /* Presentation */
+ {"12", NOTSUPPORTED, NOTSUPPORTED}, /* Presentation */
{"13", "startsWith", "image"},
{"public.jpeg", "equals", "image/jpeg"},
{"public.tiff", "equals", "image/tiff"},
{"public.content", "inSet", "application/msword,application/pdf,application/vnd.ms-excel,application/vnd.oasis.opendocument.text,application/vnd.sun.xml.writer"},
{"public.mp3", "equals", "audio/mpeg"},
{"public.mpeg-4-audio", "equals", "audio/x-aac"},
- {"com.apple.application", NOTSUPPORTED},
+ {"com.apple.application", NOTSUPPORTED, NOTSUPPORTED},
{"public.text", "startsWith", "text"},
{"public.plain-text", "equals", "text/plain"},
{"public.rtf", "equals", "text/rtf"},
{"public.html", "equals", "text/html"},
{"public.xml", "equals", "text/xml"},
- {"public.source-code", NOTSUPPORTED},
+ {"public.source-code", NOTSUPPORTED, NOTSUPPORTED},
{NULL, NULL}
};
#include <time.h>
#include <gio/gio.h>
+ #include <tracker.h>
#include <atalk/talloc.h>
#include <atalk/logger.h>
static gchar *srp_fts;
/* Line 371 of yacc.c */
-#line 106 "slmod_rdf_parser.c"
+#line 107 "slmod_rdf_parser.c"
# ifndef YY_NULL
# if defined __cplusplus && 201103L <= __cplusplus
typedef union YYSTYPE
{
/* Line 387 of yacc.c */
-#line 45 "slmod_rdf_parser.y"
+#line 46 "slmod_rdf_parser.y"
int ival;
const char *sval;
/* Line 387 of yacc.c */
-#line 189 "slmod_rdf_parser.c"
+#line 190 "slmod_rdf_parser.c"
} YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
#endif /* ! YYPARSE_PARAM */
/* "%code provides" blocks. */
/* Line 387 of yacc.c */
-#line 39 "slmod_rdf_parser.y"
+#line 40 "slmod_rdf_parser.y"
#define SPRAW_TIME_OFFSET 978307200
- extern int map_spotlight_to_rdf_query(slq_t *slq, gchar **rdf_result, gchar **fts_result);
+ extern int map_spotlight_to_rdf_query(slq_t *slq);
extern slq_t *srp_slq;
/* Line 387 of yacc.c */
-#line 221 "slmod_rdf_parser.c"
+#line 222 "slmod_rdf_parser.c"
#endif /* !YY_YY_Y_TAB_H_INCLUDED */
/* Copy the second part of user declarations. */
/* Line 390 of yacc.c */
-#line 228 "slmod_rdf_parser.c"
+#line 229 "slmod_rdf_parser.c"
#ifdef short
# undef short
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const yytype_uint8 yyrline[] =
{
- 0, 67, 67, 69, 73, 90, 96, 97, 98, 99,
- 100, 125, 126, 127, 128, 129, 130, 131, 132, 136,
- 140, 141
+ 0, 68, 68, 70, 74, 91, 97, 98, 99, 100,
+ 101, 126, 127, 128, 129, 130, 131, 132, 133, 137,
+ 141, 142
};
#endif
{
case 4:
/* Line 1792 of yacc.c */
-#line 73 "slmod_rdf_parser.y"
+#line 74 "slmod_rdf_parser.y"
{
srp_result = talloc_asprintf(srp_slq,
"<rdfq:Condition>\n"
case 5:
/* Line 1792 of yacc.c */
-#line 90 "slmod_rdf_parser.y"
+#line 91 "slmod_rdf_parser.y"
{
if ((yyvsp[(1) - (1)].bval) == false)
YYACCEPT;
case 6:
/* Line 1792 of yacc.c */
-#line 96 "slmod_rdf_parser.y"
+#line 97 "slmod_rdf_parser.y"
{(yyval.sval) = (yyvsp[(1) - (1)].sval); if ((yyval.sval) == NULL) YYABORT;}
break;
case 7:
/* Line 1792 of yacc.c */
-#line 97 "slmod_rdf_parser.y"
+#line 98 "slmod_rdf_parser.y"
{(yyval.sval) = (yyvsp[(1) - (1)].sval);}
break;
case 8:
/* Line 1792 of yacc.c */
-#line 98 "slmod_rdf_parser.y"
+#line 99 "slmod_rdf_parser.y"
{(yyval.sval) = talloc_asprintf(srp_slq, "%s\n", (yyvsp[(2) - (3)].sval));}
break;
case 9:
/* Line 1792 of yacc.c */
-#line 99 "slmod_rdf_parser.y"
+#line 100 "slmod_rdf_parser.y"
{(yyval.sval) = talloc_asprintf(srp_slq, "<rdfq:and>\n%s\n%s\n</rdfq:and>\n", (yyvsp[(1) - (3)].sval), (yyvsp[(3) - (3)].sval));}
break;
case 10:
/* Line 1792 of yacc.c */
-#line 100 "slmod_rdf_parser.y"
+#line 101 "slmod_rdf_parser.y"
{
if (strcmp((yyvsp[(1) - (3)].sval), "") == 0 || strcmp((yyvsp[(3) - (3)].sval), "") == 0) {
/*
case 11:
/* Line 1792 of yacc.c */
-#line 125 "slmod_rdf_parser.y"
+#line 126 "slmod_rdf_parser.y"
{(yyval.sval) = map_expr((yyvsp[(1) - (5)].sval), '=', (yyvsp[(4) - (5)].sval));}
break;
case 12:
/* Line 1792 of yacc.c */
-#line 126 "slmod_rdf_parser.y"
+#line 127 "slmod_rdf_parser.y"
{(yyval.sval) = map_expr((yyvsp[(1) - (5)].sval), '!', (yyvsp[(4) - (5)].sval));}
break;
case 13:
/* Line 1792 of yacc.c */
-#line 127 "slmod_rdf_parser.y"
+#line 128 "slmod_rdf_parser.y"
{(yyval.sval) = map_expr((yyvsp[(1) - (5)].sval), '<', (yyvsp[(4) - (5)].sval));}
break;
case 14:
/* Line 1792 of yacc.c */
-#line 128 "slmod_rdf_parser.y"
+#line 129 "slmod_rdf_parser.y"
{(yyval.sval) = map_expr((yyvsp[(1) - (5)].sval), '>', (yyvsp[(4) - (5)].sval));}
break;
case 15:
/* Line 1792 of yacc.c */
-#line 129 "slmod_rdf_parser.y"
+#line 130 "slmod_rdf_parser.y"
{(yyval.sval) = map_expr((yyvsp[(1) - (6)].sval), '=', (yyvsp[(4) - (6)].sval));}
break;
case 16:
/* Line 1792 of yacc.c */
-#line 130 "slmod_rdf_parser.y"
+#line 131 "slmod_rdf_parser.y"
{(yyval.sval) = map_expr((yyvsp[(1) - (6)].sval), '!', (yyvsp[(4) - (6)].sval));}
break;
case 17:
/* Line 1792 of yacc.c */
-#line 131 "slmod_rdf_parser.y"
+#line 132 "slmod_rdf_parser.y"
{(yyval.sval) = map_expr((yyvsp[(1) - (6)].sval), '<', (yyvsp[(4) - (6)].sval));}
break;
case 18:
/* Line 1792 of yacc.c */
-#line 132 "slmod_rdf_parser.y"
+#line 133 "slmod_rdf_parser.y"
{(yyval.sval) = map_expr((yyvsp[(1) - (6)].sval), '>', (yyvsp[(4) - (6)].sval));}
break;
case 19:
/* Line 1792 of yacc.c */
-#line 136 "slmod_rdf_parser.y"
+#line 137 "slmod_rdf_parser.y"
{(yyval.sval) = map_daterange((yyvsp[(3) - (8)].sval), (yyvsp[(5) - (8)].tval), (yyvsp[(7) - (8)].tval));}
break;
case 20:
/* Line 1792 of yacc.c */
-#line 140 "slmod_rdf_parser.y"
+#line 141 "slmod_rdf_parser.y"
{(yyval.tval) = isodate2unix((yyvsp[(3) - (4)].sval));}
break;
case 21:
/* Line 1792 of yacc.c */
-#line 141 "slmod_rdf_parser.y"
+#line 142 "slmod_rdf_parser.y"
{(yyval.tval) = atoi((yyvsp[(1) - (1)].sval)) + SPRAW_TIME_OFFSET;}
break;
/* Line 1792 of yacc.c */
-#line 1594 "slmod_rdf_parser.c"
+#line 1595 "slmod_rdf_parser.c"
default: break;
}
/* User semantic actions sometimes alter yychar, and that requires
/* Line 2055 of yacc.c */
-#line 144 "slmod_rdf_parser.y"
+#line 145 "slmod_rdf_parser.y"
static time_t isodate2unix(const char *s)
if (strcmp(p->mdtm_value, val) == 0) {
if (!p->mdtm_type)
return NULL;
+ if (val[0] == '9') {
+ srp_slq->slq_service = SERVICE_FOLDERS;
+ return "";
+ }
result = talloc_asprintf(srp_slq,
"<rdfq:%s>\n"
" <rdfq:Property name=\"File:Mime\" />\n"
* Map a Spotlight RAW query string to a RDF query
*
* @param[in] slq Spotlight query handle
- * @param[out] sparql_result Mapped RDF query, string is allocated in
- * talloc context of slq
* @return 0 on success, -1 on error
**/
-int map_spotlight_to_rdf_query(slq_t *slq, gchar **rdf_result, gchar **fts_result)
+int map_spotlight_to_rdf_query(slq_t *slq)
{
EC_INIT;
YY_BUFFER_STATE s = NULL;
srp_result = NULL;
srp_fts = NULL;
-
+ slq->slq_service = SERVICE_FILES;
srp_slq = slq;
s = yy_scan_string(slq->slq_qstring);
if (s)
yy_delete_buffer(s);
if (ret == 0) {
- *rdf_result = srp_result;
- *fts_result = srp_fts;
- } else {
- *rdf_result = NULL;
- *fts_result = NULL;
+ slq->slq_trackerquery = srp_result;
+ slq->slq_fts = srp_fts;
}
EC_EXIT;
}