- IO: Have
fd_open_for_write()overwrite the file if it already exists on Windows
- PATH: Have
path_cp()exit if no bytes are read or written on Windows
- NOBUILD.H: Fix inclusion of implementation when
NOBUILD_IMPLEMENTATIONis not defined
- Use
nobuild__GetLastErrorAsString()everywhereGetLastErrorAsString()is used'
- Avoid using VLA's when building on windows
- Avoid using
PATH_MAXon windows
- PATH: Make
is_path1_modified_after_path2()recursively check directories for the most recently modified file - PATH: Deprecate
is_path1_modified_after_path2()in favor ofpath_is_newer()
- PATH: Add
path_is_newer()function - CSTR: Add
cstr_array_contains()function
- BREAKING: Removed
cstr_no_extfunction. - BREAKING: Removed then
INandOUTmacros.
- BREAKING:
cst_array_removereturnsCstr_Arrayinstead ofCstr. - Deprecated
VLOGfunction.
- Fixed
cstr_array_removenot correctly returning the modifiedCstr_Array.
- Generated standalone versions for each nobuild library.
- Fixed
realloc: invalid pointererror when nobuild rebuilds itself.
- Fixed string returned from
path_dirnamenot being null-terminated correctly.
- Added
fd_writefunction. This allows you to write bytes from a buffer into a specifiedFd. - Added
fd_readfunction. This allows you to read bytes into a buffer from a specifiedFd.
- Added
fd_printffunction. It's a printf function that outputs into into the specifiedFd. - Added
file_to_c_arrayfunction and helper macro that embed's a file into a C array of bytes.
- Fixed security warnings generated by calling
strerror,strcpy, andstrncpyon windows.
- Deprecated
INmacro, useCHAIN_INinstead. - Deprecated
OUTmacro, useCHAIN_OUTinstead.
- Included "direct.h" on windows.
- Fixed various conversion warnings.
- Fixed calls to undefined functons on windows.
- Deprecated
cst_no_extfunction, usepath_no_extinstead. - Prevent
is_path_1_modified_after_path2from causing a crash if either path didn't exist.
- Added
path_no_extfunction to replacecstr_no_ext. - Forwrad declared
is_path1_modified_after_path2function and addedIS_NEWERmacro.. - Added
path_copyfunction andCOPYhelper macro for recursive copying. - Added
path_dirnamefunction andDIRNAMEhelper macro to extract path dirname. - Added
path_basenamefunction andBASENAMEhelper macro to extract path basename. - Added
path_is_filefunction andIS_FILEhelper macro.
- Logging functions print the calling function and source line.
- Define
TODOandTODO_SAFEmacro to log unimplemented features.
- Add
capacityfield toCstr_Arraystruct.
- Add
cstr_starts_withfunction andSTARTS_WITHmacro helper to check ifCstrstarts with a prefix - Add
cstr_array_from_cstrfunction andSPLITmacro helper to splitCstrtoCstr_Array - Add
cstr_array_removefunction to remove a specific string from aCstr_Array - Add
cstr_array_concatfunction to concatenate aCstr_Arrayinto another.
- Define
CSTR_ARRAY_MAKEmacro that automatically null terminates the var args list passed to it
- Have
CMDmacro use the added command system
- Define
GO_REBUILD_URSELFmacro to add code for rebuilding the executable ifnobuild.cwas modified. - Add
rebuild_urself()as backend forGO_REBUILD_URSELF. - Add
Cstras type alias toconst char * - Define a type struct
Cstr_Arrayfor an array ofCstrthat stores its length. - Add
cstr_array_make()for creating aCstr_Arrayfor varargs. The list must be NULL terminated. - Add
cstr_array_append()to create a newCstr_Arrayand append aCstrto it. - Add
cstr_ends_with()function - Add
cstr_array_join()function - Add
cstr_no_ext()function - Add
VLOG()function that acts as the backend of each logging function. - Add
PANIC()function. It's likeERRO()but crashes the whole application. - Add
Cmdstruct to represent a single command line. - Add
Cmd_Arraystruct to represent a series of command lines, storing the number of commands. - Add
Fdas type alias for File descriptor. - Add
Pidas type alias for process ID. - Add
pid_wait()to wait until the process with the specified pid is finished. - Add
cmd_show()to render the cmd to stdout. - Add
cmd_run_async()to run thecmdasynchronously with custom input and output. - Add
cmd_run_sync()to runcmdsynchronously. - Add
fd_open_for_read()to open a path for reading and return a file descriptor to it. - Add
fd_open_for_write()to open a path for writing and return a file descriptor to it. - Add
fd_close()to close a file descriptor. - Add
path_rm()function. - Add
path_mkdirs()function. - Add
path_rename()to rename a path. - Define
RENAME()macro helper. - Add
path_exists()function. - Define
PATH_EXISTS()macro helper. - Add
gccprintf attributes to logging functions. - Add
Pipestruct that represents a shell pipe. - Add
pipe_make()function to have the os create the pipe. - Define
PIPE()macro helper to create a pipe for chaining commands. - Add
Chain_Tokenstruct that represent a part redirectable entity. - Add
Chainstruct that represents a series of commands piped to each other. - Add
chain_run_sync()to run a chain synchronously. - Add
chain_echo()to echo a chain. - Add
chain_build_from_tokens()to build a chain from tokens. - Define
CHAIN()macro helper to create aChainfrom a series ofChain_Tokens. - Add
Chain_Token_Typeenum to store the different types of tokens. - Add
IN()macro to create an inputChain_Token. - Add
OUT()macro to create an outputChain_Token. - Add
CHAIN_CMD()to represent a command that is run as part of the chain. - Add
shift_args()function.
PATH_SEP_LENFOREACH_VARGSCONCAT_SEP(sep, ...) build__deprecated_concat_sep(sep, __VA_ARGS__, NULL)concat_impl(int ignore, ...);concat_sep_impl(const char *sep, ...);build__join(const char *sep, ...);mkdirs_impl(int ignore, ...);cmd_impl(int ignore, ...);remove_ext(const char *path);shift(int *argc, char ***argv);
- Add
ENDS_WITH(str, postfix)function that checks ifstrends withpostfix. - Add
IS_DIR(path)function that checks ifpathis a directory. - Add
RM(path)function that removes the specified path recursively.
- Deprecate
remove_ext(path). UseNOEXT(path)instead. - Deprecate
CONCAT_SEP(sep, ...). UseJOIN(sep, ...)instead. - Deprecate
concat_sep_impl(sep, ...). UseJOIN(sep, ...)instead.
- Add logging functions
INFO(fmt, ...),WARN(fmt, ...),ERRO(fmt, ...). - Introduce API conventions. Functions that start with
nobuild__(double underscore) are private to the library and should not be relied upon. They can be changed in any release without a warning.
Implemented enough functionality to build bm.