20
20
#ifndef GRUB_READER_HEADER
21
21
#define GRUB_READER_HEADER 1
23
#include <grub/types.h>
24
23
#include <grub/err.h>
25
#include <grub/handler.h>
27
25
typedef grub_err_t (*grub_reader_getline_t) (char **, int);
31
/* The next reader. */
32
struct grub_parser *next;
34
/* The reader name. */
37
/* Initialize the reader. */
38
grub_err_t (*init) (void);
40
/* Clean up the reader. */
41
grub_err_t (*fini) (void);
43
grub_reader_getline_t read_line;
45
typedef struct grub_reader *grub_reader_t;
47
extern struct grub_handler_class EXPORT_VAR(grub_reader_class);
49
grub_err_t EXPORT_FUNC(grub_reader_loop) (grub_reader_getline_t getline);
52
grub_reader_register (const char *name __attribute__ ((unused)),
55
grub_handler_register (&grub_reader_class, GRUB_AS_HANDLER (reader));
59
grub_reader_unregister (grub_reader_t reader)
61
grub_handler_unregister (&grub_reader_class, GRUB_AS_HANDLER (reader));
64
static inline grub_reader_t
65
grub_reader_get_current (void)
67
return (grub_reader_t) grub_reader_class.cur_handler;
70
static inline grub_err_t
71
grub_reader_set_current (grub_reader_t reader)
73
return grub_handler_set_current (&grub_reader_class,
74
GRUB_AS_HANDLER (reader));
77
void grub_register_rescue_reader (void);
27
void grub_rescue_run (void);
79
29
#endif /* ! GRUB_READER_HEADER */