Prev, Top Slide, Next

2. Using the Library

2.1 The simple case

const char *explain_rename(const char *oldpath, const char *newpath);
slide

2.2 The errno case

const char *explain_errno_rename(int errno, const char *oldpath, const char *newpath);
slide

2.3 Multi-thread

const char *explain_message_rename(char *msg, size_t msg_size, int errno, const char *oldpath, const char *newpath);
const char *explain_message_errno_rename(char *msg, size_t msg_size, int errno, const char *oldpath, const char *newpath);
slide

2.4 Interface Sugar

int explain_rename_or_die(const char *oldpath, const char *newpath);
int explain_rename_on_error(const char *oldpath, const char *newpath);
slide

2.5 All the other system calls

as above, but as appropriate
slide

2.6 cat

slide

2.7 Rusty's Scale of Interface Goodness

slide
10. It's impossible to get wrong.
9. The compiler or linker won't let you get it wrong.
8. The compiler will warn if you get it wrong.
7. The obvious use is (probably) the correct one.
6. The name tells you how to use it.
5. Do it right or it will break at runtime.
4. Follow common convention and you'll get it right.
3. Read the documentation and you'll get it right.