Initial import of Scalos. To decrease size I have
[AROS-Contrib.git] / scalos / Plugins / OOP / TitleClock / prefs / requesters.c
blob32334d8342564da885d99e7e72d8e6664eb3da0d
1 /*
2 * requesters.c Various routines for ASL requester and such like
4 * $Date$
5 * $Revision$
7 * 0.1
8 * 20010804 DM + Created
12 #include <exec/types.h>
14 #include <proto/asl.h>
15 #include <proto/exec.h>
16 #include <proto/dos.h>
18 #include <intuition/intuition.h>
19 #include <libraries/asl.h>
21 #include <stdio.h>
22 #include <string.h>
24 STRPTR SaveFileReq(struct Window *win)
26 struct FileRequester *aslfr;
27 STRPTR fbuf = NULL;
28 ULONG fblen;
30 if(NULL != (aslfr = AllocAslRequest(ASL_FileRequest, NULL)) )
32 if(AslRequestTags(aslfr,ASLFR_Window, win,
33 ASLFR_SleepWindow, TRUE,
34 ASLFR_RejectIcons, TRUE,
35 ASLFR_DoSaveMode, TRUE,
36 TAG_DONE) )
38 //printf("OK\n");
39 fblen = 0;
40 if(aslfr->fr_Drawer)
42 /* add 1 for any possible / character */
43 fblen += strlen(aslfr->fr_Drawer);
44 if(fblen) fblen++;
45 //printf("Dir='%s'\n", aslfr->fr_Drawer);
48 if(aslfr->fr_File)
50 fblen += strlen(aslfr->fr_File);
51 //printf("File='%s'\n", aslfr->fr_File);
53 if(fblen) fblen++;
54 //printf("length of string name buffer=%lu\n", fblen);
56 fbuf = AllocVec(fblen, MEMF_ANY|MEMF_CLEAR);
57 if(fbuf)
59 if(aslfr->fr_Drawer)
61 strcpy(fbuf, aslfr->fr_Drawer);
64 if(aslfr->fr_File)
66 AddPart(fbuf, aslfr->fr_File, fblen);
68 //printf("complete name='%s'\n", fbuf);
71 FreeAslRequest(aslfr);
73 else
75 FreeAslRequest(aslfr);
76 aslfr = NULL;
77 fbuf = NULL;
80 return(fbuf);
84 STRPTR OpenFileReq(struct Window *win)
86 struct FileRequester *aslfr;
87 STRPTR fbuf = NULL;
88 ULONG fblen;
90 if(NULL != (aslfr = AllocAslRequest(ASL_FileRequest, NULL)) )
92 if(AslRequestTags(aslfr,ASLFR_Window, win,
93 ASLFR_SleepWindow, TRUE,
94 ASLFR_RejectIcons, TRUE,
95 TAG_DONE) )
97 //printf("OK\n");
98 fblen = 0;
99 if(aslfr->fr_Drawer)
101 /* add 1 for any possible / character */
102 fblen += strlen(aslfr->fr_Drawer);
103 if(fblen) fblen++;
104 //printf("Dir='%s'\n", aslfr->fr_Drawer);
107 if(aslfr->fr_File)
109 fblen += strlen(aslfr->fr_File);
110 //printf("File='%s'\n", aslfr->fr_File);
112 if(fblen) fblen++;
113 //printf("length of string name buffer=%lu\n", fblen);
115 fbuf = AllocVec(fblen, MEMF_ANY|MEMF_CLEAR);
116 if(fbuf)
118 if(aslfr->fr_Drawer)
120 strcpy(fbuf, aslfr->fr_Drawer);
123 if(aslfr->fr_File)
125 AddPart(fbuf, aslfr->fr_File, fblen);
127 //printf("complete name='%s'\n", fbuf);
130 FreeAslRequest(aslfr);
132 else
134 FreeAslRequest(aslfr);
135 aslfr = NULL;
136 fbuf = NULL;
139 return(fbuf);
142 #if 0
143 // Small test program for the above functions
144 struct Library *AslBase;
146 int main(void)
148 STRPTR fbuf;
150 if(NULL != (AslBase = OpenLibrary("asl.library", 38)) )
152 fbuf = OpenFileReq(NULL);
153 if(fbuf)
155 printf("File name='%s'\n", fbuf);
156 FreeVec(fbuf);
160 fbuf = SaveFileReq(NULL);
161 if(fbuf)
163 printf("File name='%s'\n", fbuf);
164 FreeVec(fbuf);
167 CloseLibrary(AslBase);
169 return(0);
171 #endif