Skip to content

A small, efficient C library providing missing utilities for safe and comfortable string manipulation and time helpers. Designed to be lightweight, portable, and easy to integrate into C projects.

License

Notifications You must be signed in to change notification settings

murapadev/strap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

STRAP — STRAP Trims, Rejoins And Parses

CI License C

A small, efficient C library providing missing utilities for safe and comfortable string manipulation and time helpers. Designed to be lightweight, portable, and easy to integrate into C projects.

📚 Documentation

🚀 Quick Start

# Clone and build
git clone https://github.com/murapadev/strap.git
cd strap
make

# Install (optional)
sudo make install

# Benchmarks (optional)
make bench
./benchmarks/strap_bench

🔔 What's New in v0.2

  • Faster joins and file reads through tighter allocation strategies
  • New helpers: strstartswith, strendswith, and strreplace
  • Unified error reporting via strap_last_error() and strap_error_string()
  • Scriptable micro-benchmarks with make bench

Basic Usage

#include <stdio.h>
#include "strap.h"

int main(void) {
    // Safe line reading
    char *line = afgets(stdin);
    if (line) {
        char *trimmed = strtrim(line);
        printf("Trimmed: '%s'\n", trimmed);
        free(line);
        free(trimmed);
    }

    // String joining
    const char *parts[] = {"Hello", "world", "from", "STRAP"};
    char *joined = strjoin(parts, 4, " ");
    printf("%s\n", joined);
    free(joined);

    return 0;
}

📚 See the Wiki for complete documentation, examples, and advanced usage.

🤝 Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines.

⚠️ Error Handling

All STRAP APIs set a thread-local error code. On failure, query the cause:

char *trimmed = strtrim(raw_line);
if (!trimmed) {
    fprintf(stderr, "STRAP error: %s\n", strap_error_string(strap_last_error()));
    return EXIT_FAILURE;
}

Call strap_clear_error() when you want to reset the status manually.

🗺️ Roadmap

v0.2 (Current) ✅

  • Performance optimizations
  • Additional string utilities
  • Enhanced error handling
  • Benchmark suite

v0.3 (In Progress)

  • Extended locale-aware helpers
  • Optional arena allocator for transient strings
  • Timezone-aware time helpers

📄 License

MIT Licensed - see LICENSE for details.


STRAP - Making C string and time operations safer and more convenient.

About

A small, efficient C library providing missing utilities for safe and comfortable string manipulation and time helpers. Designed to be lightweight, portable, and easy to integrate into C projects.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published