Files
MentOS/mentos/inc/libc/string.h
T
Luigi Capogrosso 7d9085fecf Finish v0.3.0
2019-05-08 17:07:11 +02:00

160 lines
5.7 KiB
C

/// MentOS, The Mentoring Operating system project
/// @file string.h
/// @brief String routines.
/// @copyright (c) 2019 This file is distributed under the MIT License.
/// See LICENSE.md for details.
#pragma once
#include "list.h"
#include "stddef.h"
/// @brief Copies the first num characters of source to destination.
char *strncpy(char *destination, const char *source, size_t num);
/// @brief Compares up to n characters of s1 to those of s2.
int strncmp(const char *s1, const char *s2, size_t n);
/// @brief Case insensitive string compare.
int stricmp(const char *s1, const char *s2);
/// @brief Case-insensitively compare up to n characters of s1 to those of s2.
int strnicmp(const char *s1, const char *s2, size_t n);
/// @brief Returns a pointer to the first occurrence of ch in str.
char *strchr(const char *s, int ch);
/// @brief Returns a pointer to the last occurrence of ch in str.
char *strrchr(const char *s, int ch);
/// @brief Returns a pointer to the first occurrence of s2 in s1, or NULL if
/// s2 is not part of s1.
char *strstr(const char *s1, const char *s2);
/// @brief Returns the length of the initial portion of string which consists
/// only of characters that are part of control.
size_t strspn(const char *string, const char *control);
/// @brief Calculates the length of the initial segment of string which
/// consists entirely of characters not in control.
size_t strcspn(const char *string, const char *control);
/// @brief Finds the first character in the string string that matches any
/// character specified in control.
char *strpbrk(const char *string, const char *control);
/// @brief Make a copy of the given string.
char *strdup(const char *s);
/// @brief Make a copy of the given string.
char *kstrdup(const char *s);
/// @brief Appends the string pointed to, by s2 to the end of the string
/// pointed to, by s1 up to n characters long.
char *strncat(char *s1, const char *s2, size_t n);
/// @brief Fill the string s with the character c, to the given length n.
char *strnset(char *s, int c, size_t n);
/// @brief Fill the string s with the character c.
char *strset(char *s, int c);
/// @brief Reverse the string s.
char *strrev(char *s);
// TODO: Check behaviour & doxygen comment.
char *strtok(char *str, const char *delim);
// TODO: Check behaviour & doxygen comment.
char *strtok_r(char *string, const char *control, char **lasts);
/// @brief Another function to copy n characters from str2 to str1.
void *memmove(void *dst, const void *src, size_t n);
/// @brief Searches for the first occurrence of the character c (an unsigned
/// char) in the first n bytes of the string pointed to, by the
/// argument str.
void *memchr(const void *str, int c, size_t n);
char *strlwr(char *s);
char *strupr(char *s);
/// @brief Copies the first n bytes from memory area src to memory area dest,
/// stopping when the character c is found.
void *memccpy(void *dst, const void *src, int c, size_t n);
/// @brief Copy a block of memory, handling overlap.
/// @param _dst Pointer to the destination.
/// @param _src Pointer to the source.
/// @param num Number of bytes to be copied.
/// @return Pointer to the destination.
void *memcpy(void *_dst, const void *_src, size_t num);
/// @brief Compares the first n bytes of str1 and str2.
int memcmp(const void *str1, const void *str2, size_t n);
/// @brief Sets the first num bytes of the block of memory pointed by ptr
/// to the specified value.
/// @param ptr Pointer to the block of memory to set.
/// @param value Value to be set.
/// @param num Number of bytes to be set to the given value.
/// @return The same ptr.
void *memset(void *ptr, int value, size_t num);
/// @brief Copy the string src into the array dst.
char *strcpy(char *dst, const char *src);
/// @brief Appends a copy of the string src to the string dst.
char *strcat(char *dst, const char *src);
/// @brief Checks if the two strings are equal.
int strcmp(const char *s1, const char *s2);
/// @brief Returns the lenght of the string s.
size_t strlen(const char *s);
/// @brief Returns the number of characters inside s, excluding the
/// terminating null byte ('\0'), but at most count.
size_t strnlen(const char *s, size_t count);
/// @brief Separate a string in token according to the delimiter.
/// If str is NULL, the scanning will continue for the previous string.
/// It can be bettered.
char *strtok(char *str, const char *delim);
/// @brief Compare num characters of s2 and s1.
int _kstrncmp(const char *s1, const char *s2, size_t num);
/// @brief Removes the whitespaces in from of str.
char *trim(char *str);
/// @brief Create a copy of str.
char *strdup(const char *src);
/// @brief Separate stringp based on delim.
char *strsep(char **stringp, const char *delim);
/// @brief Split a string into list of strings.
list_t *str_split(const char *str, const char *delim, unsigned int *num);
/// @brief Reconstruct a string from list using delim as delimiter.
char *list2str(list_t *list, const char *delim);
/// @brief Move the number "num" into a string.
/// @param buffer The string containing the number.
/// @param num The number to convert.
/// @param base The base used to convert.
void int_to_str(char *buffer, unsigned int num, unsigned int base);
/// @brief Transforms num into a string.
void _knntos(char *buffer, int num, int base);
/// @brief Replaces the occurences of find with replace inside str.
char *replace_char(char *str, char find, char replace);
/// @brief Converts a file mode (the type and permission information associated
/// with an inode) into a symbolic string which is stored in the location
/// referenced by p.
void strmode(mode_t mode, char *p);