equal
deleted
inserted
replaced
223 |
223 |
224 static void do_sendfile(char *arg) |
224 static void do_sendfile(char *arg) |
225 { |
225 { |
226 char **args = split_arg(arg, 1, 0); |
226 char **args = split_arg(arg, 1, 0); |
227 gchar *filename; |
227 gchar *filename; |
228 |
228 struct stat fileinfo; |
|
229 |
229 if (!args[0]) { |
230 if (!args[0]) { |
230 scr_LogPrint(LPRINT_LOGNORM, "Jingle File Transfer: give me a name!"); |
231 scr_LogPrint(LPRINT_LOGNORM, "Jingle File Transfer: give me a name!"); |
231 return; |
232 return; |
232 } |
233 } |
233 |
234 |
234 filename = expand_filename(args[0]); // expand ~ to HOME |
235 filename = expand_filename(args[0]); // expand ~ to HOME |
235 |
236 |
236 if (!g_file_test(filename, G_FILE_TEST_IS_REGULAR | G_FILE_TEST_EXISTS)) { |
237 if (g_stat(filename, &fileinfo) != 0) { |
|
238 scr_LogPrint(LPRINT_LOGNORM, "Jingle File Transfer: unable to stat %s", args[1]); |
|
239 return; |
|
240 } |
|
241 |
|
242 if (!S_ISREG(fileinfo.st_mode)) { |
237 scr_LogPrint(LPRINT_LOGNORM, "Jingle File Transfer: File doesn't exist!"); |
243 scr_LogPrint(LPRINT_LOGNORM, "Jingle File Transfer: File doesn't exist!"); |
238 return; |
244 return; |
239 } |
245 } |
240 |
246 |
241 scr_LogPrint(LPRINT_LOGNORM, "Jingle File Transfer: Trying to send %s", |
247 scr_LogPrint(LPRINT_LOGNORM, "Jingle File Transfer: Trying to send %s", |
244 { |
250 { |
245 JingleSession *sess; |
251 JingleSession *sess; |
246 gchar *sid = jingle_generate_sid(); |
252 gchar *sid = jingle_generate_sid(); |
247 gchar *ressource, *recipientjid; |
253 gchar *ressource, *recipientjid; |
248 const gchar *namespaces[] = {NS_JINGLE, NS_JINGLE_APP_FT, NULL}; |
254 const gchar *namespaces[] = {NS_JINGLE, NS_JINGLE_APP_FT, NULL}; |
249 struct stat fileinfo; |
|
250 const gchar *myjid = g_strdup(lm_connection_get_jid(lconnection)); |
255 const gchar *myjid = g_strdup(lm_connection_get_jid(lconnection)); |
251 JingleFT *jft = g_new0(JingleFT, 1); |
256 JingleFT *jft = g_new0(JingleFT, 1); |
252 |
257 |
253 if (CURRENT_JID == NULL) { // CURRENT_JID = the jid of the user which has focus |
258 if (CURRENT_JID == NULL) { // CURRENT_JID = the jid of the user which has focus |
254 scr_LogPrint(LPRINT_LOGNORM, "Jingle File Transfer: Please, choose a valid JID in the roster"); |
259 scr_LogPrint(LPRINT_LOGNORM, "Jingle File Transfer: Please, choose a valid JID in the roster"); |
263 recipientjid = g_strdup_printf("%s/%s", CURRENT_JID, ressource); |
268 recipientjid = g_strdup_printf("%s/%s", CURRENT_JID, ressource); |
264 |
269 |
265 sess = session_new(sid, myjid, recipientjid, JINGLE_SESSION_OUTGOING); |
270 sess = session_new(sid, myjid, recipientjid, JINGLE_SESSION_OUTGOING); |
266 session_add_content(sess, "file", JINGLE_SESSION_STATE_PENDING); |
271 session_add_content(sess, "file", JINGLE_SESSION_STATE_PENDING); |
267 |
272 |
268 if (g_stat(filename, &fileinfo) != 0) { |
|
269 scr_LogPrint(LPRINT_LOGNORM, "Jingle File Transfer: unable to stat %s", args[1]); |
|
270 return; |
|
271 } |
|
272 jft->desc = g_strdup(args[0]); |
273 jft->desc = g_strdup(args[0]); |
273 jft->type = JINGLE_FT_OFFER; |
274 jft->type = JINGLE_FT_OFFER; |
274 jft->name = g_path_get_basename(filename); |
275 jft->name = g_path_get_basename(filename); |
275 jft->date = fileinfo.st_mtime; |
276 jft->date = fileinfo.st_mtime; |
276 jft->size = fileinfo.st_size; |
277 jft->size = fileinfo.st_size; |