ref: bb63f08a8acc62f17975b108c918f4ff20c1f2c0
dir: /editor.c/
#include <u.h>
#include <libc.h>
#include <draw.h>
#include <memdraw.h>
#include <event.h>
#include "blie.h"
void
loadeditors(void)
{
addeditor(&p9image);
addeditor(&efilter);
}
typedef struct Leditor Leditor;
struct Leditor {
Editor *editor;
Leditor *next;
};
Leditor *firsteditor = nil;
int
addeditor(Editor *ed)
{
Leditor *l;
if (geteditor(ed->name)) {
werrstr("editor already registered: %s", ed->name);
return 0;
}
if (!firsteditor) {
firsteditor = mallocz(sizeof(Leditor), 1);
firsteditor->editor = ed;
if (ed->init)
ed->init();
return 1;
}
for (l = firsteditor; l->next; l = l->next)
continue;
l->next = mallocz(sizeof(Leditor), 1);
l = l->next;
l->editor = ed;
if (ed->init)
ed->init();
return 1;
}
Editor*
geteditor(char *name)
{
Leditor *l;
for (l = firsteditor; l; l = l->next) {
if (cistrcmp(name, l->editor->name) == 0)
return l->editor;
}
return nil;
}