Expand ~ in /sendfile, fix the way we handle creator and senders.
--- a/jingle-filetransfer/filetransfer.c Tue Aug 10 20:00:34 2010 +0200
+++ b/jingle-filetransfer/filetransfer.c Tue Aug 10 20:31:12 2010 +0200
@@ -200,13 +200,16 @@
static void do_sendfile(char *arg)
{
char **args = split_arg(arg, 1, 0);
+ gchar *filename;
if (!args[0]) {
scr_LogPrint(LPRINT_LOGNORM, "Jingle File Transfer: give me a name!");
return;
}
- if (!g_file_test(args[0], G_FILE_TEST_IS_REGULAR | G_FILE_TEST_EXISTS)) {
+ filename = expand_filename(args[0]); // expand ~ to HOME
+
+ if (!g_file_test(filename, G_FILE_TEST_IS_REGULAR | G_FILE_TEST_EXISTS)) {
scr_LogPrint(LPRINT_LOGNORM, "Jingle File Transfer: File doesn't exist!");
return;
}
@@ -247,10 +250,10 @@
}
jft->desc = g_strdup(args[0]);
jft->type = JINGLE_FT_OFFER;
- jft->name = g_path_get_basename(args[0]);
+ jft->name = g_path_get_basename(filename);
jft->date = fileinfo.st_mtime;
jft->size = fileinfo.st_size;
- jft->outfile = g_io_channel_new_file (args[0], "r", NULL);
+ jft->outfile = g_io_channel_new_file (filename, "r", NULL);
g_io_channel_set_encoding(jft->outfile, NULL, NULL);
/*while (g_io_channel_read_chars(jft->outfile,
(gchar*)data, 1024, &bytes_read, NULL)
--- a/jingle/check.c Tue Aug 10 20:00:34 2010 +0200
+++ b/jingle/check.c Tue Aug 10 20:31:12 2010 +0200
@@ -69,7 +69,7 @@
return FALSE;
}
- if (actionstr != NULL && check_jid_syntax(jn->initiator)) {
+ if (jn->initiator != NULL && check_jid_syntax(jn->initiator)) {
g_set_error(err, JINGLE_CHECK_ERROR, JINGLE_CHECK_ERROR_BADVALUE,
"the initiator attribute in invalid (not a jid)");
return FALSE;
@@ -111,26 +111,37 @@
cn->name = lm_message_node_get_attribute(node, "name");
sendersstr = lm_message_node_get_attribute(node, "senders");
- if (creatorstr == NULL || cn->name == NULL) {
+ if (cn->name == NULL) {
g_set_error(err, JINGLE_CHECK_ERROR, JINGLE_CHECK_ERROR_MISSING,
- "an attribute of the content element is missing");
+ "the name attribute of the content element is missing");
g_free(cn);
return NULL;
}
-
- tmp = index_in_array(creatorstr, jingle_content_creator);
- tmp2 = index_in_array(sendersstr, jingle_content_senders);
- if (tmp < 0 || (tmp2 < 0 && sendersstr != NULL)) {
- g_set_error(err, JINGLE_CHECK_ERROR, JINGLE_CHECK_ERROR_BADVALUE,
- "the attribute creator or sender is invalid");
- g_free(cn);
- return NULL;
+
+ if (creatorstr == NULL) {
+ cn->creator = JINGLE_CREATOR_INITIATOR;
+ } else {
+ tmp = index_in_array(creatorstr, jingle_content_creator);
+ if(tmp < 0) {
+ g_set_error(err, JINGLE_CHECK_ERROR, JINGLE_CHECK_ERROR_BADVALUE,
+ "the creator attribute is invalid");
+ }
+ cn->creator = (JingleCreator)tmp;
}
- cn->creator = (JingleCreator)tmp;
- if(sendersstr != NULL)
+
+ if (sendersstr == NULL) {
+ cn->senders = JINGLE_SENDERS_BOTH;
+ } else {
+ tmp2 = index_in_array(sendersstr, jingle_content_senders);
+ if (tmp2 < 0) {
+ g_set_error(err, JINGLE_CHECK_ERROR, JINGLE_CHECK_ERROR_BADVALUE,
+ "the senders attribute is invalid");
+ g_free(cn);
+ return NULL;
+ }
cn->senders = (JingleSenders)tmp2;
- else
- cn->senders = JINGLE_SENDERS_BOTH;
+ }
+
cn->description = lm_message_node_get_child(node, "description");
cn->transport = lm_message_node_get_child(node, "transport");
if (cn->description == NULL || cn->transport == NULL) {