|
|
@ -1,22 +1,21 @@ |
|
|
|
|
|
|
|
|
|
|
|
This Notice.txt file contains certain notices of software components included |
|
|
|
This Notice.txt file contains certain notices of software components included |
|
|
|
with the software that Qualcomm Atheros, Inc. ("Qualcomm Atheros") is required |
|
|
|
with the software that Qualcomm Atheros, Inc. ("Qualcomm Atheros") is required |
|
|
|
to provide you. Notwithstanding anything in the notices in this file, your use |
|
|
|
to provide you. Except where prohibited by the open source license, the content |
|
|
|
of these software components together with the Qualcomm Atheros software |
|
|
|
of this notices file is only provided to satisfy Qualcomm Atheros's attribution |
|
|
|
(Qualcomm Atheros software hereinafter referred to as "Software") is subject to |
|
|
|
and notice requirement; your use of these software components together with the |
|
|
|
the terms of your license from Qualcomm Atheros. Compliance with all copyright |
|
|
|
Qualcomm Atheros software (Qualcomm Atheros software hereinafter referred to |
|
|
|
laws and software license agreements included in the notice section of this |
|
|
|
as "Software") is subject to the terms of your agreement from Qualcomm Atheros. |
|
|
|
file are the responsibility of the user. Except as may be granted by separate |
|
|
|
Compliance with all copyright laws and software license agreements included in |
|
|
|
express written agreement, this file provides no license to any Qualcomm |
|
|
|
the notice section of this file are the responsibility of the user. Except as |
|
|
|
Atheros patents, trademarks, copyrights, or other intellectual property. |
|
|
|
may be granted by separate express written agreement, this file provides no |
|
|
|
|
|
|
|
license to any patents, trademarks, copyrights, or other intellectual property |
|
|
|
Copyright (c) 2014 Qualcomm Atheros, Inc. All rights reserved. |
|
|
|
of Qualcomm Incorporated or any of its subsidiaries. |
|
|
|
|
|
|
|
|
|
|
|
Qualcomm is a trademark of Qualcomm Incorporated, registered in the United |
|
|
|
Qualcomm is a trademark of Qualcomm Incorporated, registered in the United States |
|
|
|
States and other countries. All Qualcomm Incorporated trademarks are used with |
|
|
|
and other countries. All Qualcomm Incorporated trademarks are used with permission. |
|
|
|
permission. Atheros is a trademark of Qualcomm Atheros, Inc., registered in the |
|
|
|
Other products and brand names may be trademarks or registered trademarks of their |
|
|
|
United States and other countries. Other products and brand names may be |
|
|
|
respective owners. |
|
|
|
trademarks or registered trademarks of their respective owners. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
NOTICES: |
|
|
|
NOTICES: |
|
|
|
|
|
|
|
|
|
|
@ -250,128 +249,6 @@ when who what, where, why |
|
|
|
|
|
|
|
|
|
|
|
Dr B. R. Gladman <brg@gladman.uk.net> 1st June 2001. |
|
|
|
Dr B. R. Gladman <brg@gladman.uk.net> 1st June 2001. |
|
|
|
|
|
|
|
|
|
|
|
This is an implementation of the AES encryption algorithm (Rijndael) |
|
|
|
|
|
|
|
designed by Joan Daemen and Vincent Rijmen. This version is designed |
|
|
|
|
|
|
|
to provide both fixed and dynamic block and key lengths and can also |
|
|
|
|
|
|
|
run with either big or little endian internal byte order. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
NOTE: Input block and key lengths are given in terms of the lengths of |
|
|
|
|
|
|
|
the byte arrays involved, the legal values being 16, 24 and 32. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A. THE CIPHER INTERFACE |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
byte (an unsigned 8-bit type) |
|
|
|
|
|
|
|
word (an unsigned 32-bit type) |
|
|
|
|
|
|
|
aes_ret: (a signed 16 bit type for function return values) |
|
|
|
|
|
|
|
aes_good (value != 0, a good return) |
|
|
|
|
|
|
|
aes_bad (value == 0, an error return) |
|
|
|
|
|
|
|
enum aes_key: (encryption direction) |
|
|
|
|
|
|
|
enc (set key for encryption) |
|
|
|
|
|
|
|
dec (set key for decryption) |
|
|
|
|
|
|
|
both (set key for both) |
|
|
|
|
|
|
|
class or struct aes (structure for context) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
C subroutine calls: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
aes_ret set_blk(const word block_length, aes *cx) (variable block size) |
|
|
|
|
|
|
|
aes_ret set_key(const byte key[], const word key_length, |
|
|
|
|
|
|
|
const enum aes_key direction, aes *cx) |
|
|
|
|
|
|
|
aes_ret encrypt(const byte input_blk[], byte output_blk[], const aes *cx) |
|
|
|
|
|
|
|
aes_ret decrypt(const byte input_blk[], byte output_blk[], const aes *cx) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IMPORTANT NOTE: If you are using this C interface and your compiler does |
|
|
|
|
|
|
|
not set the memory used for objects to zero before use, you will need to |
|
|
|
|
|
|
|
ensure that cx.mode is set to zero before using the C subroutine calls. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
C++ aes class subroutines: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
aes_ret set_blk(const word block_length) (variable block size) |
|
|
|
|
|
|
|
aes_ret set_key(const byte key[], const word key_length, |
|
|
|
|
|
|
|
const aes_key direction) |
|
|
|
|
|
|
|
aes_ret encrypt(const byte input_blk[], byte output_blk[]) const |
|
|
|
|
|
|
|
aes_ret decrypt(const byte input_blk[], byte output_blk[]) const |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The block length inputs to set_block and set_key are in numbers of |
|
|
|
|
|
|
|
BYTES, not bits. The calls to subroutines must be made in the above |
|
|
|
|
|
|
|
order but multiple calls can be made without repeating earlier calls |
|
|
|
|
|
|
|
if their parameters have not changed. If the cipher block length is |
|
|
|
|
|
|
|
variable but set_blk has not been called before cipher operations a |
|
|
|
|
|
|
|
value of 16 is assumed (that is, the AES block size). In contrast to |
|
|
|
|
|
|
|
earlier versions the block and key length parameters are now checked |
|
|
|
|
|
|
|
for correctness and the encryption and decryption routines check to |
|
|
|
|
|
|
|
ensure that an appropriate key has been set before they are called. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
B. BYTE ORDER WITHIN 32 BIT WORDS |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The fundamental data processing units in Rijndael are 8-bit bytes. The |
|
|
|
|
|
|
|
input, the output and the key input are all enumerated arrays of bytes |
|
|
|
|
|
|
|
in which bytes are numbered starting at zero and increasing to one less |
|
|
|
|
|
|
|
than the number of bytes in the array in question. When these inputs |
|
|
|
|
|
|
|
and outputs are considered as bit sequences, the n'th byte contains |
|
|
|
|
|
|
|
bits 8n to 8n+7 of the sequence with the lower numbered bit mapped to |
|
|
|
|
|
|
|
the most significant bit within the byte (i.e. that having a numeric |
|
|
|
|
|
|
|
value of 128). However, Rijndael can be implemented more efficiently |
|
|
|
|
|
|
|
using 32-bit words to process 4 bytes at a time provided that the order |
|
|
|
|
|
|
|
of bytes within words is known. This order is called big-endian if the |
|
|
|
|
|
|
|
lowest numbered bytes in words have the highest numeric significance |
|
|
|
|
|
|
|
and little-endian if the opposite applies. This code can work in either |
|
|
|
|
|
|
|
order irrespective of the native order of the machine on which it runs. |
|
|
|
|
|
|
|
The byte order used internally is set by defining INTERNAL_BYTE_ORDER |
|
|
|
|
|
|
|
whereas the order for all inputs and outputs is specified by defining |
|
|
|
|
|
|
|
EXTERNAL_BYTE_ORDER, the only purpose of the latter being to determine |
|
|
|
|
|
|
|
if a byte order change is needed immediately after input and immediately |
|
|
|
|
|
|
|
before output to account for the use of a different internal byte order. |
|
|
|
|
|
|
|
In almost all situations both of these defines will be set to the native |
|
|
|
|
|
|
|
order of the processor on which the code is to run but other settings |
|
|
|
|
|
|
|
may somtimes be useful in special circumstances. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define INTERNAL_BYTE_ORDER LITTLE_ENDIAN |
|
|
|
|
|
|
|
#define EXTERNAL_BYTE_ORDER LITTLE_ENDIAN |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
C. COMPILATION |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
To compile AES (Rijndael) for use in C code |
|
|
|
|
|
|
|
a. Exclude the AES_DLL define in aes.h |
|
|
|
|
|
|
|
b. Exclude the AES_IN_CPP define in aes.h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
To compile AES (Rijndael) for use in in C++ code |
|
|
|
|
|
|
|
a. Exclude the AES_DLL define in aes.h |
|
|
|
|
|
|
|
b. Include the AES_IN_CPP define in aes.h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
To compile AES (Rijndael) in C as a Dynamic Link Library |
|
|
|
|
|
|
|
a. Include the AES_DLL define in aes.h |
|
|
|
|
|
|
|
b. Compile the DLL. If using the test files, exclude aes.c from |
|
|
|
|
|
|
|
the test build project and compile it with the same defines |
|
|
|
|
|
|
|
as used for the DLL (ensure that the DLL path is correct) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
D. CONFIGURATION OPTIONS (see also aes.c) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1. define BLOCK_SIZE to set the cipher block size (16, 24 or 32) or |
|
|
|
|
|
|
|
leave this undefined for dynamically variable block size (this will |
|
|
|
|
|
|
|
result in much slower code). |
|
|
|
|
|
|
|
2. set AES_IN_CPP to use the code from C++ rather than C |
|
|
|
|
|
|
|
3. set AES_DLL if AES (Rijndael) is to be compiled to a DLL |
|
|
|
|
|
|
|
4. set INTERNAL_BYTE_ORDER to one of the above constants to set the |
|
|
|
|
|
|
|
internal byte order (the order used within the algorithm code) |
|
|
|
|
|
|
|
5. set EXTERNAL_BYTE_ORDER to one of the above constants to set the byte |
|
|
|
|
|
|
|
order used at the external interfaces for the input, output and key |
|
|
|
|
|
|
|
byte arrays. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IMPORTANT NOTE: BLOCK_SIZE is in BYTES: 16, 24, 32 or undefined for aes.c |
|
|
|
|
|
|
|
and 16, 20, 24, 28, 32 or undefined for aes++.c. If left undefined a |
|
|
|
|
|
|
|
slower version providing variable block length is compiled |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define BLOCK_SIZE 16 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Define AES_IN_CPP if you intend to use the AES C++ class rather than the |
|
|
|
|
|
|
|
C code directly. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define AES_IN_CPP |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Define AES_DLL if you wish to compile the code to produce a Windows DLL |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define AES_DLL |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*/ |
|
|
|
*/ |
|
|
|
File: aes.h |
|
|
|
File: aes.h |
|
|
|
|
|
|
|
|
|
|
@ -431,76 +308,119 @@ File: aes_tab.h |
|
|
|
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |
|
|
|
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |
|
|
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
|
|
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
|
|
|
# |
|
|
|
# |
|
|
|
|
|
|
|
|
|
|
|
# |
|
|
|
# |
|
|
|
# The purpose of this module is to define how a check is to be performed. |
|
|
|
|
|
|
|
# Use one of the Check...() functions below. |
|
|
|
|
|
|
|
# |
|
|
|
# |
|
|
|
|
|
|
|
=============================================================================== |
|
|
|
|
|
|
|
File: Conftest.py |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
=============================================================================== |
|
|
|
|
|
|
|
7. |
|
|
|
|
|
|
|
=============================================================================== |
|
|
|
|
|
|
|
/ *** |
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
* Fowler/Noll/Vo- hash |
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
* The basis of this hash algorithm was taken from an idea sent |
|
|
|
|
|
|
|
* as reviewer comments to the IEEE POSIX P1003.2 committee by: |
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
* Phong Vo (http://www.research.att.com/info/kpv/) |
|
|
|
|
|
|
|
* Glenn Fowler (http://www.research.att.com/~gsf/) |
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
* In a subsequent ballot round: |
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
* Landon Curt Noll (http://www.isthe.com/chongo/) |
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
* improved on their algorithm. Some people tried this hash |
|
|
|
|
|
|
|
* and found that it worked rather well. In an EMail message |
|
|
|
|
|
|
|
* to Landon, they named it the ``Fowler/Noll/Vo'' or FNV hash. |
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
* FNV hashes are designed to be fast while maintaining a low |
|
|
|
|
|
|
|
* collision rate. The FNV speed allows one to quickly hash lots |
|
|
|
|
|
|
|
* of data while maintaining a reasonable collision rate. See: |
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
* http://www.isthe.com/chongo/tech/comp/fnv/index.html |
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
* for more details as well as other forms of the FNV hash. |
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
* Please do not copyright this code. This code is in the public domain. |
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
* LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, |
|
|
|
|
|
|
|
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO |
|
|
|
|
|
|
|
* EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR |
|
|
|
|
|
|
|
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF |
|
|
|
|
|
|
|
* USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR |
|
|
|
|
|
|
|
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR |
|
|
|
|
|
|
|
* PERFORMANCE OF THIS SOFTWARE. |
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
* By: |
|
|
|
|
|
|
|
* chongo <Landon Curt Noll> /\oo/\ |
|
|
|
|
|
|
|
* http://www.isthe.com/chongo/ |
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
* Share and Enjoy! :-) |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
File: fm_fnv_hash.h, fm_fnv_hash.c |
|
|
|
|
|
|
|
|
|
|
|
# |
|
|
|
|
|
|
|
# A context class is used that defines functions for carrying out the tests, |
|
|
|
|
|
|
|
# logging and messages. The following methods and members must be present: |
|
|
|
|
|
|
|
# |
|
|
|
|
|
|
|
# context.Display(msg) Function called to print messages that are normally |
|
|
|
|
|
|
|
# displayed for the user. Newlines are explicitly used. |
|
|
|
|
|
|
|
# The text should also be written to the logfile! |
|
|
|
|
|
|
|
# |
|
|
|
|
|
|
|
# context.Log(msg) Function called to write to a log file. |
|
|
|
|
|
|
|
# |
|
|
|
|
|
|
|
# context.BuildProg(text, ext) |
|
|
|
|
|
|
|
# Function called to build a program, using "ext" for the |
|
|
|
|
|
|
|
# file extention. Must return an empty string for |
|
|
|
|
|
|
|
# success, an error message for failure. |
|
|
|
|
|
|
|
# For reliable test results building should be done just |
|
|
|
|
|
|
|
# like an actual program would be build, using the same |
|
|
|
|
|
|
|
# command and arguments (including configure results so |
|
|
|
|
|
|
|
# far). |
|
|
|
|
|
|
|
# |
|
|
|
|
|
|
|
# context.CompileProg(text, ext) |
|
|
|
|
|
|
|
# Function called to compile a program, using "ext" for |
|
|
|
|
|
|
|
# the file extention. Must return an empty string for |
|
|
|
|
|
|
|
# success, an error message for failure. |
|
|
|
|
|
|
|
# For reliable test results compiling should be done just |
|
|
|
|
|
|
|
# like an actual source file would be compiled, using the |
|
|
|
|
|
|
|
# same command and arguments (including configure results |
|
|
|
|
|
|
|
# so far). |
|
|
|
|
|
|
|
# |
|
|
|
|
|
|
|
# context.AppendLIBS(lib_name_list) |
|
|
|
|
|
|
|
# Append "lib_name_list" to the value of LIBS. |
|
|
|
|
|
|
|
# "lib_namelist" is a list of strings. |
|
|
|
|
|
|
|
# Return the value of LIBS before changing it (any type |
|
|
|
|
|
|
|
# can be used, it is passed to SetLIBS() later.) |
|
|
|
|
|
|
|
# |
|
|
|
|
|
|
|
# context.PrependLIBS(lib_name_list) |
|
|
|
|
|
|
|
# Prepend "lib_name_list" to the value of LIBS. |
|
|
|
|
|
|
|
# "lib_namelist" is a list of strings. |
|
|
|
|
|
|
|
# Return the value of LIBS before changing it (any type |
|
|
|
|
|
|
|
# can be used, it is passed to SetLIBS() later.) |
|
|
|
|
|
|
|
# |
|
|
|
|
|
|
|
# context.SetLIBS(value) |
|
|
|
|
|
|
|
# Set LIBS to "value". The type of "value" is what |
|
|
|
|
|
|
|
# AppendLIBS() returned. |
|
|
|
|
|
|
|
# Return the value of LIBS before changing it (any type |
|
|
|
|
|
|
|
# can be used, it is passed to SetLIBS() later.) |
|
|
|
|
|
|
|
# |
|
|
|
|
|
|
|
# context.headerfilename |
|
|
|
|
|
|
|
# Name of file to append configure results to, usually |
|
|
|
|
|
|
|
# "confdefs.h". |
|
|
|
|
|
|
|
# The file must not exist or be empty when starting. |
|
|
|
|
|
|
|
# Empty or None to skip this (some tests will not work!). |
|
|
|
|
|
|
|
# |
|
|
|
|
|
|
|
# context.config_h (may be missing). If present, must be a string, which |
|
|
|
|
|
|
|
# will be filled with the contents of a config_h file. |
|
|
|
|
|
|
|
# |
|
|
|
|
|
|
|
# context.vardict Dictionary holding variables used for the tests and |
|
|
|
|
|
|
|
# stores results from the tests, used for the build |
|
|
|
|
|
|
|
# commands. |
|
|
|
|
|
|
|
# Normally contains "CC", "LIBS", "CPPFLAGS", etc. |
|
|
|
|
|
|
|
# |
|
|
|
|
|
|
|
# context.havedict Dictionary holding results from the tests that are to |
|
|
|
|
|
|
|
# be used inside a program. |
|
|
|
|
|
|
|
# Names often start with "HAVE_". These are zero |
|
|
|
|
|
|
|
# (feature not present) or one (feature present). Other |
|
|
|
|
|
|
|
# variables may have any value, e.g., "PERLVERSION" can |
|
|
|
|
|
|
|
# |
|
|
|
|
|
|
|
=============================================================================== |
|
|
|
=============================================================================== |
|
|
|
|
|
|
|
8. |
|
|
|
|
|
|
|
=============================================================================== |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
|
|
|
* $Header: //source/qcom/qct/core/api/kernel/main/latest/libstd/stringl/stringl.h#13 $ |
|
|
|
|
|
|
|
* $DateTime: 2013/07/24 11:35:54 $ |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* $OpenBSD: string.h,v 1.17 2006/01/06 18:53:04 millert Exp $ */ |
|
|
|
|
|
|
|
/* $NetBSD: string.h,v 1.6 1994/10/26 00:56:30 cgd Exp $ */ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*- |
|
|
|
|
|
|
|
* Copyright (c) 1990 The Regents of the University of California. |
|
|
|
|
|
|
|
* All rights reserved. |
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
* Redistribution and use in source and binary forms, with or without |
|
|
|
|
|
|
|
* modification, are permitted provided that the following conditions |
|
|
|
|
|
|
|
* are met: |
|
|
|
|
|
|
|
* 1. Redistributions of source code must retain the above copyright |
|
|
|
|
|
|
|
* notice, this list of conditions and the following disclaimer. |
|
|
|
|
|
|
|
* 2. Redistributions in binary form must reproduce the above copyright |
|
|
|
|
|
|
|
* notice, this list of conditions and the following disclaimer in the |
|
|
|
|
|
|
|
* documentation and/or other materials provided with the distribution. |
|
|
|
|
|
|
|
* 3. Neither the name of the University nor the names of its contributors |
|
|
|
|
|
|
|
* may be used to endorse or promote products derived from this software |
|
|
|
|
|
|
|
* without specific prior written permission. |
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND |
|
|
|
|
|
|
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
|
|
|
|
|
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
|
|
|
|
|
|
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE |
|
|
|
|
|
|
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
|
|
|
|
|
|
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
|
|
|
|
|
|
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
|
|
|
|
|
|
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
|
|
|
|
|
|
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
|
|
|
|
|
|
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
|
|
|
|
|
|
|
* SUCH DAMAGE. |
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
* @(#)string.h 5.10 (Berkeley) 3/9/91 |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
File: stringl.h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
=============================================================================== |
|
|
|
|
|
|
|
9. |
|
|
|
|
|
|
|
=============================================================================== |
|
|
|
|
|
|
|
/* |
|
|
|
|
|
|
|
* Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com> |
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
* Permission to use, copy, modify, and distribute this software for any |
|
|
|
|
|
|
|
* purpose with or without fee is hereby granted, provided that the above |
|
|
|
|
|
|
|
* copyright notice and this permission notice appear in all copies. |
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
|
|
|
|
|
|
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
|
|
|
|
|
|
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
|
|
|
|
|
|
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
|
|
|
|
|
|
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
|
|
|
|
|
|
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
|
|
|
|
|
|
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
File: wcslcpy.c, wcslcat.c, wstrlcpy.c, strlcat.c, strlcpy.c, wstrlcat.c |
|
|
|