void encode_entry( char *str ) { int match_cnt; int len; char buf[ MAX_STR ]; if ( cur_entry - 1 >= 0 ) { compare_entry(str, &match_cnt); /* need to match more than one char to be useful */ if ( match_cnt > 1 ) { buf[0] = (signed char) - match_cnt; copy_str(&buf[1], str + match_cnt); len = get_strlen( buf ); entry[ cur_entry ] = (char *) malloc( len + 1 ); copy_str( entry[ cur_entry ], buf ); } else { entry[ cur_entry ] = (char *) strdup( str ); } } else { entry[ cur_entry ] = (char *) strdup( str ); } }
/* * begin a SRCF file entry */ void CVmImageWriter::begin_srcf_entry(int orig_index, const char *fname) { size_t len; /* remember where this entry starts, so we can fix up the size later */ srcf_entry_pos_ = fp_->get_pos(); /* write a placeholder size entry */ fp_->write_uint4(0); /* write the original index */ fp_->write_uint2(orig_index); /* write the length of the name */ len = get_strlen(fname); fp_->write_uint2(len); /* write the filename */ fp_->write_bytes(fname, len); /* we have no line record yet, so write a placeholder count */ srcf_line_pos_ = fp_->get_pos(); fp_->write_uint4(0); srcf_line_cnt_ = 0; }
static lcb_error_t setopt(lcb_N1QLPARAMS *params, const char *k, size_t nk, const char *v, size_t nv, lcb_string *target) { nv = get_strlen(v, nv); nk = get_strlen(k, nk); /* Do we need the '&'? */ if (params->form.nused) { if (-1 == lcb_string_append(target, "&", 1)) { return LCB_CLIENT_ENOMEM; } } if (-1 == add_encstr(target, k, nk)) { return LCB_CLIENT_ENOMEM; } if (-1 == lcb_string_append(target, "=", 1)) { return LCB_CLIENT_ENOMEM; } if (-1 == add_encstr(target, v, nv)) { return LCB_CLIENT_ENOMEM; } return LCB_SUCCESS; }
lcb_error_t lcb_n1p_posparam(lcb_N1QLPARAMS *params, const char *value, size_t nvalue) { nvalue = get_strlen(value, nvalue); if (-1 == lcb_string_reserve(¶ms->posargs, nvalue+3)) { return LCB_CLIENT_ENOMEM; } if (!params->posargs.nused) { lcb_string_append(¶ms->posargs, "[", 1); } else { lcb_string_append(¶ms->posargs, ",", 1); } lcb_string_append(¶ms->posargs, value, nvalue); return LCB_SUCCESS; }
/** * 計算結果 * * @param[in] calc calcinfo構造体 * @param[in] expr 式 * @return 新たに領域確保された結果文字列ポインタ * @retval NULL エラー * @attention destroy_answerを必ず呼ぶこと. */ uchar * create_answer(calcinfo *calc, const uchar *expr) { dbl val = 0.0; /* 値 */ size_t length = 0; /* 文字数 */ int retval = 0; /* 戻り値 */ uint start = 0; /* タイマ開始 */ dbglog("start"); calc->ptr = (uchar *)expr; /* 走査用ポインタ */ dbglog("ptr=%p", calc->ptr); /* フォーマット設定 */ retval = snprintf(calc->fmt, sizeof(calc->fmt), "%s%ld%s", "%.", digit, "g"); if (retval < 0) { outlog("snprintf"); return NULL; } dbglog("fmt=%s", calc->fmt); readch(calc); if (g_tflag) start_timer(&start); val = expression(calc); dbglog(calc->fmt, val); dbglog("ptr=%p, ch=%c", calc->ptr, calc->ch); check_validate(calc, val); if (calc->ch != '\0') /* エラー */ set_errorcode(calc, E_SYNTAX); if (g_tflag) { uint calc_time = stop_timer(&start); print_timer(calc_time); } if (is_error(calc)) { /* エラー */ calc->answer = get_errormsg(calc); clear_error(calc); if (!calc->answer) return NULL; dbglog("answer=%p, length=%zu", calc->answer, length); } else { /* 文字数取得 */ retval = get_strlen(val, calc->fmt); if (retval <= 0) { /* エラー */ outlog("get_strlen=%d", retval); return NULL; } dbglog("get_strlen=%d, INT_MAX=%d", retval, INT_MAX); length = (size_t)retval + 1; /* 文字数 + 1 */ /* メモリ確保 */ calc->answer = (uchar *)malloc(length * sizeof(uchar)); if (!calc->answer) { outlog("malloc: length=%zu", length); return NULL; } (void)memset(calc->answer, 0, length * sizeof(uchar)); /* 値を文字列に変換 */ retval = snprintf((char *)calc->answer, length, calc->fmt, val); if (retval < 0) { outlog("snprintf: answer=%p, length=%zu", calc->answer, length); return NULL; } dbglog(calc->fmt, val); dbglog("answer=%s, length=%zu", calc->answer, length); } return calc->answer; }
int main(int argc, char *argv[]) { char *str = "Good morning my friend!"; printf("%d\n", get_strlen(str)); }
int redis_string::get_strlen(const char* key) { return get_strlen(key, strlen(key)); }