Пример #1
0
int main( int argc, char const* argv[] )
{
	TM_UNREFERENCED_PARAM( argc );
	TM_UNREFERENCED_PARAM( argv );

	return 0;
}
Пример #2
0
TMU_DEF tmu_contents_result tmu_current_working_directory(tm_size_t extra_size) {
    TM_UNREFERENCED_PARAM(extra_size);
    TM_ASSERT_VALID_SIZE(extra_size);

    tmu_contents_result result = {{TM_NULL, 0, 0}, TM_OK};

    errno = 0;
    tmu_char16* dir = _wgetcwd(TM_NULL, 1);
    if (!dir) {
        result.ec = (errno != 0) ? errno : TM_ENOMEM;
        return result;
    }

    tmu_utf16_stream dir_stream = tmu_utf16_make_stream(dir);
    tmu_conversion_result conv_result =
        tmu_utf8_from_utf16_ex(dir_stream, tmu_validate_error, /*replace_str=*/TM_NULL,
                               /*replace_str_len=*/0,
                               /*nullterminate=*/TM_TRUE, /*out=*/TM_NULL, /*out_len=*/0);
    if (conv_result.ec == TM_ERANGE) {
        /* Extra size for trailing '/'. */
        tm_size_t capacity = conv_result.size + extra_size + 1;
        result.contents.data = (char*)TMU_MALLOC(capacity * sizeof(char), sizeof(char));
        if (!result.contents.data) {
            result.ec = TM_ENOMEM;
        } else {
            result.contents.capacity = capacity;
            conv_result =
                tmu_utf8_from_utf16_ex(dir_stream, tmu_validate_error, /*replace_str=*/TM_NULL,
                                       /*replace_str_len=*/0,
                                       /*nullterminate=*/TM_TRUE, result.contents.data, result.contents.capacity);
            TM_ASSERT(conv_result.ec == TM_OK);
            TM_ASSERT(conv_result.size + 2 < result.contents.capacity);
            result.contents.size = conv_result.size;
            tmu_to_tmu_path(&result.contents, /*is_dir=*/TM_TRUE);
        }
    } else {
        result.ec = conv_result.ec;
    }
    free(dir); /* _wgetcwd calls specifically malloc, we need to directly use free instead of TMU_FREE.*/
    return result;
}