本文整理汇总了C++中cs_strncpy函数的典型用法代码示例。如果您正苦于以下问题:C++ cs_strncpy函数的具体用法?C++ cs_strncpy怎么用?C++ cs_strncpy使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cs_strncpy函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: fprintf_conf
/* Replacement of fprintf which adds necessary whitespace to fill up the varname to a fixed width.
If varname is longer than CONFVARWIDTH, no whitespace is added*/
void fprintf_conf(FILE *f, const char *varname, const char *fmtstring, ...)
{
int32_t varlen = strlen(varname);
int32_t max = (varlen > CONFVARWIDTH) ? varlen : CONFVARWIDTH;
char varnamebuf[max + 3];
char *ptr = varnamebuf + varlen;
va_list argptr;
cs_strncpy(varnamebuf, varname, sizeof(varnamebuf));
while(varlen < CONFVARWIDTH)
{
ptr[0] = ' ';
++ptr;
++varlen;
}
cs_strncpy(ptr, "= ", sizeof(varnamebuf) - (ptr - varnamebuf));
if(fwrite(varnamebuf, sizeof(char), strlen(varnamebuf), f))
{
if(strlen(fmtstring) > 0)
{
va_start(argptr, fmtstring);
vfprintf(f, fmtstring, argptr);
va_end(argptr);
}
}
}
示例2: defined
/* Gets the tmp dir */
char *get_tmp_dir(void)
{
if(cs_tmpdir[0])
{ return cs_tmpdir; }
#if defined(__CYGWIN__)
char *d = getenv("TMPDIR");
if(!d || !d[0])
{ d = getenv("TMP"); }
if(!d || !d[0])
{ d = getenv("TEMP"); }
if(!d || !d[0])
{ getcwd(cs_tmpdir, sizeof(cs_tmpdir) - 1); }
cs_strncpy(cs_tmpdir, d, sizeof(cs_tmpdir));
char *p = cs_tmpdir;
while(*p) { p++; }
p--;
if(*p != '/' && *p != '\\')
{ strcat(cs_tmpdir, "/"); }
strcat(cs_tmpdir, "_oscam");
#else
cs_strncpy(cs_tmpdir, "/tmp/.oscam", sizeof(cs_tmpdir));
#endif
mkdir(cs_tmpdir, S_IRWXU);
return cs_tmpdir;
}
示例3: main
int main(int argc, char**argv)
{
int n, opt, port = 0, accountok = 0;
struct sockaddr_in servaddr;
socklen_t len;
char mbuf[1000];
unsigned char md5tmp[MD5_DIGEST_LENGTH];
while ((opt = getopt(argc, argv, "a:p:")) != -1) {
switch (opt) {
case 'a': {
char *ptr = strtok(optarg, ":");
cs_strncpy((char *)&cl_user, ptr, sizeof(cl_user));
ptr = strtok(NULL, ":");
if(ptr) {
cs_strncpy((char *)&cl_passwd, ptr, sizeof(cl_passwd));
accountok = 1;
}
break;
}
case 'p':
port = atoi(optarg);
break;
default:
fprintf(stderr, "Usage: %s -a <user>:<password> -p <port>\n", argv[0]);
exit(0);
}
}
if(port == 0 || accountok == 0){
fprintf(stderr, "Usage: %s -a <user>:<password> -p <port>\n", argv[0]);
exit(0);
}
cl_sockfd = socket(AF_INET,SOCK_DGRAM,0);
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(port);
bind(cl_sockfd,(struct sockaddr *)&servaddr,sizeof(servaddr));
aes_set_key(&cl_aes_keys, (char *) MD5(cl_passwd, strlen((char *)cl_passwd), md5tmp));
for (;;){
len = sizeof(cl_socket);
n = recvfrom(cl_sockfd,mbuf,sizeof(mbuf),0,(struct sockaddr *)&cl_socket,&len);
camd35_recv(mbuf, n);
if(mbuf[0] == 0 || mbuf[0] == 3) {
camd35_process_ecm(mbuf, n);
} else {
cs_log("unknown/not implemented camd35 command! (%d) n=%d", mbuf[0], n);
}
}
}
示例4: monitor_send_info
static void monitor_send_info(char *txt, int32_t last)
{
static int32_t seq=0, counter=0;
static char btxt[256] = {0};
char buf[8];
if (txt)
{
if (!btxt[0])
{
counter=0;
txt[2]='B';
}
else
counter++;
snprintf(buf, sizeof(buf), "%03d", counter);
memcpy(txt+4, buf, 3);
txt[3]='0'+seq;
}
else
if (!last)
return;
if (!last)
{
if (btxt[0]) monitor_send(btxt);
cs_strncpy(btxt, txt, sizeof(btxt));
return;
}
if (txt && btxt[0])
{
monitor_send(btxt);
txt[2]='E';
cs_strncpy(btxt, txt, sizeof(btxt));
}
else
{
if (txt)
cs_strncpy(btxt, txt, sizeof(btxt));
btxt[2]=(btxt[2]=='B') ? 'S' : 'E';
}
if (btxt[0])
{
monitor_send(btxt);
seq=(seq+1)%10;
}
btxt[0]=0;
}
示例5: http_dyndns_fn
static void http_dyndns_fn(const char *token, char *value, void *UNUSED(setting), FILE *f)
{
int i;
if(value)
{
char *ptr, *saveptr1 = NULL;
memset(cfg.http_dyndns, 0, sizeof(cfg.http_dyndns));
for(i = 0, ptr = strtok_r(value, ",", &saveptr1); (i < MAX_HTTP_DYNDNS) && (ptr); ptr = strtok_r(NULL, ",", &saveptr1), i++)
{
trim(ptr);
cs_strncpy((char *)cfg.http_dyndns[i], ptr, sizeof(cfg.http_dyndns[i]));
}
return;
}
if(strlen((const char *)(cfg.http_dyndns[0])) > 0 || cfg.http_full_cfg)
{
fprintf_conf(f, token, "%s", ""); // it should not have \n at the end
for(i = 0; i < MAX_HTTP_DYNDNS; i++)
{
if(cfg.http_dyndns[i][0])
{
fprintf(f, "%s%s", i > 0 ? "," : "", cfg.http_dyndns[i]);
}
}
fprintf(f, "\n");
}
}
示例6: monitor_process_details_master
static void monitor_process_details_master(char *buf, uint32_t pid){
snprintf(buf, 256, "Version=%sr%s", CS_VERSION, CS_SVN_VERSION);
monitor_send_details(buf, pid);
snprintf(buf, 256, "System=%s", CS_TARGET);
monitor_send_details(buf, pid);
snprintf(buf, 256, "DebugLevel=%d", cs_dblevel);
monitor_send_details(buf, pid);
snprintf(buf, 256, "MaxClients=UNLIMITED");
monitor_send_details(buf, pid);
snprintf(buf, 256, "ClientMaxIdle=%d sec", cfg.cmaxidle);
monitor_send_details(buf, pid);
if( cfg.max_log_size )
snprintf(buf + 200, 56, "%d Kb", cfg.max_log_size);
else
cs_strncpy(buf + 200, "unlimited", 56);
snprintf(buf, 256, "MaxLogsize=%s", buf + 200);
monitor_send_details(buf, pid);
snprintf(buf, 256, "ClientTimeout=%u ms", cfg.ctimeout);
monitor_send_details(buf, pid);
snprintf(buf, 256, "CacheDelay=%d ms", cfg.delay);
monitor_send_details(buf, pid);
if( cfg.cwlogdir ) {
snprintf(buf, 256, "CwlogDir=%s", cfg.cwlogdir);
monitor_send_details(buf, pid);
}
if( cfg.preferlocalcards ) {
snprintf(buf, 256, "PreferlocalCards=%d", cfg.preferlocalcards);
monitor_send_details(buf, pid);
}
if( cfg.waitforcards ) {
snprintf(buf, 256, "WaitforCards=%d", cfg.waitforcards);
monitor_send_details(buf, pid);
}
snprintf(buf, 256, "LogFile=%s", cfg.logfile);
monitor_send_details(buf, pid);
if( cfg.mailfile ) {
snprintf(buf, 256, "MailFile=%s", cfg.mailfile);
monitor_send_details(buf, pid);
}
if( cfg.usrfile ) {
snprintf(buf, 256, "UsrFile=%s", cfg.usrfile);
monitor_send_details(buf, pid);
}
monitor_send_details(buf, pid);
snprintf(buf, 256, "Sleep=%d", cfg.tosleep);
monitor_send_details(buf, pid);
snprintf(buf, 256, "Monitorport=%d", cfg.mon_port);
monitor_send_details(buf, pid);
snprintf(buf, 256, "Nice=%d", cfg.nice);
monitor_send_details(buf, pid);
#ifdef WEBIF
snprintf(buf, 256, "Restartmode=%d", cs_get_restartmode());
monitor_send_details(buf, pid);
#else
snprintf(buf, 256, "Restartmode=%s", "no");
monitor_send_details(buf, pid);
#endif
// monitor_send_details(buf, pid);
}
示例7: reader_label_fn
static void reader_label_fn(const char *token, char *value, void *setting, FILE *f)
{
struct s_reader *rdr = setting;
if(value)
{
int i, found = 0;
if(!strlen(value))
{
return;
}
for(i = 0; i < (int)strlen(value); i++)
{
if(value[i] == ' ')
{
value[i] = '_';
found++;
}
}
if(found)
{
fprintf(stderr, "Configuration reader: corrected label to %s\n", value);
}
cs_strncpy(rdr->label, value, sizeof(rdr->label));
return;
}
fprintf_conf(f, token, "%s\n", rdr->label);
}
示例8: device_fn
static void device_fn(const char *token, char *value, void *setting, FILE *f)
{
struct s_reader *rdr = setting;
int32_t isphysical = !is_network_reader(rdr);
if(value)
{
int32_t i;
char *ptr, *saveptr1 = NULL;
for(i = 0, ptr = strtok_r(value, ",", &saveptr1); (i < 3) && (ptr); ptr = strtok_r(NULL, ",", &saveptr1), i++)
{
trim(ptr);
switch(i)
{
case 0:
cs_strncpy(rdr->device, ptr, sizeof(rdr->device));
break;
case 1:
rdr->r_port = atoi(ptr);
break;
case 2:
rdr->l_port = atoi(ptr);
break;
}
}
return;
}
fprintf_conf(f, token, "%s", rdr->device); // it should not have \n at the end
if((rdr->r_port || cfg.http_full_cfg) && !isphysical)
{ fprintf(f, ",%d", rdr->r_port); }
if((rdr->l_port || cfg.http_full_cfg) && !isphysical && strncmp(reader_get_type_desc(rdr, 0), "cccam", 5))
{ fprintf(f, ",%d", rdr->l_port); }
fprintf(f, "\n");
}
示例9: init_oscam_ser_device
static int32_t init_oscam_ser_device(struct s_client *cl)
{
char *device = cl->serialdata->oscam_ser_device;
speed_t baud = cl->serialdata->oscam_ser_baud;
int32_t port = cl->serialdata->oscam_ser_port;
int32_t fd;
// network connection to a TCP-exposed serial port
if (port > 0)
{
cs_strncpy(cl->reader->device, device, sizeof(cl->reader->device));
cl->reader->r_port = cl->port = port;
fd = network_tcp_connection_open(cl->reader);
if (fd < 0)
return 0;
else
return fd;
}
else // standard serial port connection
{
fd=open(device, O_RDWR | O_NOCTTY | O_SYNC | O_NONBLOCK);
if (fd>0)
{
fcntl(fd, F_SETFL, 0);
if (oscam_ser_set_serial_device(fd, baud)<0) cs_log("ERROR ioctl");
if (tcflush(fd, TCIOFLUSH)<0) cs_log("ERROR flush");
}
else
{
fd=0;
cs_log("ERROR opening %s (errno=%d %s)", device, errno, strerror(errno));
}
return(fd);
}
}
示例10: log_list_thread
void log_list_thread(void)
{
char buf[LOG_BUF_SIZE];
log_running = 1;
set_thread_name(__func__);
do
{
log_list_queued = 0;
LL_ITER it = ll_iter_create(log_list);
struct s_log *log;
while((log = ll_iter_next_remove(&it)))
{
int8_t do_flush = ll_count(log_list) == 0; //flush on writing last element
cs_strncpy(buf, log->txt, LOG_BUF_SIZE);
if(log->direct_log)
{ cs_write_log(buf, do_flush); }
else
{ write_to_log(buf, log, do_flush); }
NULLFREE(log->txt);
NULLFREE(log);
}
if(!log_list_queued) // The list is empty, sleep until new data comes in and we are woken up
sleepms_on_cond(&log_thread_sleep_cond_mutex, &log_thread_sleep_cond, 60 * 1000);
}
while(log_running);
ll_destroy(log_list);
log_list = NULL;
}
示例11: camd35_auth_client
static int32_t camd35_auth_client(struct s_client *cl, uchar *ucrc)
{
int32_t rc = 1;
uint32_t crc;
struct s_auth *account;
unsigned char md5tmp[MD5_DIGEST_LENGTH];
if(cl->upwd[0])
{ return (memcmp(cl->ucrc, ucrc, 4) ? 1 : 0); }
cl->crypted = 1;
crc = (((ucrc[0] << 24) | (ucrc[1] << 16) | (ucrc[2] << 8) | ucrc[3]) & 0xffffffffL);
for(account = cfg.account; (account) && (!cl->upwd[0]); account = account->next)
if(crc == crc32(0L, MD5((unsigned char *)account->usr, strlen(account->usr), md5tmp), MD5_DIGEST_LENGTH))
{
rc = cs_auth_client(cl, account, NULL);
if(!rc)
{
memcpy(cl->ucrc, ucrc, 4);
cs_strncpy((char *)cl->upwd, account->pwd, sizeof(cl->upwd));
if (!aes_set_key_alloc(&cl->aes_keys, (char *) MD5(cl->upwd, strlen((char *)cl->upwd), md5tmp)))
{
return 1;
}
return 0;
}
}
return (rc);
}
示例12: write_to_log_int
static void write_to_log_int(char *txt, int8_t header_len)
{
#if !defined(WEBIF) && !defined(MODULE_MONITOR)
if(cfg.disablelog) { return; }
#endif
char *newtxt = cs_strdup(txt);
if(!newtxt)
{ return; }
struct s_log *log;
if(!cs_malloc(&log, sizeof(struct s_log)))
{
NULLFREE(newtxt);
return;
}
log->txt = newtxt;
log->header_len = header_len;
log->direct_log = 0;
struct s_client *cl = cur_client();
log->cl_usr = "";
if(!cl)
{
log->cl_text = "undef";
log->cl_typ = ' ';
}
else
{
switch(cl->typ)
{
case 'c':
case 'm':
if(cl->account)
{
log->cl_text = cl->account->usr;
log->cl_usr = cl->account->usr;
}
else { log->cl_text = ""; }
break;
case 'p':
case 'r':
log->cl_text = cl->reader ? cl->reader->label : "";
break;
default:
log->cl_text = "server";
break;
}
log->cl_typ = cl->typ;
}
if(exit_oscam == 1 || cfg.disablelog) //Exit or log disabled. if disabled, just display on webif/monitor
{
char buf[LOG_BUF_SIZE];
cs_strncpy(buf, log->txt, LOG_BUF_SIZE);
write_to_log(buf, log, 1);
NULLFREE(log->txt);
NULLFREE(log);
}
else
{ log_list_add(log); }
}
示例13: pthread_attr_init
void *init_oscam_ser(struct s_client *UNUSED(cl), uchar *UNUSED(mbuf), int32_t module_idx)
{
char sdevice[512];
int32_t ret;
struct s_thread_param param;
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_attr_setstacksize(&attr, PTHREAD_STACK_SIZE);
oscam_init_serialdata(¶m.serialdata);
if(cfg.ser_device)
{ cs_strncpy(sdevice, cfg.ser_device, sizeof(sdevice)); }
else
{ memset(sdevice, 0, sizeof(sdevice)); }
param.module_idx = module_idx;
char *p;
pthread_t temp;
char cltype = 'c'; //now auto should work
if(bcopy_end == -1) //mutex should be initialized only once
{
pthread_mutex_init(&mutex, NULL);
pthread_cond_init(&cond, NULL);
bcopy_end = 0;
}
while((p = strrchr(sdevice, ';')))
{
*p = 0;
if(!(p + 1) || (!(p + 1)[0])) { return NULL; }
if(!oscam_ser_parse_url(p + 1, ¶m.serialdata, &cltype)) { return NULL; }
ret = pthread_create(&temp, &attr, oscam_ser_fork, (void *) ¶m);
if(ret)
{
cs_log("ERROR: can't create serial reader thread (errno=%d %s)", ret, strerror(ret));
pthread_attr_destroy(&attr);
return NULL;
}
else
{
oscam_wait_ser_fork();
pthread_detach(temp);
}
}
if(!sdevice[0]) { return NULL; }
if(!oscam_ser_parse_url(sdevice, ¶m.serialdata, &cltype)) { return NULL; }
ret = pthread_create(&temp, &attr, oscam_ser_fork, (void *) ¶m);
if(ret)
{
cs_log("ERROR: can't create serial reader thread (errno=%d %s)", ret, strerror(ret));
pthread_attr_destroy(&attr);
return NULL;
}
else
{
oscam_wait_ser_fork();
pthread_detach(temp);
}
pthread_attr_destroy(&attr);
return NULL;
}
示例14: monitor_send_login
static void monitor_send_login(void){
char buf[64];
struct s_client *cur_cl = cur_client();
if (cur_cl->auth && cur_cl->account)
snprintf(buf, sizeof(buf), "[A-0000]1|%s logged in\n", cur_cl->account->usr);
else
cs_strncpy(buf, "[A-0000]0|not logged in\n", sizeof(buf));
monitor_send_info(buf, 1);
}
示例15: config_list_set_defaults
void config_list_set_defaults(const struct config_list *clist, void *config_data) {
const struct config_list *c;
for (c = clist; c->opt_type != OPT_UNKNOWN; c++) {
void *var = config_data + c->var_offset;
switch (c->opt_type) {
case OPT_INT8: {
*(int8_t *)var = c->def.d_int8;
break;
}
case OPT_UINT8: {
*(uint8_t *)var = c->def.d_uint8;
break;
}
case OPT_INT32: {
*(int32_t *)var = c->def.d_int32;
break;
}
case OPT_UINT32: {
*(uint32_t *)var = c->def.d_uint32;
break;
}
case OPT_STRING: {
char **scfg = var;
NULLFREE(*scfg);
if (c->def.d_char)
*scfg = cs_strdup(c->def.d_char);
break;
}
case OPT_SSTRING: {
char *scfg = var;
scfg[0] = '\0';
if (c->def.d_char && strlen(c->def.d_char))
cs_strncpy(scfg, c->def.d_char, c->str_size);
break;
}
case OPT_HEX_ARRAY: {
uint8_t *hex_array = var;
memset(hex_array, 0, c->def.array_size);
break;
}
case OPT_FUNC: {
c->ops.process_fn((const char *)c->config_name, "", var, NULL);
break;
}
case OPT_FUNC_EXTRA: {
c->ops.process_fn_extra((const char *)c->config_name, "", var, c->def.d_extra, NULL);
break;
}
case OPT_SAVE_FUNC:
case OPT_FIXUP_FUNC:
case OPT_UNKNOWN:
continue;
}
}
return;
}