Files
MentOS/libc/inc/stdio.h
T
2023-06-02 13:49:10 -04:00

131 lines
5.3 KiB
C

/// @file stdio.h
/// @brief Standard I/0 functions.
/// @copyright (c) 2014-2023 This file is distributed under the MIT License.
/// See LICENSE.md for details.
#pragma once
#include "stdarg.h"
#include "stddef.h"
/// @brief The maximum number of digits of an integer.
#define MAX_DIGITS_IN_INTEGER 11
/// @brief The size of 'gets' buffer.
#define GETS_BUFFERSIZE 255
#ifndef EOF
/// @brief Define the End-Of-File.
#define EOF (-1)
#endif
#define SEEK_SET 0 ///< The file offset is set to offset bytes.
#define SEEK_CUR 1 ///< The file offset is set to its current location plus offset bytes.
#define SEEK_END 2 ///< The file offset is set to the size of the file plus offset bytes.
#ifndef __KERNEL__
/// @brief Writes the given character to the standard output (stdout).
/// @param character The character to send to stdout.
void putchar(int character);
/// @brief Writes the string pointed by str to the standard output (stdout)
/// and appends a newline character.
/// @param str The string to send to stdout.
void puts(const char *str);
/// @brief Returns the next character from the standard input (stdin).
/// @return The character received from stdin.
int getchar();
/// @brief Reads characters from the standard input (stdin).
/// @param str Where the characters are stored.
/// @return The string received from standard input.
char *gets(char *str);
/// @brief Same as getchar but reads from the given file descriptor.
/// @param fd The file descriptor from which it reads.
/// @return The read character.
int fgetc(int fd);
/// @brief Same as gets but reads from the given file descriptor.
/// @param buf The buffer where the string should be placed.
/// @param n The amount of characters to read.
/// @param fd The file descriptor from which it reads.
/// @return The read string.
char *fgets(char *buf, int n, int fd);
#endif
/// @brief Convert the given string to an integer.
/// @param str The string to convert.
/// @return The integer contained inside the string.
int atoi(const char *str);
/// @brief Converts the initial part of `str` to a long int value according to
/// the given base, which.
/// @param str This is the string containing the integral number.
/// @param endptr Set to the character after the numerical value.
/// @param base The base must be between 2 and 36 inclusive, or special 0.
/// @return Integral number as a long int value, else zero value is returned.
long strtol(const char *str, char **endptr, int base);
/// @brief Write formatted output to stdout.
/// @param fmt The format string.
/// @param ... The list of arguments.
/// @return On success, the total number of characters written is returned.
/// On failure, a negative number is returned.
int printf(const char *fmt, ...);
/// @brief Write formatted output to `str`.
/// @param str The buffer where the formatted string will be placed.
/// @param fmt Format string, following the same specifications as printf.
/// @param ... The list of arguments.
/// @return On success, the total number of characters written is returned.
/// On failure, a negative number is returned.
int sprintf(char *str, const char *fmt, ...);
#ifndef __KERNEL__
/// @brief The same as sprintf, but it putput on file.
/// @param fd The file descriptor associated with the file.
/// @param fmt Format string, following the same specifications as printf.
/// @param ... The list of arguments.
/// @return On success, the total number of characters written is returned.
/// On failure, a negative number is returned.
int fprintf(int fd, const char *fmt, ...);
#endif
/// @brief Write formatted data from variable argument list to string.
/// @param str Pointer to a buffer where the resulting C-string is stored.
/// @param fmt Format string, following the same specifications as printf.
/// @param args A variable arguments list.
/// @return On success, the total number of characters written is returned.
/// On failure, a negative number is returned.
int vsprintf(char *str, const char *fmt, va_list args);
#ifndef __KERNEL__
/// @brief Read formatted input from stdin.
/// @param fmt Format string, following the same specifications as printf.
/// @param ... The list of arguments where the values are stored.
/// @return On success, the function returns the number of items of the
/// argument list successfully filled. EOF otherwise.
int scanf(const char *fmt, ...);
/// @brief Read formatted data from string.
/// @param str String processed as source to retrieve the data.
/// @param fmt Format string, following the same specifications as printf.
/// @param ... The list of arguments where the values are stored.
/// @return On success, the function returns the number of items of the
/// argument list successfully filled. EOF otherwise.
int sscanf(const char *str, const char *fmt, ...);
/// @brief The same as sscanf but the source is a file.
/// @param fd The file descriptor associated with the file.
/// @param fmt Format string, following the same specifications as printf.
/// @param ... The list of arguments where the values are stored.
/// @return On success, the function returns the number of items of the
/// argument list successfully filled. EOF otherwise.
int fscanf(int fd, const char *fmt, ...);
#endif
/// @brief Prints a system error message.
/// @param s the message we prepend to the actual error message.
void perror(const char *s);