#include "libnazgul.h"
#include "ids.h"

int msgQueueElemCreate(msgQueueElemId finalQueueElemId,
		       msgQueueId queueId, int counter)
{
	msgQueueElemId queueElemId;
	int queueElemFd;

	msgQueueElemIdIntern(queueElemId, queueId, counter);
	strcpy(finalQueueElemId, queueElemId);

	queueElemFd = shm_open(queueElemId,
			       O_RDWR | O_CREAT | O_EXCL | O_TRUNC,
			       SHM_DEFAULT_MODE);
	if (queueElemFd == -1) {
		NZG_ERROR("shm_open : msgQueueElem creation", queueElemId);
		goto ERROR;
	}

	if (ftruncate(queueElemFd, sizeof(msgQueueElem)) < 0) {
		NZG_ERROR("ftruncate", queueElemId);
		goto ERROR;
	}

	close(queueElemFd);
	return 0;
 ERROR:
	return -1;
}