亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? apr_strings.h

?? Apache_2.0.59-Openssl_0.9 配置tomcat. Apache_2.0.59-Openssl_0.9 配置tomcat.
?? H
字號:
/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as
 * applicable.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/* Portions of this file are covered by */
/* -*- mode: c; c-file-style: "k&r" -*-

  strnatcmp.c -- Perform 'natural order' comparisons of strings in C.
  Copyright (C) 2000 by Martin Pool <mbp@humbug.org.au>

  This software is provided 'as-is', without any express or implied
  warranty.  In no event will the authors be held liable for any damages
  arising from the use of this software.

  Permission is granted to anyone to use this software for any purpose,
  including commercial applications, and to alter it and redistribute it
  freely, subject to the following restrictions:

  1. The origin of this software must not be misrepresented; you must not
     claim that you wrote the original software. If you use this software
     in a product, an acknowledgment in the product documentation would be
     appreciated but is not required.
  2. Altered source versions must be plainly marked as such, and must not be
     misrepresented as being the original software.
  3. This notice may not be removed or altered from any source distribution.
*/

#ifndef APR_STRINGS_H
#define APR_STRINGS_H

/**
 * @file apr_strings.h
 * @brief APR Strings library
 */

#include "apr.h"
#include "apr_errno.h"
#include "apr_pools.h"
#define APR_WANT_IOVEC
#include "apr_want.h"

#if APR_HAVE_STDARG_H
#include <stdarg.h>
#endif

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

/**
 * @defgroup apr_strings String routines
 * @ingroup APR 
 * @{
 */

/**
 * Do a natural order comparison of two strings.
 * @param a The first string to compare
 * @param b The second string to compare
 * @return Either <0, 0, or >0.  If the first string is less than the second
 *          this returns <0, if they are equivalent it returns 0, and if the
 *          first string is greater than second string it retuns >0.
 */
APR_DECLARE(int) apr_strnatcmp(char const *a, char const *b);

/**
 * Do a natural order comparison of two strings ignoring the case of the 
 * strings.
 * @param a The first string to compare
 * @param b The second string to compare
 * @return Either <0, 0, or >0.  If the first string is less than the second
 *         this returns <0, if they are equivalent it returns 0, and if the
 *         first string is greater than second string it retuns >0.
 */
APR_DECLARE(int) apr_strnatcasecmp(char const *a, char const *b);

/**
 * duplicate a string into memory allocated out of a pool
 * @param p The pool to allocate out of
 * @param s The string to duplicate
 * @return The new string
 */
APR_DECLARE(char *) apr_pstrdup(apr_pool_t *p, const char *s);

/**
 * Create a null-terminated string by making a copy of a sequence
 * of characters and appending a null byte
 * @param p The pool to allocate out of
 * @param s The block of characters to duplicate
 * @param n The number of characters to duplicate
 * @return The new string
 * @remark This is a faster alternative to apr_pstrndup, for use
 *         when you know that the string being duplicated really
 *         has 'n' or more characters.  If the string might contain
 *         fewer characters, use apr_pstrndup.
 */
APR_DECLARE(char *) apr_pstrmemdup(apr_pool_t *p, const char *s, apr_size_t n);

/**
 * duplicate the first n characters of a string into memory allocated 
 * out of a pool; the new string will be null-terminated
 * @param p The pool to allocate out of
 * @param s The string to duplicate
 * @param n The number of characters to duplicate
 * @return The new string
 */
APR_DECLARE(char *) apr_pstrndup(apr_pool_t *p, const char *s, apr_size_t n);

/**
 * Duplicate a block of memory.
 *
 * @param p The pool to allocate from
 * @param m The memory to duplicate
 * @param n The number of bytes to duplicate
 * @return The new block of memory
 */
APR_DECLARE(void *) apr_pmemdup(apr_pool_t *p, const void *m, apr_size_t n);

/**
 * Concatenate multiple strings, allocating memory out a pool
 * @param p The pool to allocate out of
 * @param ... The strings to concatenate.  The final string must be NULL
 * @return The new string
 */
APR_DECLARE_NONSTD(char *) apr_pstrcat(apr_pool_t *p, ...);

/**
 * Concatenate multiple strings specified in a writev-style vector
 * @param p The pool from which to allocate
 * @param vec The strings to concatenate
 * @param nvec The number of strings to concatenate
 * @param nbytes (output) strlen of new string (pass in NULL to omit)
 * @return The new string
 */
APR_DECLARE(char *) apr_pstrcatv(apr_pool_t *p, const struct iovec *vec,
                                 apr_size_t nvec, apr_size_t *nbytes);

/**
 * printf-style style printing routine.  The data is output to a string 
 * allocated from a pool
 * @param p The pool to allocate out of
 * @param fmt The format of the string
 * @param ap The arguments to use while printing the data
 * @return The new string
 */
APR_DECLARE(char *) apr_pvsprintf(apr_pool_t *p, const char *fmt, va_list ap);

/**
 * printf-style style printing routine.  The data is output to a string 
 * allocated from a pool
 * @param p The pool to allocate out of
 * @param fmt The format of the string
 * @param ... The arguments to use while printing the data
 * @return The new string
 */
APR_DECLARE_NONSTD(char *) apr_psprintf(apr_pool_t *p, const char *fmt, ...)
        __attribute__((format(printf,2,3)));

/**
 * copy n characters from src to dst
 * @param dst The destination string
 * @param src The source string
 * @param dst_size The space available in dst; dst always receives
 *                 null-termination, so if src is longer than
 *                 dst_size, the actual number of characters copied is
 *                 dst_size - 1.
 * @remark
 * <PRE>
 * We re-implement this function to implement these specific changes:
 *       1) strncpy() doesn't always null terminate and we want it to.
 *       2) strncpy() null fills, which is bogus, esp. when copy 8byte strings
 *          into 8k blocks.
 *       3) Instead of returning the pointer to the beginning of the
 *          destination string, we return a pointer to the terminating null
 *          to allow us to check for truncation.
 * </PRE>
 */
APR_DECLARE(char *) apr_cpystrn(char *dst, const char *src,
                                apr_size_t dst_size);

/**
 * Strip spaces from a string
 * @param dest The destination string.  It is okay to modify the string
 *             in place.  Namely dest == src
 * @param src The string to rid the spaces from.
 */
APR_DECLARE(char *) apr_collapse_spaces(char *dest, const char *src);

/**
 * Convert the arguments to a program from one string to an array of 
 * strings terminated by a NULL pointer
 * @param arg_str The arguments to convert
 * @param argv_out Output location.  This is a pointer to an array of strings.
 * @param token_context Pool to use.
 */
APR_DECLARE(apr_status_t) apr_tokenize_to_argv(const char *arg_str,
                                               char ***argv_out,
                                               apr_pool_t *token_context);

/**
 * Split a string into separate null-terminated tokens.  The tokens are 
 * delimited in the string by one or more characters from the sep
 * argument.
 * @param str The string to separate; this should be specified on the
 *            first call to apr_strtok() for a given string, and NULL
 *            on subsequent calls.
 * @param sep The set of delimiters
 * @param last Internal state saved by apr_strtok() between calls.
 * @return The next token from the string
 */
APR_DECLARE(char *) apr_strtok(char *str, const char *sep, char **last);

/**
 * @defgroup APR_Strings_Snprintf snprintf implementations
 * @warning
 * These are snprintf implementations based on apr_vformatter().
 *
 * Note that various standards and implementations disagree on the return
 * value of snprintf, and side-effects due to %n in the formatting string.
 * apr_snprintf (and apr_vsnprintf) behaves as follows:
 *
 * Process the format string until the entire string is exhausted, or
 * the buffer fills.  If the buffer fills then stop processing immediately
 * (so no further %n arguments are processed), and return the buffer
 * length.  In all cases the buffer is NUL terminated. It will return the
 * number of characters inserted into the buffer, not including the
 * terminating NUL. As a special case, if len is 0, apr_snprintf will
 * return the number of characters that would have been inserted if
 * the buffer had been infinite (in this case, *buffer can be NULL)
 *
 * In no event does apr_snprintf return a negative number.
 * @{
 */

/**
 * snprintf routine based on apr_vformatter.  This means it understands the
 * same extensions.
 * @param buf The buffer to write to
 * @param len The size of the buffer
 * @param format The format string
 * @param ... The arguments to use to fill out the format string.
 */
APR_DECLARE_NONSTD(int) apr_snprintf(char *buf, apr_size_t len,
                                     const char *format, ...)
        __attribute__((format(printf,3,4)));

/**
 * vsnprintf routine based on apr_vformatter.  This means it understands the
 * same extensions.
 * @param buf The buffer to write to
 * @param len The size of the buffer
 * @param format The format string
 * @param ap The arguments to use to fill out the format string.
 */
APR_DECLARE(int) apr_vsnprintf(char *buf, apr_size_t len, const char *format,
                               va_list ap);
/** @} */

/**
 * create a string representation of an int, allocated from a pool
 * @param p The pool from which to allocate
 * @param n The number to format
 * @return The string representation of the number
 */
APR_DECLARE(char *) apr_itoa(apr_pool_t *p, int n);

/**
 * create a string representation of a long, allocated from a pool
 * @param p The pool from which to allocate
 * @param n The number to format
 * @return The string representation of the number
 */
APR_DECLARE(char *) apr_ltoa(apr_pool_t *p, long n);

/**
 * create a string representation of an apr_off_t, allocated from a pool
 * @param p The pool from which to allocate
 * @param n The number to format
 * @return The string representation of the number
 */
APR_DECLARE(char *) apr_off_t_toa(apr_pool_t *p, apr_off_t n);

/**
 * parse a numeric string into a 64-bit numeric value
 * @param buf The string to parse. It may contain optional whitespace,
 *   followed by an optional '+' (positive, default) or '-' (negative)
 *   character, followed by an optional '0x' prefix if base is 0 or 16,
 *   followed by numeric digits appropriate for base.
 * @param end A pointer to the end of the valid character in buf. If
 *   not nil, it is set to the first invalid character in buf.
 * @param base A numeric base in the range between 2 and 36 inclusive,
 *   or 0.  If base is zero, buf will be treated as base ten unless its
 *   digits are prefixed with '0x', in which case it will be treated as
 *   base 16.
 * @return The numeric value of the string.
 */
APR_DECLARE(apr_int64_t) apr_strtoi64(const char *buf, char **end, int base);

/**
 * parse a base-10 numeric string into a 64-bit numeric value.
 * Equivalent to apr_strtoi64(buf, (char**)NULL, 10).
 * @param buf The string to parse
 * @return The numeric value of the string
 */
APR_DECLARE(apr_int64_t) apr_atoi64(const char *buf);

/**
 * Format a binary size (magnitiudes are 2^10 rather than 10^3) from an apr_off_t,
 * as bytes, K, M, T, etc, to a four character compacted human readable string.
 * @param size The size to format
 * @param buf The 5 byte text buffer (counting the trailing null)
 * @return The buf passed to apr_strfsize()
 * @remark All negative sizes report '  - ', apr_strfsize only formats positive values.
 */
APR_DECLARE(char *) apr_strfsize(apr_off_t size, char *buf);

/** @} */

#ifdef __cplusplus
}
#endif

#endif  /* !APR_STRINGS_H */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人av资源在线| 欧美大片日本大片免费观看| 91麻豆精品国产91久久久使用方法 | 91精品午夜视频| 中文字幕日韩一区二区| 蜜臀av性久久久久av蜜臀妖精| 懂色av一区二区三区蜜臀| 7777精品伊人久久久大香线蕉| 国产女同性恋一区二区| 麻豆视频观看网址久久| 色诱视频网站一区| 日本一区二区三区免费乱视频| 亚洲高清视频中文字幕| 91麻豆swag| 国产三级精品三级| 国产精品一区二区三区乱码| 日韩一区二区影院| 婷婷开心久久网| 欧美网站一区二区| 亚洲精品欧美专区| www.亚洲国产| 中文字幕第一页久久| 国产一区二区三区在线观看精品| 91精品国产综合久久精品app| 亚洲影视在线播放| 精品视频999| 亚洲综合精品自拍| 在线观看亚洲一区| 亚洲成av人影院在线观看网| 91成人免费在线视频| 一区二区在线观看免费| 99视频超级精品| 亚洲欧美激情视频在线观看一区二区三区| 国产成人精品亚洲日本在线桃色 | 亚洲天堂免费在线观看视频| 不卡电影一区二区三区| 国产精品热久久久久夜色精品三区| 国产精品一区二区三区乱码| 欧美国产成人精品| 欧美日韩中字一区| 一区二区三区四区亚洲| 91免费看视频| 一区二区三区四区中文字幕| 欧美中文字幕一二三区视频| 亚洲第一成年网| 日韩美女在线视频| 精品一区二区三区免费观看| 久久嫩草精品久久久精品| 成人综合在线观看| 一区二区理论电影在线观看| 欧美精选午夜久久久乱码6080| 老司机精品视频导航| 国产亚洲欧美日韩日本| 91麻豆国产香蕉久久精品| 无吗不卡中文字幕| 欧美刺激午夜性久久久久久久| 国产一区二区三区四区五区美女 | 日韩欧美亚洲一区二区| 国产成人免费视频网站 | 日韩一级片网站| 国产一区二区三区四区五区入口| 国产精品久久久久久久久免费桃花 | 成人免费观看男女羞羞视频| 亚洲精品写真福利| 日韩欧美国产三级| 99久久精品免费看国产免费软件| 亚洲午夜日本在线观看| 久久亚洲免费视频| 欧洲精品在线观看| 国产一区免费电影| 亚洲自拍偷拍欧美| 国产亚洲一区字幕| 欧美日韩在线三级| 国产成人午夜片在线观看高清观看| 亚洲乱码国产乱码精品精可以看| 日韩精品自拍偷拍| 99久久精品免费看| 国产制服丝袜一区| 亚洲电影激情视频网站| 欧美极品美女视频| 欧美一区二区三区在线电影| 成人性视频免费网站| 蜜桃一区二区三区四区| 亚洲蜜臀av乱码久久精品| 久久综合九色综合欧美亚洲| 在线区一区二视频| 成人中文字幕在线| 久久国产剧场电影| 亚洲电影一级黄| 亚洲精品精品亚洲| 中文字幕日韩av资源站| 久久综合丝袜日本网| 日韩欧美中文字幕精品| 欧美色综合网站| 91免费看`日韩一区二区| 国产一区二区不卡在线| 日本成人在线视频网站| 亚洲一卡二卡三卡四卡无卡久久 | 色婷婷av一区二区三区大白胸| 激情小说亚洲一区| 日本亚洲电影天堂| 午夜视频在线观看一区二区三区 | 精品一区二区免费在线观看| 亚洲超碰精品一区二区| 亚洲精品视频在线观看免费| 国产精品久久久久久久浪潮网站| 精品999久久久| 精品日韩一区二区三区免费视频| 欧美日韩免费观看一区三区| 欧美影视一区二区三区| 欧美自拍丝袜亚洲| 欧美在线观看视频在线| 在线观看91精品国产入口| 91福利社在线观看| 欧美性猛交xxxxxx富婆| 欧美系列一区二区| 欧美三级在线看| 欧美日本在线播放| 欧美一级专区免费大片| 日韩精品一区二区三区swag| 欧美精品一区二区久久久| 久久久午夜电影| 久久精品免视看| 成人欧美一区二区三区视频网页| 中文字幕一区二区三区四区不卡 | 精品国产露脸精彩对白| 日韩精品一区二区三区swag| 2023国产一二三区日本精品2022| 欧美精品一区二区精品网| 国产亚洲va综合人人澡精品| 国产精品乱人伦| 亚洲成在人线免费| 麻豆91免费观看| 国产91精品露脸国语对白| 99国产精品一区| 在线电影一区二区三区| 亚洲精品一区二区三区蜜桃下载| 欧美国产激情一区二区三区蜜月| 亚洲三级在线播放| 美女一区二区在线观看| 国产+成+人+亚洲欧洲自线| 91免费在线看| 欧美tickle裸体挠脚心vk| 国产精品午夜免费| 亚洲国产综合91精品麻豆| 老司机精品视频导航| www..com久久爱| 欧美精品丝袜久久久中文字幕| 久久久久久夜精品精品免费| 136国产福利精品导航| 美日韩一级片在线观看| 99久久国产综合色|国产精品| 91精品久久久久久久99蜜桃| 国产亚洲福利社区一区| 亚洲高清视频中文字幕| 国产91在线观看| 欧美一级欧美一级在线播放| 国产精品欧美久久久久一区二区 | av电影天堂一区二区在线观看| 欧美日韩一区二区三区在线| 久久亚洲欧美国产精品乐播 | 亚洲国产精品久久人人爱蜜臀| 麻豆91在线看| 欧美三级蜜桃2在线观看| 国产精品久久久久一区二区三区| 午夜视频一区二区三区| 成人理论电影网| 久久色在线观看| 丝袜亚洲另类欧美综合| av亚洲精华国产精华精华| 日韩视频一区二区三区在线播放 | 国产精品福利影院| 精品一区二区三区av| 欧美美女bb生活片| 亚洲视频每日更新| 国产福利一区二区三区在线视频| 欧美片在线播放| 亚洲美女少妇撒尿| a级高清视频欧美日韩| 日韩你懂的在线观看| 亚洲福利视频导航| 色综合久久久久综合99| 日本一区二区三区视频视频| 精品在线视频一区| 日韩一区二区精品葵司在线| 亚洲在线视频网站| 日本乱码高清不卡字幕| 中文字幕高清一区| 成人国产精品免费观看动漫| 国产亚洲女人久久久久毛片| 蜜桃免费网站一区二区三区| 制服丝袜中文字幕亚洲| 亚洲高清视频在线| 欧美日本一区二区在线观看| 亚洲成av人片在线观看无码| 欧美伦理电影网| 日韩中文字幕1| 在线电影欧美成精品| 美女高潮久久久| 欧美精品一区二区三区在线|