1 #ifndef __PFILESEL_H
2 #define __PFILESEL_H
3 
4 #include <stdio.h> /* FILE * */
5 
6 struct ocpfilehandle_t;
7 struct moduleinfostruct;
8 extern int fsGetNextFile (struct moduleinfostruct *info, struct ocpfilehandle_t **filehandle); /* info comes from external buffer */
9 extern int fsGetPrevFile (struct moduleinfostruct *info, struct ocpfilehandle_t **filehandle); /* info comes from external buffer */
10 extern int fsFilesLeft(void);
11 extern signed int fsFileSelect(void);
12 /* extern char fsAddFiles(const char *);      use the playlist instead..*/
13 extern int fsPreInit(void);
14 extern int fsLateInit(void);
15 extern int fsInit(void);
16 extern void fsClose(void);
17 
18 extern int fsFPS; /* see stuff/framelock.c */
19 extern int fsFPSCurrent; /* see stuff/framelock.c */
20 extern int fsListScramble;
21 extern int fsListRemove;
22 extern int fsLoopMods;
23 extern int fsScanNames;
24 extern int fsScanArcs;
25 extern int fsScanInArc;
26 extern int fsScanMIF;
27 extern int fsScrType;
28 extern int fsEditWin;
29 extern int fsColorTypes;
30 extern int fsInfoMode;
31 extern int fsPutArcs;
32 extern int fsWriteModInfo;
33 extern const char *fsTypeNames[256]; /* type description */
34 
35 extern void fsRegisterExt(const char *ext);
36 extern int fsIsModule(const char *ext);
37 
38 struct preprocregstruct
39 {
40 	void (*Preprocess)(struct moduleinfostruct *info, struct ocpfilehandle_t **f);
41 	struct preprocregstruct *next;
42 };
43 
44 #define PREPROCREGSTRUCT_TAIL ,0
45 
46 typedef enum {
47 	interfaceReturnContinue=0,
48 	interfaceReturnNextAuto=1,
49 	interfaceReturnQuit=2,
50 	interfaceReturnNextManuel=3,
51 	interfaceReturnPrevManuel=6,
52 	interfaceReturnCallFs=4,
53 	interfaceReturnDosShell=5
54 } interfaceReturnEnum;
55 
56 struct interfacestruct
57 {
58 	int (*Init)(struct moduleinfostruct *info, struct ocpfilehandle_t *f);
59 	interfaceReturnEnum (*Run)(void);
60 	void (*Close)(void);
61 	const char *name;
62 	struct interfacestruct *next;
63 };
64 #define INTERFACESTRUCT_TAIL ,0
65 
66 
67 extern void plRegisterInterface(struct interfacestruct *interface);
68 extern void plUnregisterInterface(struct interfacestruct *interface);
69 extern struct interfacestruct *plFindInterface(const char *name);
70 extern struct preprocregstruct *plPreprocess;
71 extern void plRegisterPreprocess(struct preprocregstruct *r);
72 extern void plUnregisterPreprocess(struct preprocregstruct *r);
73 
74 #define RD_PUTSUBS 1
75 #define RD_ARCSCAN 2
76 #define RD_SUBNOSYMLINK 4
77 #define RD_PUTDRIVES 8
78 #define RD_PUTRSUBS 16
79 
80 #if 0
81 extern char mifMemRead(const char *name, unsigned short size, char *ptr);
82 #endif
83 
84 int fsMatchFileName12(const char *a, const char *b);
85 
86 extern void fsDraw(void); /* used by medialib to have backdrop for the dialogs they display on the screen */
87 extern void fsSetup(void);
88 extern void fsRescanDir(void);
89 
90 struct modlist;
91 struct ocpdir_t;
92 extern int fsReadDir(struct modlist *ml, struct ocpdir_t *dir, const char *mask, unsigned long opt);
93 extern void fsForceRemove(const uint32_t dirdbref);
94 
95 #endif
96