const char* tdav_get_current_directory_const() { #if TDAV_UNDER_WINDOWS_RT TSK_DEBUG_ERROR("Not supported"); return tsk_null; #else static char CURRENT_DIR_PATH[MAX_PATH] = { 0 }; static DWORD CURRENT_DIR_PATH_LEN = 0; if(CURRENT_DIR_PATH_LEN == 0) { // NULL HMODULE will get the path to the executable not the DLL. When runing the code in Internet Explorer this is a BIG issue as the path is where IE.exe is installed. #if TDAV_UNDER_WINDOWS_CE static wchar_t TMP_CURRENT_DIR_PATH[MAX_PATH] = { 0 }; if ((CURRENT_DIR_PATH_LEN = GetModuleFileName(GetCurrentModule(), TMP_CURRENT_DIR_PATH, sizeof(TMP_CURRENT_DIR_PATH)))) { if ((CURRENT_DIR_PATH_LEN = wcstombs(CURRENT_DIR_PATH, TMP_CURRENT_DIR_PATH, sizeof(CURRENT_DIR_PATH) - 1))) { int idx = tsk_strLastIndexOf(CURRENT_DIR_PATH, CURRENT_DIR_PATH_LEN, "\\"); if (idx > -1) { CURRENT_DIR_PATH[idx] = '\0'; CURRENT_DIR_PATH_LEN = idx; } } } #else if ((CURRENT_DIR_PATH_LEN = GetModuleFileNameA(GetCurrentModule(), CURRENT_DIR_PATH, sizeof(CURRENT_DIR_PATH)))) { if (!PathRemoveFileSpecA(CURRENT_DIR_PATH)) { TSK_DEBUG_ERROR("PathRemoveFileSpec(%s) failed: %x", CURRENT_DIR_PATH, GetLastError()); memset(CURRENT_DIR_PATH, 0, sizeof(CURRENT_DIR_PATH)); CURRENT_DIR_PATH_LEN = 0; } } #endif /* TDAV_UNDER_WINDOWS_CE */ if (!CURRENT_DIR_PATH_LEN) { TSK_DEBUG_ERROR("GetModuleFileNameA() failed: %x", GetLastError()); } } return CURRENT_DIR_PATH; #endif /* TDAV_UNDER_WINDOWS_RT */ }
static int populate_lo(tdav_session_msrp_t* self, tsk_bool_t initial) { if(!self || !TMEDIA_SESSION(self)->M.lo){ TSK_DEBUG_ERROR("Invalid parameter"); return -1; } if(initial){ tsdp_header_M_add_headers(TMEDIA_SESSION(self)->M.lo, TSDP_HEADER_A_VA_ARGS("setup", setup_to_string(self->setup)), tsk_null ); if(self->accept_types || self->neg_accept_type){ /* a=accept-types:message/CPIM application/octet-stream */ tsdp_header_M_add_headers(TMEDIA_SESSION(self)->M.lo, TSDP_HEADER_A_VA_ARGS("accept-types", self->accept_types ? self->accept_types : self->neg_accept_type), tsk_null); } if(self->accept_w_types || self->neg_accept_w_type){ /* a=accept-wrapped-types:application/octet-stream */ tsdp_header_M_add_headers(TMEDIA_SESSION(self)->M.lo, TSDP_HEADER_A_VA_ARGS("accept-wrapped-types", self->accept_w_types ? self->accept_w_types : self->neg_accept_w_type), tsk_null); } /*=== File Transfer ===*/ if(self->file.path){ /* Compute default 'file-selector' */ if(!self->file.selector && !TMEDIA_SESSION(self)->M.ro){ int index = tsk_strLastIndexOf(self->file.path, tsk_strlen(self->file.path), "\\"); if(index == -1){ index = tsk_strLastIndexOf(self->file.path, tsk_strlen(self->file.path), "/"); } index++; tsk_sprintf(&self->file.selector, "name:\"%s\" type:application/octet-stream", (self->file.path + index)); } /* Compute default 'file-transfer-id' */ if(!self->file.transfer_id && !TMEDIA_SESSION(self)->M.ro){ tsk_istr_t rand_string; tsk_strrandom(&rand_string); self->file.transfer_id = tsk_strdup(rand_string); } tsdp_header_M_add_headers(TMEDIA_SESSION(self)->M.lo, TSDP_HEADER_A_VA_ARGS("sendonly", tsk_null), tsk_null); } else{ tsdp_header_M_add_headers(TMEDIA_SESSION(self)->M.lo, TSDP_HEADER_A_VA_ARGS("sendrecv", tsk_null), tsk_null); } if(self->file.selector){ /* a=file-selector:name:"test.pcap" type:application/octet-stream size:11376 hash:sha-1:8D:55:24:2B:F4:F9:9B:A2:54:A3:5B:91:00:15:9E:A3:D4:48:D7:DF */ tsdp_header_M_add_headers(TMEDIA_SESSION(self)->M.lo, TSDP_HEADER_A_VA_ARGS("file-selector", self->file.selector), tsk_null); } if(self->file.transfer_id){ /* a=file-transfer-id:vscxggbwkfnqduxwfnfozvsrtkjprepg */ tsdp_header_M_add_headers(TMEDIA_SESSION(self)->M.lo, TSDP_HEADER_A_VA_ARGS("file-transfer-id", self->file.transfer_id), tsk_null); } if(self->file.disposition){ /* a=file-disposition:attachment */ tsdp_header_M_add_headers(TMEDIA_SESSION(self)->M.lo, TSDP_HEADER_A_VA_ARGS("file-disposition", self->file.disposition), tsk_null); } if(self->file.date){ /* a=file-date:creation:2010-02-13T17:50:31.763Z */ tsdp_header_M_add_headers(TMEDIA_SESSION(self)->M.lo, TSDP_HEADER_A_VA_ARGS("file-date", self->file.date), tsk_null); } if(self->file.icon){ /* a=file-icon:cid:[email protected] */ tsdp_header_M_add_headers(TMEDIA_SESSION(self)->M.lo, TSDP_HEADER_A_VA_ARGS("file-icon", self->file.icon), tsk_null); } } return 0; }