⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 events_util.c

📁 samba最新软件
💻 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 + -