mirror of https://github.com/tailix/libshmemq.git
Partially initialize message queue
This commit is contained in:
parent
0d0c2333fb
commit
2d609d4783
|
@ -32,9 +32,12 @@ AC_FUNC_MMAP
|
|||
AC_CHECK_HEADER_STDBOOL
|
||||
AC_CHECK_HEADERS([stddef.h])
|
||||
AC_CHECK_HEADERS([stdlib.h])
|
||||
AC_CHECK_HEADERS([string.h])
|
||||
|
||||
AC_CHECK_FUNCS([ftruncate])
|
||||
AC_CHECK_FUNCS([munmap])
|
||||
AC_CHECK_FUNCS([strcpy])
|
||||
AC_CHECK_FUNCS([strlen])
|
||||
|
||||
AC_SEARCH_LIBS([shm_open], [rt])
|
||||
AC_SEARCH_LIBS([shm_unlink], [rt])
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
#include <stddef.h>
|
||||
|
||||
#define SHMEMQ_NAME_SIZE_MAX ((size_t)255)
|
||||
#define SHMEMQ_NAME_SLEN_MAX (SHMEMQ_NAME_SIZE_MAX - 1)
|
||||
|
||||
#define SHMEMQ_FRAME_SIZE ((size_t)8)
|
||||
|
||||
|
|
15
src/main.c
15
src/main.c
|
@ -5,6 +5,7 @@
|
|||
#include <shmemq.h>
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
struct Shmemq *shmemq_new(
|
||||
const char *const name,
|
||||
|
@ -35,5 +36,19 @@ enum Shmemq_Error shmemq_init(
|
|||
const char *const name,
|
||||
const size_t size
|
||||
) {
|
||||
if (strlen(name) > SHMEMQ_NAME_SLEN_MAX || name[0] != '/') {
|
||||
return SHMEMQ_ERROR_INVALID_NAME;
|
||||
}
|
||||
|
||||
for (const char *chr = &name[1]; *chr; ++chr) {
|
||||
if (*chr == '/') return SHMEMQ_ERROR_INVALID_NAME;
|
||||
}
|
||||
|
||||
strcpy(shmemq->name, name);
|
||||
|
||||
shmemq->is_consumer = size == 0;
|
||||
|
||||
shmemq->buffer = NULL;
|
||||
|
||||
return SHMEMQ_ERROR_NONE;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue