diff options
Diffstat (limited to 'lib9p/9p.c')
-rw-r--r-- | lib9p/9p.c | 95 |
1 files changed, 0 insertions, 95 deletions
diff --git a/lib9p/9p.c b/lib9p/9p.c deleted file mode 100644 index e7b20b5..0000000 --- a/lib9p/9p.c +++ /dev/null @@ -1,95 +0,0 @@ -/* lib9p/9p.c - Base 9P protocol utilities for both clients and servers - * - * Copyright (C) 2024-2025 Luke T. Shumaker <lukeshu@lukeshu.com> - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - -#include <inttypes.h> /* for PRIu{n} */ -#include <stdarg.h> /* for va_* */ -#include <string.h> /* for strncpy() */ - -#include <libfmt/fmt.h> /* for fmt_vsnprintf() */ - -#include <lib9p/9p.h> - -/* strings ********************************************************************/ - -struct lib9p_s lib9p_str(char *s) { - if (!s) - return (struct lib9p_s){0}; - return (struct lib9p_s){ - .len = strlen(s), - .utf8 = s, - }; -} -struct lib9p_s lib9p_strn(char *s, size_t maxlen) { - if (maxlen == 0 || !s) - return (struct lib9p_s){0}; - return (struct lib9p_s){ - .len = strnlen(s, maxlen), - .utf8 = s, - }; -} -struct lib9p_s lib9p_str_slice(struct lib9p_s s, uint16_t beg, uint16_t end) { - assert(s.len == 0 || s.utf8); - assert(beg <= end && end <= s.len); - return (struct lib9p_s){ - .len = end - beg, - .utf8 = &s.utf8[beg], - }; -} -bool lib9p_str_eq(struct lib9p_s a, struct lib9p_s b) { - return a.len == b.len && - (a.len == 0 || memcmp(a.utf8, b.utf8, a.len) == 0); -} - -/* ctx ************************************************************************/ - -void lib9p_ctx_clear_error(struct lib9p_ctx *ctx) { - assert(ctx); -#if CONFIG_9P_ENABLE_9P2000_u - ctx->err_num = 0; -#endif - ctx->err_msg[0] = '\0'; -} - -bool lib9p_ctx_has_error(struct lib9p_ctx *ctx) { - assert(ctx); - return ctx->err_msg[0]; -} - -int lib9p_error(struct lib9p_ctx *ctx, lib9p_errno_t linux_errno, char const *msg) { - if (lib9p_ctx_has_error(ctx)) - return -1; - strncpy(ctx->err_msg, msg, sizeof(ctx->err_msg)); - ctx->err_msg[sizeof(ctx->err_msg)-1] = '\0'; - -#if CONFIG_9P_ENABLE_9P2000_u - ctx->err_num = linux_errno; -#else - (void)(linux_errno); -#endif - - return -1; -} - -int lib9p_errorf(struct lib9p_ctx *ctx, lib9p_errno_t linux_errno, char const *fmt, ...) { - int n; - va_list args; - - if (lib9p_ctx_has_error(ctx)) - return -1; - va_start(args, fmt); - n = fmt_vsnprintf(ctx->err_msg, sizeof(ctx->err_msg), fmt, args); - va_end(args); - if ((size_t)(n+1) < sizeof(ctx->err_msg)) - memset(&ctx->err_msg[n+1], 0, sizeof(ctx->err_msg)-(n+1)); - -#if CONFIG_9P_ENABLE_9P2000_u - ctx->err_num = linux_errno; -#else - (void)(linux_errno); -#endif - - return -1; -} |