Listing 6 An application of exception handling

typedef struct {
  char *str;
} Err;

struct {
  struct {
    Err open;
    Err close;
    Err write;
    struct {
      Err end_of_file;
      Err system;
    } read;
  } io;
  struct {
    Err no_memory;
    Err already_free;
  } memo;
  Err syntax;
} foo = {
  {
    {"cannot open file"},
    {"cannot close file"},
    {"cannot write to file"},
    {
      {"end of file"},
      { "system read failure"}
    }
  },
  {
    {"not enough memory"},
    {"block already free"}
  },
  {"syntax error"}
};

/* End of File */