这篇教程C++ strtoul函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中strtoul函数的典型用法代码示例。如果您正苦于以下问题:C++ strtoul函数的具体用法?C++ strtoul怎么用?C++ strtoul使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了strtoul函数的28个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: ini_get_var//// ini_get_var() ////void* ini_get_var(const ini_cfg_t* cfg, int cur_section, char* buf){ int i=0, j=0; int var_id = -1; // find var while(1) { if (buf[i] == '=') { buf[i] = '/0'; break; } else if (buf[i] == '/0') return (void*)0; i++; } // convert to uppercase for (j=0; j<=i; j++) { if (!buf[j]) break; else buf[j] = CHAR_TO_UPPERCASE(buf[j]); } // parse var for (j=0; j<cfg->nvars; j++) { if ((!strcmp(buf, cfg->vars[j].name)) && (cfg->vars[j].section_id == cur_section)) var_id = j; } // get data if (var_id != -1) { ini_parser_debugf("Got VAR '%s' with VALUE %s", buf, &(buf[i+1])); i++; switch (cfg->vars[var_id].type) { case UINT8: *(uint8_t*)(cfg->vars[var_id].var) = strtoul(&(buf[i]), NULL, 0); if (*(uint8_t*)(cfg->vars[var_id].var) > cfg->vars[var_id].max) *(uint8_t*)(cfg->vars[var_id].var) = cfg->vars[var_id].max; if (*(uint8_t*)(cfg->vars[var_id].var) < cfg->vars[var_id].min) *(uint8_t*)(cfg->vars[var_id].var) = cfg->vars[var_id].min; break; case INT8: *(int8_t*)(cfg->vars[var_id].var) = strtol(&(buf[i]), NULL, 0); if (*(int8_t*)(cfg->vars[var_id].var) > cfg->vars[var_id].max) *(int8_t*)(cfg->vars[var_id].var) = cfg->vars[var_id].max; if (*(int8_t*)(cfg->vars[var_id].var) < cfg->vars[var_id].min) *(int8_t*)(cfg->vars[var_id].var) = cfg->vars[var_id].min; break; case UINT16: *(uint8_t*)(cfg->vars[var_id].var) = strtoul(&(buf[i]), NULL, 0); if (*(uint16_t*)(cfg->vars[var_id].var) > cfg->vars[var_id].max) *(uint16_t*)(cfg->vars[var_id].var) = cfg->vars[var_id].max; if (*(uint16_t*)(cfg->vars[var_id].var) < cfg->vars[var_id].min) *(uint16_t*)(cfg->vars[var_id].var) = cfg->vars[var_id].min; break; case INT16: *(int16_t*)(cfg->vars[var_id].var) = strtol(&(buf[i]), NULL, 0); if (*(int16_t*)(cfg->vars[var_id].var) > cfg->vars[var_id].max) *(int16_t*)(cfg->vars[var_id].var) = cfg->vars[var_id].max; if (*(int16_t*)(cfg->vars[var_id].var) < cfg->vars[var_id].min) *(int16_t*)(cfg->vars[var_id].var) = cfg->vars[var_id].min; break; case UINT32: *(uint8_t*)(cfg->vars[var_id].var) = strtoul(&(buf[i]), NULL, 0); if (*(uint32_t*)(cfg->vars[var_id].var) > cfg->vars[var_id].max) *(uint32_t*)(cfg->vars[var_id].var) = cfg->vars[var_id].max; if (*(uint32_t*)(cfg->vars[var_id].var) < cfg->vars[var_id].min) *(uint32_t*)(cfg->vars[var_id].var) = cfg->vars[var_id].min; break; case INT32: *(int32_t*)(cfg->vars[var_id].var) = strtol(&(buf[i]), NULL, 0); if (*(int32_t*)(cfg->vars[var_id].var) > cfg->vars[var_id].max) *(int32_t*)(cfg->vars[var_id].var) = cfg->vars[var_id].max; if (*(int32_t*)(cfg->vars[var_id].var) < cfg->vars[var_id].min) *(int32_t*)(cfg->vars[var_id].var) = cfg->vars[var_id].min; break;#ifdef INI_ENABLE_FLOAT case FLOAT: *(float*)(cfg->vars[var_id].var) = strtof(&(buf[i]), NULL); if (*(float*)(cfg->vars[var_id].var) > cfg->vars[var_id].max) *(float*)(cfg->vars[var_id].var) = cfg->vars[var_id].max; if (*(float*)(cfg->vars[var_id].var) < cfg->vars[var_id].min) *(float*)(cfg->vars[var_id].var) = cfg->vars[var_id].min; break;#endif case STRING: strncpy((char*)(cfg->vars[var_id].var), &(buf[i]), cfg->vars[var_id].max); break; case CUSTOM_HANDLER: ((custom_handler_t*)(cfg->vars[var_id].var))(&(buf[i])); break; } return (void*)(&(cfg->vars[var_id].var)); } return (void*)0;}
开发者ID:ThomasDerZweifler,项目名称:mist-board,代码行数:80,
示例2: udp_parse_remotestatic int udp_parse_remote (int link, char * premote) { // This routine will parse a remote address string in any of these forms - // // llll:w.x.y.z:rrrr // llll:name.domain.com:rrrr // llll::rrrr // w.x.y.z:rrrr // name.domain.com:rrrr // // In all examples, "llll" is the local port number that we use for listening, // and "rrrr" is the remote port number that we use for transmitting. The // local port is optional and may be omitted, in which case it defaults to the // same as the remote port. This works fine if the other IMP is actually on // a different host, but don't try that with localhost - you'll be talking to // yourself!! In both cases, "w.x.y.z" is a dotted IP for the remote machine // and "name.domain.com" is its name (which will be looked up to get the IP). // If the host name/IP is omitted then it defaults to "localhost". char * end; int32_t lportno, rport; char host [64], port [16]; if (* premote == '/0') return -1; memset (udp_links [link] . lport, 0, sizeof (udp_links [link] . lport)); memset (udp_links [link] . rhost, 0, sizeof (udp_links [link] . rhost)); memset (udp_links [link] . rport, 0, sizeof (udp_links [link] . rport)); // Handle the llll::rrrr case first if (2 == sscanf (premote, "%d::%d", & lportno, & rport)) { if ((lportno < 1) || (lportno >65535) || (rport < 1) || (rport >65535)) return -1; sprintf (udp_links [link] . lport, "%d", lportno); udp_links [link] . lportno = lportno; sprintf (udp_links [link] . rhost, "localhost"); sprintf (udp_links [link] . rport, "%d", rport); udp_links [link] . rportno = rport; return 0; } // Look for the local port number and save it away. lportno = strtoul (premote, & end, 10); if ((* end == ':') && (lportno > 0)) { sprintf (udp_links [link] . lport, "%d", lportno); udp_links [link] . lportno = lportno; premote = end + 1; } if (sim_parse_addr (premote, host, sizeof (host), "localhost", port, sizeof (port), NULL, NULL)) return -1; sprintf (udp_links [link] . rhost, "%s", host); sprintf (udp_links [link] . rport, "%s", port); udp_links [link] . rportno = atoi (port); if (udp_links [link] . lport [0] == '/0') { strcpy (udp_links [link] . lport, port); udp_links [link] . lportno = atoi (port); } if ((strcmp (udp_links [link] . lport, port) == 0) && (strcmp ("localhost", host) == 0)) fprintf (stderr, "WARNING - use different transmit and receive ports!/n"); return 0; }
开发者ID:charlesUnixPro,项目名称:DATANET6600,代码行数:65,
示例3: scontrol_calleridextern int scontrol_callerid(int argc, char **argv){ int af, ver = 4; unsigned char ip_src[sizeof(struct in6_addr)], ip_dst[sizeof(struct in6_addr)]; uint32_t port_src, port_dst, job_id; network_callerid_msg_t req; char node_name[MAXHOSTNAMELEN], *ptr; if (argc == 5) { ver = strtoul(argv[4], &ptr, 0); if (ptr && ptr[0]) { error("Address family not an integer"); return SLURM_ERROR; } } if (ver != 4 && ver != 6) { error("Invalid address family: %d", ver); return SLURM_ERROR; } af = ver == 4 ? AF_INET : AF_INET6; if (!inet_pton(af, argv[0], ip_src)) { error("inet_pton failed for '%s'", argv[0]); return SLURM_ERROR; } port_src = strtoul(argv[1], &ptr, 0); if (ptr && ptr[0]) { error("Source port not an integer"); return SLURM_ERROR; } if (!inet_pton(af, argv[2], ip_dst)) { error("scontrol_callerid: inet_pton failed for '%s'", argv[2]); return SLURM_ERROR; } port_dst = strtoul(argv[3], &ptr, 0); if (ptr && ptr[0]) { error("Destination port not an integer"); return SLURM_ERROR; } memcpy(req.ip_src, ip_src, 16); memcpy(req.ip_dst, ip_dst, 16); req.port_src = port_src; req.port_dst = port_dst; req.af = af; if (slurm_network_callerid(req, &job_id, node_name, MAXHOSTNAMELEN) != SLURM_SUCCESS) { fprintf(stderr, "slurm_network_callerid: unable to retrieve callerid data from remote slurmd/n"); return SLURM_FAILURE; } else if (job_id == (uint32_t)NO_VAL) { fprintf(stderr, "slurm_network_callerid: remote job id indeterminate/n"); return SLURM_FAILURE; } else { printf("%u %s/n", job_id, node_name); return SLURM_SUCCESS; }}
开发者ID:diorsman,项目名称:slurm,代码行数:65,
示例4: cmd_writestatic int cmd_write(PROGRAMMER * pgm, struct avrpart * p, int argc, char * argv[]){ char * e; int len, maxsize; char * memtype; unsigned long addr, i; unsigned char * buf; unsigned char b; int rc; int werror; AVRMEM * mem; if (argc < 4) { fprintf(stderr, "Usage: write <memtype> <addr> <byte1> " "<byte2> ... byteN>/n"); return -1; } memtype = argv[1]; mem = avr_locate_mem(p, memtype); if (mem == NULL) { fprintf(stderr, "/"%s/" memory type not defined for part /"%s/"/n", memtype, p->desc); return -1; } maxsize = mem->size; addr = strtoul(argv[2], &e, 0); if (*e || (e == argv[2])) { fprintf(stderr, "%s (write): can't parse address /"%s/"/n", progname, argv[2]); return -1; } if (addr > maxsize) { fprintf(stderr, "%s (write): address 0x%05lx is out of range for %s memory/n", progname, addr, memtype); return -1; } /* number of bytes to write at the specified address */ len = argc - 3; if ((addr + len) > maxsize) { fprintf(stderr, "%s (write): selected address and # bytes exceed " "range for %s memory/n", progname, memtype); return -1; } buf = malloc(len); if (buf == NULL) { fprintf(stderr, "%s (write): out of memory/n", progname); return -1; } for (i=3; i<argc; i++) { buf[i-3] = strtoul(argv[i], &e, 0); if (*e || (e == argv[i])) { fprintf(stderr, "%s (write): can't parse byte /"%s/"/n", progname, argv[i]); free(buf); return -1; } } pgm->err_led(pgm, OFF); for (werror=0, i=0; i<len; i++) { rc = avr_write_byte(pgm, p, mem, addr+i, buf[i]); if (rc) { fprintf(stderr, "%s (write): error writing 0x%02x at 0x%05lx, rc=%d/n", progname, buf[i], addr+i, rc); if (rc == -1) fprintf(stderr, "write operation not supported on memory type /"%s/"/n", mem->desc); werror = 1; } rc = pgm->read_byte(pgm, p, mem, addr+i, &b); if (b != buf[i]) { fprintf(stderr, "%s (write): error writing 0x%02x at 0x%05lx cell=0x%02x/n", progname, buf[i], addr+i, b); werror = 1; } if (werror) { pgm->err_led(pgm, ON); } } free(buf);//.........这里部分代码省略.........
开发者ID:JasonBeard,项目名称:usbprog5,代码行数:101,
示例5: job_will_run2/* * job_will_run2 - Determine if, when and where a pending job can be * initiated with the currently running jobs either preempted * or left running as on other resources * cmd_ptr IN - CMD=JOBWILLRUN ARG=<JOBID> [STARTTIME=<TIME>] * NODES=<AVAIL_NODES> [PREEMPT=<JOBID1>[,<JOBID2> ..]] * err_code OUT - 0 on success or some error code * err_msg OUT - error message if any of the specified jobs can not be started * at the specified time (if given) on the available nodes. * Otherwise information on when and where the pending jobs * will be initiated * ARG=<JOBID> TASKS=<CPU_COUNT> STARTTIME=<TIME> * NODES=<USED_NODES> [PREEMPT=<JOBID1>[,<JOBID2> ..]] * NOTE: xfree() err_msg if err_code is zero * RET 0 on success, -1 on failure */extern int job_will_run2(char *cmd_ptr, int *err_code, char **err_msg){ char *arg_ptr, *buf, *tmp_buf, *tmp_char; int preemptee_cnt = 0; uint32_t jobid, *preemptee = NULL, tmp_id; time_t start_time; char *avail_nodes = NULL; /* Locks: write job, read node and partition info */ slurmctld_lock_t job_write_lock = { NO_LOCK, WRITE_LOCK, READ_LOCK, READ_LOCK, NO_LOCK }; arg_ptr = strstr(cmd_ptr, "ARG="); if (arg_ptr == NULL) { *err_code = -300; *err_msg = "JOBWILLRUN lacks ARG"; error("wiki: JOBWILLRUN lacks ARG"); return -1; } arg_ptr += 4; jobid = strtoul(arg_ptr, &tmp_char, 10); if ((tmp_char[0] != ' ') && (tmp_char[0] != '/0')) { *err_code = -300; *err_msg = "Invalid ARG value"; error("wiki: JOBWILLRUN has invalid ARG value"); return -1; } arg_ptr = strstr(cmd_ptr, "STARTTIME="); if (arg_ptr) { arg_ptr += 10; start_time = strtoul(arg_ptr, &tmp_char, 10); if ((tmp_char[0] != ' ') && (tmp_char[0] != '/0')) { *err_code = -300; *err_msg = "Invalid STARTTIME value"; error("wiki: JOBWILLRUN has invalid STARTTIME value"); return -1; } } else { start_time = time(NULL); } arg_ptr = strstr(cmd_ptr, "PREEMPT="); if (arg_ptr) { arg_ptr += 8; preemptee = xmalloc(sizeof(uint32_t) * strlen(arg_ptr)); while (1) { tmp_id = strtoul(arg_ptr, &tmp_char, 10); if ((tmp_char[0] != ' ') && (tmp_char[0] != '/0') && (tmp_char[0] != ',')) { *err_code = -300; *err_msg = "Invalid PREEMPT value"; error("wiki: JOBWILLRUN has invalid PREEMPT " "value"); xfree(preemptee); xfree(avail_nodes); return -1; } preemptee[preemptee_cnt++] = tmp_id; if (tmp_char[0] != ',') break; arg_ptr = tmp_char + 1; } } /* Keep this last, since we modify the input string */ arg_ptr = strstr(cmd_ptr, "NODES="); if (arg_ptr) { arg_ptr += 6; avail_nodes = xstrdup(arg_ptr); arg_ptr = strchr(avail_nodes, ' '); if (arg_ptr) arg_ptr[0] = '/0'; } else { *err_code = -300; *err_msg = "Missing NODES value"; error("wiki: JOBWILLRUN lacks NODES value"); xfree(preemptee); return -1; } lock_slurmctld(job_write_lock); buf = _will_run_test2(jobid, start_time, avail_nodes, preemptee, preemptee_cnt,//.........这里部分代码省略.........
开发者ID:Q-Leap-Networks,项目名称:qlustar-slurm,代码行数:101,
示例6: ACConfigvoid ACConfig(instance_parameter *ins_para,struct list *lpublic,struct list *lwcontrol,struct list *lwlan){ int ret = 0; int flag = 1; char *endptr = NULL; char mtu[20] = { 0 }; char log_stat[20] = { 0 }; char log_size[20] = { 0 }; char ap_static_state[5] = { 0 }; int static_state = 0; char ac_exten_infor_switch[10] = { 0 }; char neidead_inter[10] = { 0 }; char asd_arp_listen_switch[10] = { 0 }; char asd_log_level[10] = { 0 }; char response_sta_probe_request[10] = { 0 }; char trap_level[5] = { 0 }; char warm_standby_type[10] = { 0 }; char warm_standby_addr[20] = { 0 }; char ip1[4] = { 0 }; char ip2[4] = { 0 }; char ip3[4] = { 0 }; char ip4[4] = { 0 }; char add_ac_listen_if[50] = { 0 }; char del_ac_listen_if[50] = { 0 }; char user_set_vlan[10] = { 0 }; char country_code[5] = { 0 }; char temp[100] = { 0 }; char max_wlan_num[10] = { 0 }; char max_wtp_num[10] = { 0 }; char max_radio_num[10] = { 0 }; /***********************set wid max mtu*****************************/ memset(mtu,0,sizeof(mtu)); cgiFormStringNoNewlines("mtu",mtu,20); if(strcmp(mtu,"")!=0) { ret = config_wireless_max_mtu(ins_para->parameter,ins_para->connection,mtu); switch(ret) { case -1:ShowAlert(search(lwcontrol,"mtu_num")); flag = 0; break; case 1: break; case -2:ShowAlert(search(lpublic,"oper_fail")); flag = 0; break; } } /***********************set wid log switch*****************************/ memset(log_stat,0,sizeof(log_stat)); cgiFormStringNoNewlines("log",log_stat,20); if(strcmp(log_stat,"")!=0) { ret = set_wid_log_switch_cmd(ins_para->parameter,ins_para->connection,log_stat); switch(ret) { case 1:break; case -1:ShowAlert(search(lpublic,"oper_fail")); flag = 0; break; } } /***********************set wid log switch*****************************/ memset(log_size,0,sizeof(log_size)); cgiFormStringNoNewlines("log_size",log_size,20); if(strcmp(log_size,"")!=0) { ret = set_wid_log_size_cmd(ins_para->parameter,ins_para->connection,log_size); switch(ret) { case -1:flag = 0; ShowAlert(search(lwcontrol,"log_num")); break; case 1:break; case -2:flag = 0; ShowAlert(search(lpublic,"oper_fail")); break; } } /***********************set ap statistics switch*****************************/ memset(ap_static_state,0,sizeof(ap_static_state)); cgiFormStringNoNewlines("ap_static_state",ap_static_state,5); if(strcmp(ap_static_state,"")!=0) { static_state = strtoul(ap_static_state,&endptr,10); ret = set_ap_statistics(ins_para->parameter,ins_para->connection,static_state); switch(ret) { case SNMPD_CONNECTION_ERROR: case 0:flag = 0; ShowAlert(search(lwcontrol,"con_static_state_fail")); break; case 1:break; case -1:flag = 0;//.........这里部分代码省略.........
开发者ID:inibir,项目名称:daemongroup,代码行数:101,
示例7: agent_runstatic void agent_run(unsigned const char key[KDF_HASH_LEN]){ _cleanup_free_ char *path; char *agent_timeout_str; unsigned int agent_timeout; struct sockaddr_un sa, listensa; struct ucred cred; int fd, listenfd; socklen_t len; signal(SIGHUP, agent_cleanup); signal(SIGINT, agent_cleanup); signal(SIGQUIT, agent_cleanup); signal(SIGTERM, agent_cleanup); signal(SIGALRM, agent_cleanup); agent_timeout_str = getenv("LPASS_AGENT_TIMEOUT"); agent_timeout = 60 * 60; /* One hour by default. */ if (agent_timeout_str && strlen(agent_timeout_str)) agent_timeout = strtoul(agent_timeout_str, NULL, 10); if (agent_timeout) alarm(agent_timeout); path = agent_socket_path(); if (strlen(path) >= sizeof(sa.sun_path)) die("Path too large for agent control socket."); fd = socket(AF_UNIX, SOCK_STREAM, 0); memset(&sa, 0, sizeof(sa)); sa.sun_family = AF_UNIX; strlcpy(sa.sun_path, path, sizeof(sa.sun_path)); unlink(path); if (bind(fd, (struct sockaddr *)&sa, SUN_LEN(&sa)) < 0 || listen(fd, 16) < 0) { listenfd = errno; close(fd); unlink(path); errno = listenfd; die_errno("bind|listen"); } for (len = sizeof(listensa); (listenfd = accept(fd, (struct sockaddr *)&listensa, &len)) > 0; len = sizeof(listensa)) { if (agent_socket_get_cred(listenfd, &cred) < 0) { close(listenfd); continue; } if (cred.uid != getuid() || cred.gid != getgid() || !process_is_same_executable(cred.pid)) { close(listenfd); continue; }#if SOCKET_SEND_PID == 1 pid_t pid = getpid(); IGNORE_RESULT(write(listenfd, &pid, sizeof(pid)));#endif IGNORE_RESULT(write(listenfd, key, KDF_HASH_LEN)); close(listenfd); } listenfd = errno; close(fd); unlink(path); errno = listenfd; die_errno("accept");}
开发者ID:JBTech,项目名称:lastpass-cli,代码行数:66,
示例8: sprintfbool ASessionDescription::getDimensions( size_t index, unsigned long PT, int32_t *width, int32_t *height) const { *width = 0; *height = 0; char key[20]; sprintf(key, "a=framesize:%lu", PT); AString value; if (!findAttribute(index, key, &value)) {#ifndef ANDROID_DEFAULT_CODE // try to get dimensions from cliprect if no framesize strcpy(key, "a=cliprect"); if (!findAttribute(index, key, &value)) { ALOGW("no framesize and cliprect, try Width/Height"); strcpy(key, "a=Width"); if (!findAttribute(index, key, &value)) { return false; } int w = parseString(value.c_str()); strcpy(key, "a=Height"); if (!findAttribute(index, key, &value)) { return false; } int h = parseString(value.c_str()); if (w > 0 && h > 0) { *width = w; *height = h; return true; } return false; } const char *s = value.c_str(); int a = -1, b = -1, c = -1, d = -1; sscanf(s, "%d,%d,%d,%d", &a, &b, &c, &d); if (a == -1 || b == -1 || c == -1 || d == -1) return false; *height = c - a; *width = d - b; return true;#else return false;#endif // #ifndef ANDROID_DEFAULT_CODE } const char *s = value.c_str(); char *end; *width = strtoul(s, &end, 10); CHECK_GT(end, s); CHECK_EQ(*end, '-'); s = end + 1; *height = strtoul(s, &end, 10); CHECK_GT(end, s); CHECK_EQ(*end, '/0'); return true;}
开发者ID:Jiangyi,项目名称:12055,代码行数:61,
示例9: CHECKbool ASessionDescription::getDurationUs(int64_t *durationUs) const { *durationUs = 0; CHECK(mIsValid); AString value; if (!findAttribute(0, "a=range", &value)) { return false; }#ifndef ANDROID_DEFAULT_CODE if (strncmp(value.c_str(), "npt=", 4) && strncmp(value.c_str(), "npt:", 4)) {#else if (strncmp(value.c_str(), "npt=", 4)) {#endif // #ifndef ANDROID_DEFAULT_CODE return false; } float from, to; if (!parseNTPRange(value.c_str() + 4, &from, &to)) { return false; } *durationUs = (int64_t)((to - from) * 1E6); return true;}// staticvoid ASessionDescription::ParseFormatDesc( const char *desc, int32_t *timescale, int32_t *numChannels) { const char *slash1 = strchr(desc, '/'); CHECK(slash1 != NULL); const char *s = slash1 + 1; char *end; unsigned long x = strtoul(s, &end, 10); CHECK_GT(end, s); CHECK(*end == '/0' || *end == '/'); *timescale = x; *numChannels = 1; if (*end == '/') { s = end + 1; unsigned long x = strtoul(s, &end, 10); CHECK_GT(end, s); CHECK_EQ(*end, '/0'); *numChannels = x; }}// staticbool ASessionDescription::parseNTPRange( const char *s, float *npt1, float *npt2) { if (s[0] == '-') { return false; // no start time available. } if (!strncmp("now", s, 3)) { return false; // no absolute start time available } char *end; *npt1 = strtof(s, &end); if (end == s || *end != '-') { // Failed to parse float or trailing "dash". return false; } s = end + 1; // skip the dash. if (!strncmp("now", s, 3)) { return false; // no absolute end time available } *npt2 = strtof(s, &end); #ifndef ANDROID_DEFAULT_CODE //We support range string as "Range: npt=1.0000-" return true;#else if (end == s || *end != '/0') { return false; } return *npt2 > *npt1;#endif}#ifndef ANDROID_DEFAULT_CODE bool ASessionDescription::getBitrate(size_t index, int32_t* bitrate) const { char key[] = "b=AS"; AString value; if (!findAttribute(index, key, &value)) return false; int32_t b = atoi(value.c_str()); b *= 1000; if (b < 0)//.........这里部分代码省略.........
开发者ID:Jiangyi,项目名称:12055,代码行数:101,
示例10: badvoid bad(){ size_t data; /* define a function pointer */ void (*funcPtr) (size_t) = badSink; /* Initialize data */ data = 0; {#ifdef _WIN32 WSADATA wsaData; int wsaDataInit = 0;#endif int recvResult; struct sockaddr_in service; SOCKET listenSocket = INVALID_SOCKET; SOCKET acceptSocket = INVALID_SOCKET; char inputBuffer[CHAR_ARRAY_SIZE]; do {#ifdef _WIN32 if (WSAStartup(MAKEWORD(2,2), &wsaData) != NO_ERROR) { break; } wsaDataInit = 1;#endif /* POTENTIAL FLAW: Read data using a listen socket */ listenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (listenSocket == INVALID_SOCKET) { break; } memset(&service, 0, sizeof(service)); service.sin_family = AF_INET; service.sin_addr.s_addr = INADDR_ANY; service.sin_port = htons(TCP_PORT); if (bind(listenSocket, (struct sockaddr*)&service, sizeof(service)) == SOCKET_ERROR) { break; } if (listen(listenSocket, LISTEN_BACKLOG) == SOCKET_ERROR) { break; } acceptSocket = accept(listenSocket, NULL, NULL); if (acceptSocket == SOCKET_ERROR) { break; } /* Abort on error or the connection was closed */ recvResult = recv(acceptSocket, inputBuffer, CHAR_ARRAY_SIZE - 1, 0); if (recvResult == SOCKET_ERROR || recvResult == 0) { break; } /* NUL-terminate the string */ inputBuffer[recvResult] = '/0'; /* Convert to unsigned int */ data = strtoul(inputBuffer, NULL, 0); } while (0); if (listenSocket != INVALID_SOCKET) { CLOSE_SOCKET(listenSocket); } if (acceptSocket != INVALID_SOCKET) { CLOSE_SOCKET(acceptSocket); }#ifdef _WIN32 if (wsaDataInit) { WSACleanup(); }#endif } /* use the function pointer */ funcPtr(data);}
开发者ID:maurer,项目名称:tiamat,代码行数:79,
示例11: loadimagestatic bool loadimage( struct userdata *ud, char const *restrict filename, char const *restrict taddr){ mc6809addr__t addr; FILE *fp; char *ro; int c; assert(ud != NULL); assert(filename != NULL); assert(taddr != NULL); addr = strtoul(taddr,&ro,16); if (*ro != 'r') ro = NULL; fp = fopen(filename,"rb"); if (fp == NULL) return false; while((c = fgetc(fp)) != EOF) { ud->memory[addr] = c; if (ro) ud->readonly[addr] = true; addr++; }
开发者ID:spc476,项目名称:mc6809,代码行数:30,
示例12: Sv_Connect_f/* * @brief A connection request that did not come from the master. */static void Sv_Connect_f(void) { char user_info[MAX_USER_INFO_STRING]; sv_client_t *cl, *client; int32_t i; Com_Debug("Svc_Connect()/n"); net_addr_t *addr = &net_from; const int32_t version = strtol(Cmd_Argv(1), NULL, 0); // resolve protocol if (version != PROTOCOL_MAJOR) { Netchan_OutOfBandPrint(NS_UDP_SERVER, addr, "print/nServer is version %d./n", PROTOCOL_MAJOR); return; } const uint8_t qport = strtoul(Cmd_Argv(2), NULL, 0); const uint32_t challenge = strtoul(Cmd_Argv(3), NULL, 0); // copy user_info, leave room for ip stuffing g_strlcpy(user_info, Cmd_Argv(4), sizeof(user_info) - 25); if (*user_info == '/0') { // catch empty user_info Com_Print("Empty user_info from %s/n", Net_NetaddrToString(addr)); Netchan_OutOfBandPrint(NS_UDP_SERVER, addr, "print/nConnection refused/n"); return; } if (strchr(user_info, '/xFF')) { // catch end of message in string exploit Com_Print("Illegal user_info contained xFF from %s/n", Net_NetaddrToString(addr)); Netchan_OutOfBandPrint(NS_UDP_SERVER, addr, "print/nConnection refused/n"); return; } if (strlen(GetUserInfo(user_info, "ip"))) { // catch spoofed ips Com_Print("Illegal user_info contained ip from %s/n", Net_NetaddrToString(addr)); Netchan_OutOfBandPrint(NS_UDP_SERVER, addr, "print/nConnection refused/n"); return; } if (!ValidateUserInfo(user_info)) { // catch otherwise invalid user_info Com_Print("Invalid user_info from %s/n", Net_NetaddrToString(addr)); Netchan_OutOfBandPrint(NS_UDP_SERVER, addr, "print/nConnection refused/n"); return; } // force the ip so the game can filter on it SetUserInfo(user_info, "ip", Net_NetaddrToString(addr)); // enforce a valid challenge to avoid denial of service attack for (i = 0; i < MAX_CHALLENGES; i++) { if (Net_CompareClientNetaddr(addr, &svs.challenges[i].addr)) { if (challenge == svs.challenges[i].challenge) { svs.challenges[i].challenge = 0; break; // good } Netchan_OutOfBandPrint(NS_UDP_SERVER, addr, "print/nBad challenge/n"); return; } } if (i == MAX_CHALLENGES) { Com_Print("Connection without challenge from %s/n", Net_NetaddrToString(addr)); Netchan_OutOfBandPrint(NS_UDP_SERVER, addr, "print/nNo challenge for address/n"); return; } // resolve the client slot client = NULL; // first check for an ungraceful reconnect (client crashed, perhaps) for (i = 0, cl = svs.clients; i < sv_max_clients->integer; i++, cl++) { const net_chan_t *ch = &cl->net_chan; if (cl->state == SV_CLIENT_FREE) // not in use, not interested continue; // the base address and either the qport or real port must match if (Net_CompareClientNetaddr(addr, &ch->remote_address)) { if (addr->port == ch->remote_address.port || qport == ch->qport) { client = cl; break; } } } // otherwise, treat as a fresh connect to a new slot if (!client) { for (i = 0, cl = svs.clients; i < sv_max_clients->integer; i++, cl++) { if (cl->state == SV_CLIENT_FREE && !cl->entity->ai) { // we have a free one client = cl; break; }//.........这里部分代码省略.........
开发者ID:chrisnew,项目名称:quetoo,代码行数:101,
示例13: miniopt/* ----------------------------------------------------------------------- */intminiopt(miniopt_t *t, char **argv){ int keylen; char *p, *eq, *valstr, *endptr = NULL; int err = 0; t->consumed = 0; t->positional = FALSE; memset(t->key, 0, MINIOPT_MAXKEY); t->opt = '/0'; t->valstr = NULL; t->good_int = FALSE; valstr = NULL; if (*argv == NULL) { err = -1; goto exit; } p = *argv++; t->consumed++; if (!t->opt_end && !strcmp(p, "--")) { t->opt_end = TRUE; if (*argv == NULL) { err = -1; goto exit; } p = *argv++; t->consumed++; } if (t->opt_end) { t->positional = TRUE; valstr = p; } else if (!strncmp(p, "--", 2)) { eq = strchr(p, '='); if (eq == NULL && !t->longflags) { fprintf(stderr, "%s: missing /" = /" in long param /"%s/"/n", t->name, p); err = 1; goto exit; } keylen = eq ? (eq - (p + 2)) : (int)strlen(p) - 2; if (keylen > 63) keylen = 63; memcpy(t->key, p + 2, keylen); if (eq) { valstr = eq + 1; if (*valstr == '/0') { fprintf(stderr, "%s: missing value after /" = /" in long param /"%s/"/n", t->name, p); err = 1; goto exit; } } } else if (!strncmp(p, "-", 1)) { t->opt = p[1]; if (strlen(p) > 2) { fprintf(stderr, "%s: only single char options, error on param /"%s/"/n", t->name, p); err = 1; goto exit; } if (strchr(t->flags, t->opt)) { /* this is a flag option, no value expected */ valstr = NULL; } else { if (*argv == NULL) { fprintf(stderr, "%s: missing value parameter after /"%s/"/n", t->name, p); err = 1; goto exit; } valstr = *argv; argv++; t->consumed++; } } else { t->positional = TRUE; valstr = p; } /* parse valstr as int just in case */ if (valstr) { t->uval = (uint)strtoul(valstr, &endptr, 0); t->val = (int)t->uval; t->good_int = (*endptr == '/0'); } t->valstr = valstr;exit: if (err == 1)//.........这里部分代码省略.........
开发者ID:robcore,项目名称:Alucard-Kernel-jfltexx,代码行数:101,
|