📄 events_util.c
字号:
/* Unix SMB/CIFS implementation. Copyright (C) Andrew Tridgell 2005 Copyright (C) Jelmer Vernooij 2005 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.*/#include "replace.h"#include "talloc.h"/** return the number of elements in a string list*/static size_t str_list_length(const char **list){ size_t ret; for (ret=0;list && list[ret];ret++) /* noop */ ; return ret;}/** add an entry to a string list*/const char **str_list_add(const char **list, const char *s){ size_t len = str_list_length(list); const char **ret; ret = talloc_realloc(NULL, list, const char *, len+2); if (ret == NULL) return NULL; ret[len] = talloc_strdup(ret, s); if (ret[len] == NULL) return NULL; ret[len+1] = NULL; return ret;}/** compare two timeval structures. Return -1 if tv1 < tv2 Return 0 if tv1 == tv2 Return 1 if tv1 > tv2*/static int timeval_compare(const struct timeval *tv1, const struct timeval *tv2){ if (tv1->tv_sec > tv2->tv_sec) return 1; if (tv1->tv_sec < tv2->tv_sec) return -1; if (tv1->tv_usec > tv2->tv_usec) return 1; if (tv1->tv_usec < tv2->tv_usec) return -1; return 0;}/** return a zero timeval*/struct timeval timeval_zero(void){ struct timeval tv; tv.tv_sec = 0; tv.tv_usec = 0; return tv;}/** return true if a timeval is zero*/bool timeval_is_zero(const struct timeval *tv){ return tv->tv_sec == 0 && tv->tv_usec == 0;}/** return a timeval for the current time*/struct timeval timeval_current(void){ struct timeval tv; GetTimeOfDay(&tv); return tv;}/** return a timeval struct with the given elements*/struct timeval timeval_set(uint32_t secs, uint32_t usecs){ struct timeval tv; tv.tv_sec = secs; tv.tv_usec = usecs; return tv;}/** return the difference between two timevals as a timeval if tv1 comes after tv2, then return a zero timeval (this is *tv2 - *tv1)*/struct timeval timeval_until(const struct timeval *tv1, const struct timeval *tv2){ struct timeval t; if (timeval_compare(tv1, tv2) >= 0) { return timeval_zero(); } t.tv_sec = tv2->tv_sec - tv1->tv_sec; if (tv1->tv_usec > tv2->tv_usec) { t.tv_sec--; t.tv_usec = 1000000 - (tv1->tv_usec - tv2->tv_usec); } else { t.tv_usec = tv2->tv_usec - tv1->tv_usec; } return t;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -