gctf2023/pwn/flipper/dist/userspace/libc/include/stdio.h
2023-11-24 13:11:34 -05:00

254 lines
6.1 KiB
C

// Projectname: SWEB
// Simple operating system for educational purposes
//
// Copyright (C) 2005 Andreas Niederl
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#pragma once
// stdarg.h is taken from gcc
#include <stdarg.h>
#include "unistd.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* Size of <stdio.h> buffers
*
*/
#define BUFSIZ 4096
/**
* Input/output fully buffered
*
*/
#define _IOFBF 0x0000
/**
* Input/output line buffered
*
*/
#define _IOLBF 0x0001
/**
* Input/output unbuffered
*
*/
#define _IONBF 0x0002
/**
* Maximum size of character array to hold ctermid() output
*
*/
#define L_ctermid 64
/**
* Maximum size of character array to hold tmpnam() output
*
*/
#define L_tmpnam 64
/**
* Set file offset to offset, defined for lseek() and fcntl()
*
*/
#define SEEK_SET 0x0000
/**
* Set file offset to current + offset, defined for lseek() and fcntl()
*
*/
#define SEEK_CUR 0x0001
/**
* Set file offset to EOF + offset, defined for lseek() and fcntl()
*
*/
#define SEEK_END 0x0002
/**
* Maximum size in bytes of the longest filename string that the implementation
* guarantees can be opened.
*
*/
#define FILENAME_MAX 256
/**
* Number of streams which the implementation guarantees can be opened
* simultaneously. The value is at least eight.
*
*/
#define FOPEN_MAX 8
/**
* Minimum number of unique filenames generated by tmpnam(). Maximum number of
* times an application can call tmpnam() reliably. The value of TMP_MAX is at
* least 25.
*
*/
#define TMP_MAX 25
/**
* End-of-file return value
*
*/
#define EOF -1
/**
* NULL pointer constant
*
*/
#define NULL 0
/**
* Default directory prefix for tempnam()
*
*/
#define P_tmpdir /tmp
/**
* A non-array type containing all information needed to specify uniquely
* every position within a file.
*
*/
typedef off_t fpos_t;
/**
* Renames a file, moving it between directories if required.
*
* @param old_path The old pathname
* @param new_path The new pathname
* @return 0 on success, -1 otherwise and errno is set appropriately
*
*/
extern int rename(const char *old_path, const char *new_path);
/**
* Equivalent to getc(stdin).
*
* @return The read character on success, EOF otherwise and errno is set\
appropriately
*
*/
extern int getchar();
/**
* Reads a line from stdin and stores it in the string pointed to by the
* argument.
* Reading is terminated by a newline, EOF which are both replaced by '\0' or
* when the buffer is full.
*
* @param input_buffer The buffer where the input is stored
* @param buffer_size The size of the buffer
* @return A pointer to the input_string on success, NULL otherwise
*
*/
extern char *gets(char *input_buffer, size_t buffer_size);
extern char *fgets(char *str, int num, int fd);
/**
* Equivalent to putc(character, stdout).
*
* @param character The character for writing
* @return The character written as unsigned char cast to int or EOF on error
*
*/
extern int putchar(int character);
/**
* Writes the given string followed by a newline to stdout.
*
* @param output_string The string for writing
* @return A non-negative number on success or EOF on error
*
*/
extern int puts(const char *output_string);
/**
* Writes output to stdout.
* A detailed description of the format is given in the
* 'Linux Programmer's Manual'.
*
* @param format A string containing the output format, followed by an\
argument list containing different variables for output
* @return The number of characters printed or the number of characters that\
would have been printed if the output was truncated, a negative\
value is returned on failure
*
*/
extern int printf(const char *format, ...) __attribute__ ((format (printf, 1, 2)));
/**
* Prints an error message on the standard error output describing the last
* error encountered during a call to a system or library function.
* This function first prints the given error message string, if it is not
* NULL and has a length greater zero, followed by a colon and a blank.
* After that the message corresponding to the last error is printed
* followed by a new-line.
* It is useful to include the name of the function that failed in the
* argument string.
*
* The last error number is stored in the external variable errno which
* indexes the global error list sys_errlist[]. By accessing this list with
* errno as index, the message for the error can be obtained.
* The largest index for sys_errlist[] is the value of the external variable
* sys_nerr - 1.
*
* The variable errno has undefined state if the call to a function succeeded.
* If a failing call is not immediately followed by a call to perror() then
* the value of errno should be saved.
*
* @param error_msg Additional error message
*
*/
extern void perror(const char *error_msg);
/**
* Reads input from stdin according to the given format and
* assigns read values to the given variables.
* A detailed description of the format is given in the
* 'Linux Programmer's Manual'.
*
* @param format A string containing the input format, followed by an\
argument list of variables for assignment
* @return The number of input items assigned, zero indicates that no input\
items were assigned while input was available, EOF if failure (e.g.\
end-of-file) occurs before any items have been read
*
*/
extern int scanf(const char *format, ...) __attribute__ ((format (scanf, 1, 2)));
extern int sscanf(const char *buffer, const char *fmt, ...) __attribute__((format (scanf, 2, 3)));
#ifdef __cplusplus
}
#endif