- libreadline
- libarchive
- Database
- Versioning
- Notes
- Filtering
- length / time to make (0hr 50min)
- difficulty (easy/medium/hard)
- country / region (ex. Mexican Food)
- meal (bfast/brunch/dinner/snack/dessert)
- special ingredients / store (ex. Asian Market)
- Branching/copying
- File serializing/deserializing
- Unit conversion system
- Command line interface
- libreadline
- adjustable serving size
- filtering
- shell integration
- piping with linux commands
- one shot mode
Braces on same line, except for function definitions or multi-line conditionals
int foo()
{
if (bar()) {
}
}
lower-case snake-case naming for variables and functions
#define
constants, enum values upper-case snake-case
globals prefixed with g_, avoid as much as possible
structs and typedefs are seperate, typedef types suffixed with _t
typedef struct foo foo_t;
struct foo {
};
use static functions, sanity check arguments on non-static functions