StrInitStack

Table of Contents

StrInitStack

Description

Initialize given string but use memory from stack. Such strings cannot be dynamically resized!!

Parameters

NameDirectionDescription
strinPointer to string memory that needs to be initialized.
neinNumber of elements to allocate stack memory for.

Success

str

Failure

NULL

Usage example (Cross-references)

    if (NULL == dir) {
    Str err;
    StrInitStack(err, SYS_ERROR_STR_MAX_LENGTH, {
    SysStrError(errno, &err);
    LOG_ERROR("opendir(\"{}\") failed : {}", path, err);
    if (file == INVALID_HANDLE_VALUE) {
    Str err;
    StrInitStack(err, SYS_ERROR_STR_MAX_LENGTH, {
    SysStrError(errno, &err);
    LOG_ERROR("failed to open file: {}\n", err);
    if (!GetFileSizeEx(file, &file_size)) {
    Str err;
    StrInitStack(err, SYS_ERROR_STR_MAX_LENGTH, {
    SysStrError(errno, &err);
    LOG_ERROR("failed to get file size: {}\n", err);
    } else {
    Str err;
    StrInitStack(err, SYS_ERROR_STR_MAX_LENGTH, {
    SysStrError(errno, &err);
    LOG_ERROR("failed to get file size: {}\n", err);
    #endif
    Str syserr;
    StrInitStack(syserr, SYS_ERROR_STR_MAX_LENGTH, {
    SysStrError(errno, &syserr);
    LOG_ERROR("Failed to get localtime : {}", syserr);
    !SysGetEnv("TEMPDIR", &log_dir) && !SysGetEnv("PWD", &log_dir)) {
    Str syserr;
    StrInitStack(syserr, SYS_ERROR_STR_MAX_LENGTH, {
    fprintf(
    stderr,
    if (e || !stderror) {
    Str syserr;
    StrInitStack(syserr, SYS_ERROR_STR_MAX_LENGTH, {
    SysStrError(e, &syserr);
    LOG_ERROR("Failed to open log file : {}", syserr);
    LOG_STREAM_FALLBACK: {
    Str syserr;
    StrInitStack(syserr, SYS_ERROR_STR_MAX_LENGTH, {
    fprintf(stderr, "Error opening log file, will write logs to stderr\n");
    });
    if (!buffer) {
    Str syserr;
    StrInitStack(syserr, SYS_ERROR_STR_MAX_LENGTH, {
    SysStrError(errno, &syserr);
    LOG_FATAL("malloc() failed : {}", syserr);
    
    Str syserr = StrInit();
    StrInitStack(syserr, SYS_ERROR_STR_MAX_LENGTH, {
    SysStrError(e, &syserr);
    LOG_ERROR("fopen() failed : {}", syserr);
    fclose(file);
    Str syserr = StrInit();
    StrInitStack(syserr, SYS_ERROR_STR_MAX_LENGTH, {
    SysStrError(errno, &syserr);
    LOG_ERROR("failed to read complete file. : {}", syserr);
    if (!ptr) {
    Str syserr;
    StrInitStack(syserr, SYS_ERROR_STR_MAX_LENGTH, {
    SysStrError(errno, &syserr);
    LOG_FATAL("realloc() failed : {}", syserr);
    if (!ptr) {
    Str syserr;
    StrInitStack(syserr, SYS_ERROR_STR_MAX_LENGTH, {
    SysStrError(errno, &syserr);
    LOG_FATAL("realloc() failed : {}", syserr);
    // Test StrInitStack macro
    bool test_str_init_stack(void) {
    printf("Testing StrInitStack\n");
    
    bool result = true;
    // Test with the actual StrInitStack macro
    Str stack_str;
    StrInitStack(stack_str, 20, {
    // Inside the scope where the stack string is valid
    StrPushBackZstr(&stack_str, "Hello, Stack!");

Share :