use nix build & meson & zlog
This commit is contained in:
parent
0123623742
commit
346768a144
60 changed files with 13739 additions and 0 deletions
126
src/lib/window.c
Normal file
126
src/lib/window.c
Normal file
|
|
@ -0,0 +1,126 @@
|
|||
#include <errno.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "utils.h"
|
||||
#include "xce/errnox.h"
|
||||
#include "xce/types.h"
|
||||
|
||||
static void kill_timewindow_time(xce_timewindow_time_t* t)
|
||||
{
|
||||
FREEUP(t);
|
||||
}
|
||||
|
||||
static void kill_timewindow_seg_config(xce_timewindow_seg_config_t* s)
|
||||
{
|
||||
if (s == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
FREEUP(s->tz);
|
||||
|
||||
kill_timewindow_time(s->open);
|
||||
kill_timewindow_time(s->close);
|
||||
FREEUP(s);
|
||||
}
|
||||
|
||||
static void kill_timewindow_config(xce_timewindow_config_t* w)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (w == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (w->segs != NULL) {
|
||||
for (i = 0; i < w->nsegs; i++) {
|
||||
xce_timewindow_seg_config_t* seg = w->segs[i];
|
||||
|
||||
kill_timewindow_seg_config(seg);
|
||||
}
|
||||
|
||||
FREEUP(w->segs);
|
||||
}
|
||||
|
||||
FREEUP(w);
|
||||
}
|
||||
|
||||
void free_timewindow_config(xce_timewindow_config_t* w)
|
||||
{
|
||||
kill_timewindow_config(w);
|
||||
}
|
||||
|
||||
static xce_timewindow_seg_config_t* dup_timewindow_seg_config(xce_timewindow_seg_config_t* src)
|
||||
{
|
||||
xce_timewindow_seg_config_t* seg = NULL;
|
||||
|
||||
if (src == NULL) {
|
||||
errno = EINVAL;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
seg = (xce_timewindow_seg_config_t*)calloc(1, sizeof(*seg));
|
||||
if (seg == NULL) {
|
||||
errno = ENOMEM;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
seg->tz = strdup(src->tz);
|
||||
if (seg->tz == NULL) {
|
||||
kill_timewindow_seg_config(seg);
|
||||
errno = ENOMEM;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
seg->open = (xce_timewindow_time_t*)calloc(1, sizeof(xce_timewindow_time_t));
|
||||
seg->close = (xce_timewindow_time_t*)calloc(1, sizeof(xce_timewindow_time_t));
|
||||
if ((seg->open == NULL) || (seg->close == NULL)) {
|
||||
kill_timewindow_seg_config(seg);
|
||||
errno = ENOMEM;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
memcpy(seg->open, src->open, sizeof(xce_timewindow_time_t));
|
||||
memcpy(seg->close, src->close, sizeof(xce_timewindow_time_t));
|
||||
|
||||
return seg;
|
||||
}
|
||||
|
||||
xce_timewindow_config_t* dup_timewindow_config(xce_timewindow_config_t* src)
|
||||
{
|
||||
xce_timewindow_config_t* w;
|
||||
int i;
|
||||
|
||||
if (src == NULL) {
|
||||
errno = EINVAL;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
w = (xce_timewindow_config_t*)calloc(1, sizeof(*w));
|
||||
if (w == NULL) {
|
||||
errno = ENOMEM;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
w->segs = (xce_timewindow_seg_config_t**)calloc(src->nsegs,
|
||||
sizeof(xce_timewindow_seg_config_t*));
|
||||
if (w->segs == NULL) {
|
||||
kill_timewindow_config(w);
|
||||
errno = ENOMEM;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
for (i = 0; i < src->nsegs; i++) {
|
||||
w->segs[i] = dup_timewindow_seg_config(src->segs[i]);
|
||||
if (w->segs[i] == NULL) {
|
||||
kill_timewindow_config(w);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
w->nsegs = src->nsegs;
|
||||
|
||||
return w;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue