memcpy(&i, dd->dd_talloc_array[n], sizeof(uint64_t));
LOG(log_debug, logtype_sl, "%suint64_t: 0x%04x", neststrings[nestinglevel + 1], i);
} else if (STRCMP(type, ==, "char *")) {
- char *s;
- memcpy(&s, dd->dd_talloc_array[n], sizeof(char *));
- LOG(log_debug, logtype_sl, "%sstring: %s", neststrings[nestinglevel + 1], s);
+ LOG(log_debug, logtype_sl, "%sstring: %s", neststrings[nestinglevel + 1], (char *)dd->dd_talloc_array[n]);
} else if (STRCMP(type, ==, "sl_bool_t")) {
sl_bool_t bl;
memcpy(&bl, dd->dd_talloc_array[n], sizeof(sl_bool_t));
neststrings[nestinglevel + 1], cnids.ca_unkn1, cnids.ca_context);
if (cnids.ca_cnids)
dd_dump(cnids.ca_cnids, nestinglevel + 2);
+ } else {
+ LOG(log_debug, logtype_sl, "%stype: %s", neststrings[nestinglevel + 1], type);
}
}
LOG(log_debug, logtype_sl, "%s}", neststrings[nestinglevel]);
dict = talloc_zero(reply, sl_dict_t);
/* key/val 1 */
- s = talloc_strdup(dict, "kMDSStoreMetaScopes");
- dalloc_add_copy(dict, &s, char *);
+ s = dalloc_strdup(dict, "kMDSStoreMetaScopes");
+ dalloc_add(dict, s, char *);
array = talloc_zero(dict, sl_array_t);
- s = talloc_strdup(array, "kMDQueryScopeComputer");
- dalloc_add_copy(array, &s, char *);
- dalloc_add_copy(dict, array, sl_array_t);
+ s = dalloc_strdup(array, "kMDQueryScopeComputer");
+ dalloc_add(array, s, char *);
+ dalloc_add(dict, array, sl_array_t);
/* key/val 2 */
- s = talloc_strdup(dict, "kMDSStorePathScopes");
- dalloc_add_copy(dict, &s, char *);
+ s = dalloc_strdup(dict, "kMDSStorePathScopes");
+ dalloc_add(dict, s, char *);
array = talloc_zero(dict, sl_array_t);
- s = talloc_strdup(array, v->v_path);
- dalloc_add_copy(array, &s, char *);
- dalloc_add_copy(dict, array, sl_array_t);
+ s = dalloc_strdup(array, v->v_path);
+ dalloc_add(array, s, char *);
+ dalloc_add(dict, array, sl_array_t);
/* key/val 3 */
- s = talloc_strdup(dict, "kMDSStoreUUID");
- dalloc_add_copy(dict, &s, char *);
+ s = dalloc_strdup(dict, "kMDSStoreUUID");
+ dalloc_add(dict, s, char *);
memcpy(uuid.sl_uuid, v->v_uuid, 16);
dalloc_add_copy(dict, &uuid, sl_uuid_t);
/* key/val 4 */
- s = talloc_strdup(dict, "kMDSStoreHasPersistentUUID");
- dalloc_add_copy(dict, &s, char *);
+ s = dalloc_strdup(dict, "kMDSStoreHasPersistentUUID");
+ dalloc_add(dict, s, char *);
sl_bool_t b = true;
dalloc_add_copy(dict, &b, sl_bool_t);
- dalloc_add_copy(reply, dict, sl_dict_t);
+ dalloc_add(reply, dict, sl_dict_t);
EC_CLEANUP:
EC_EXIT;
static int sl_rpc_openQuery(AFPObj *obj, const DALLOC_CTX *query, DALLOC_CTX *reply, struct vol *v)
{
EC_INIT;
- char **sl_query;
+ char *sl_query;
uint64_t *uint64;
DALLOC_CTX *reqinfo;
sl_array_t *array;
slq->slq_obj = obj;
slq->slq_vol = v;
EC_NULL_LOG( sl_query = dalloc_value_for_key(query, "DALLOC_CTX", 0, "DALLOC_CTX", 1, "kMDQueryString") );
- LOG(log_debug, logtype_sl, "sl_rpc_openQuery: %s", *sl_query);
- slq->slq_qstring = talloc_steal(slq, *sl_query);
+ LOG(log_debug, logtype_sl, "sl_rpc_openQuery: %s", sl_query);
+ slq->slq_qstring = talloc_steal(slq, sl_query);
slq->slq_state = SLQ_STATE_NEW;
slq->slq_time = time(NULL);
EC_NULL_LOG( uint64 = dalloc_get(query, "DALLOC_CTX", 0, "DALLOC_CTX", 0, "uint64_t", 1) );
array = talloc_zero(reply, sl_array_t);
uint64_t sl_res = ret == 0 ? 0 : UINT64_MAX;
dalloc_add_copy(array, &sl_res, uint64_t);
- dalloc_add_copy(reply, array, sl_array_t);
+ dalloc_add(reply, array, sl_array_t);
EC_EXIT;
}
EC_CLEANUP:
- dalloc_add_copy(reply, array, sl_array_t);
+ dalloc_add(reply, array, sl_array_t);
EC_EXIT;
}
LOG(log_debug, logtype_sl, "afp_spotlight_rpc: Request dump:");
dd_dump(query, 0);
- char **cmd;
+ char *cmd;
EC_NULL_LOG( cmd = dalloc_get(query, "DALLOC_CTX", 0, "DALLOC_CTX", 0, "char *", 0) );
- if (STRCMP(*cmd, ==, "fetchPropertiesForContext:")) {
+ if (STRCMP(cmd, ==, "fetchPropertiesForContext:")) {
EC_ZERO_LOG( sl_rpc_fetchPropertiesForContext(obj, query, reply, vol) );
- } else if (STRCMP(*cmd, ==, "openQueryWithParams:forContext:")) {
+ } else if (STRCMP(cmd, ==, "openQueryWithParams:forContext:")) {
EC_ZERO_LOG( sl_rpc_openQuery(obj, query, reply, vol) );
- } else if (STRCMP(*cmd, ==, "fetchQueryResultsForContext:")) {
+ } else if (STRCMP(cmd, ==, "fetchQueryResultsForContext:")) {
EC_ZERO_LOG( sl_rpc_fetchQueryResultsForContext(obj, query, reply, vol) );
}
i = 1;
dalloc_add_copy(dd, &i, uint64_t);
- char *str = talloc_strdup(dd, "hello world");
- dalloc_add_copy(dd, &str, char *);
+ char *str = dalloc_strdup(dd, "hello world");
+ dalloc_add(dd, str, char *);
sl_bool_t b = true;
dalloc_add_copy(dd, &b, sl_bool_t);
DALLOC_CTX *nested = talloc_zero(dd, DALLOC_CTX);
i = 3;
dalloc_add_copy(nested, &i, uint64_t);
- dalloc_add_copy(dd, nested, DALLOC_CTX);
+ dalloc_add(dd, nested, DALLOC_CTX);
/* test an allocated CNID array */
uint64_t id = 16;
cnids->ca_cnids = talloc_zero(cnids, DALLOC_CTX);
cnids->ca_unkn1 = 1;
dalloc_add_copy(cnids->ca_cnids, &id, uint64_t);
- dalloc_add_copy(dd, cnids, sl_cnids_t);
+ dalloc_add(dd, cnids, sl_cnids_t);
/* Now the Spotlight types */
sl_array_t *sl_array = talloc_zero(dd, sl_array_t);
i = 0x1234;
dalloc_add_copy(sl_array, &i, uint64_t);
- i = 0x5678;
- dalloc_add_copy(sl_array, &i, uint64_t);
sl_dict_t *sl_dict = talloc_zero(dd, sl_dict_t);
i = 0xffff;
dalloc_add_copy(sl_dict, &i, uint64_t);
- dalloc_add_copy(sl_array, sl_dict, sl_dict_t);
+ dalloc_add(sl_array, sl_dict, sl_dict_t);
+
+ dalloc_add(dd, sl_array, sl_array_t);
- dalloc_add_copy(dd, sl_array, sl_array_t);
dd_dump(dd, 0);
/* now parse a real spotlight packet */
return offset;
}
-static int sl_pack_string(char **string, char *buf, int offset, char *toc_buf, int *toc_idx)
+static int sl_pack_string(char *s, char *buf, int offset, char *toc_buf, int *toc_idx)
{
int len, octets, used_in_last_octet;
- char *s = *string;
len = strlen(s);
octets = (len / 8) + (len & 7 ? 1 : 0);
used_in_last_octet = 8 - (octets * 8 - len);
EC_INIT;
int count;
uint64_t query_data64;
- sl_cnids_t cnids;
+ sl_cnids_t *cnids;
- EC_NULL( cnids.ca_cnids = talloc_zero(query, DALLOC_CTX) );
+ EC_NULL( cnids = talloc_zero(query, sl_cnids_t) );
+ EC_NULL( cnids->ca_cnids = talloc_zero(cnids, DALLOC_CTX) );
if (length <= 16)
/* that's permitted, it's an empty array */
query_data64 = sl_unpack_uint64(buf, offset, encoding);
count = query_data64 & 0xffff;
- cnids.ca_unkn1 = (query_data64 & 0xffff0000) >> 16;
- cnids.ca_context = query_data64 >> 32;
+ cnids->ca_unkn1 = (query_data64 & 0xffff0000) >> 16;
+ cnids->ca_context = query_data64 >> 32;
offset += 8;
while (count --) {
query_data64 = sl_unpack_uint64(buf, offset, encoding);
- dalloc_add_copy(cnids.ca_cnids, &query_data64, uint64_t);
+ dalloc_add_copy(cnids->ca_cnids, &query_data64, uint64_t);
offset += 8;
}
- dalloc_add_copy(query, &cnids, sl_cnids_t);
+ dalloc_add(query, cnids, sl_cnids_t);
EC_CLEANUP:
EC_EXIT;
case SQ_CPX_TYPE_ARRAY:
sl_array = talloc_zero(query, sl_array_t);
EC_NEG1_LOG( roffset = sl_unpack_loop(sl_array, buf, offset, cpx_query_count, toc_offset, encoding) );
- dalloc_add_copy(query, sl_array, sl_array_t);
+ dalloc_add(query, sl_array, sl_array_t);
break;
case SQ_CPX_TYPE_DICT:
sl_dict = talloc_zero(query, sl_dict_t);
EC_NEG1_LOG( roffset = sl_unpack_loop(sl_dict, buf, offset, cpx_query_count, toc_offset, encoding) );
- dalloc_add_copy(query, sl_dict, sl_dict_t);
+ dalloc_add(query, sl_dict, sl_dict_t);
break;
case SQ_CPX_TYPE_STRING:
slen = qlen - 8 + used_in_last_block;
if (cpx_query_type == SQ_CPX_TYPE_STRING) {
- p = talloc_strndup(query, buf + offset + 8, slen);
+ p = dalloc_strndup(query, buf + offset + 8, slen);
} else {
unicode_encoding = spotlight_get_utf16_string_encoding(buf, offset + 8, slen, encoding);
mark_exists = (unicode_encoding & SL_ENC_UTF_16);
EC_NEG1( convert_string_allocate(CH_UCS2, CH_UTF8, buf + offset + (mark_exists ? 18 : 16), slen, &p) );
}
- dalloc_add_copy(query, &p, char *);
+ dalloc_add(query, p, char *);
roffset += qlen;
break;
} else {
sl_fm = talloc_zero(query, sl_filemeta_t);
EC_NEG1_LOG( sl_unpack(sl_fm, buf + offset + 8) );
- dalloc_add_copy(query, sl_fm, sl_filemeta_t);
+ dalloc_add(query, sl_fm, sl_filemeta_t);
}
roffset += qlen;
break;