kern/include/stdio.h
2025-04-03 12:29:48 -04:00

175 lines
4.2 KiB
C

/**
* @file stdio.h
*
* @author Freya Murphy <freya@freyacat.org>
*
* Standard I/O definitions.
*/
#ifndef _STDIO_H
#define _STDIO_H
#include <stdarg.h>
#include <stddef.h>
typedef void FILE;
/// standard input
#define stdin ((FILE *)1)
/// standard output
#define stdout ((FILE *)2)
/// standard error
#define stderr ((FILE *)3)
/// console output
#define stdcon ((FILE *)4)
/// serial output
#define stduart ((FILE *)5)
/**
* Prints out a char
*
* @param c - the char
*/
extern void putc(char c);
/**
* Prints out a null terminated string
*
* @param s - the string
*/
extern void puts(const char *s);
/**
* Prints out a char
*
* @param stream - stream to write to
* @param c - the char
*/
extern void fputc(FILE *stream, char c);
/**
* Prints out a null terminated string
*
* @param stream - stream to write to
* @param s - the string
*/
extern void fputs(FILE *stream, const char *s);
/**
* prints out a formatted string
*
* @param format - the format string
* @param ... - variable args for the format
*/
__attribute__((format(printf, 1, 2))) extern void printf(const char *format,
...);
/**
* prints out a formatted string to a buffer
*
* @param s - the string to write to
* @param format - the format string
* @param ... - variable args for the format
* @returns number of bytes written
*/
__attribute__((format(printf, 2, 3))) extern size_t
sprintf(char *restrict s, const char *format, ...);
/**
* prints out a formatted string to a buffer with a given max length
*
* @param s - the string to write to
* @param maxlen - the max len of the buffer
* @param format - the format string
* @param ... - variable args for the format
* @returns number of bytes written
*/
__attribute__((format(printf, 3, 4))) extern size_t
snprintf(char *restrict s, size_t maxlen, const char *format, ...);
/**
* prints out a formatted string
*
* @param format - the format string
* @param args - variable arg list for the format
*/
extern void vprintf(const char *format, va_list args);
/**
* prints out a formatted string to a buffer
*
* @param s - the string to write to
* @param format - the format string
* @param args - variable arg list for the format
* @returns number of bytes written
*/
extern size_t vsprintf(char *restrict s, const char *format, va_list args);
/**
* prints out a formatted string to a buffer with a given max length
*
* @param s - the string to write to
* @param maxlen - the max len of the buffer
* @param format - the format string
* @param args - variable arg list for the format
* @returns number of bytes written
*/
extern size_t vsnprintf(char *restrict s, size_t maxlen, const char *format,
va_list args);
/**
* prints out a formatted string
*
* @param stream - the opened stream to print to
* @param format - the format string
* @param ... - variable args for the format
*/
__attribute__((format(printf, 2, 3))) extern void
fprintf(FILE *stream, const char *format, ...);
/**
* prints out a formatted string
*
* @param stream - the opened stream to print to
* @param format - the format string
* @param args - variable arg list for the format
*/
extern void vfprintf(FILE *stream, const char *format, va_list args);
/**
* opens a file with a given file name
*
* @param filename - the name of the file to open
* @returns the file pointer of success, NULL on error
*/
extern FILE *fopen(const char *filename);
/**
* closes a opened file
*
* @param stream - the opened file stream
*/
extern void fclose(FILE *stream);
/**
* reads data from a file into a pointer
* @param ptr - the buffer to write into
* @param size - the size of the block to read
* @param n - the count of blocks to read
* @param stream - the file stream to read from
* @returns the number of blocks read
*/
extern size_t fread(void *ptr, size_t size, size_t n, FILE *stream);
/**
* writes data from a pointer into a file
* @param ptr - the buffer to read from
* @param size - the size of the block to write
* @param n - the count of blocks to write
* @param stream - the file stream to write into
* @returns the number of blocks written
*/
extern size_t fwrite(void *ptr, size_t size, size_t n, FILE *stream);
#endif /* stdio.h */