Initial revision
[ssr] / StraySrc / Libraries / Steel / h / xferrecv
CommitLineData
2ee739cc 1/****************************************************************************
2 * This source file was written by Acorn Computers Limited. It is part of *
3 * the RISCOS library for writing applications in C for RISC OS. It may be *
4 * used freely in the creation of programs for Archimedes. It should be *
5 * used with Acorn's C Compiler Release 3 or later. *
6 * *
7 ***************************************************************************/
8
9/*----- Licensing note ----------------------------------------------------*
10 *
11 * This file is part of Straylight's Steel library.
12 *
13 * Steel is free software; you can redistribute it and/or modify
14 * it under the terms of the GNU General Public License as published by
15 * the Free Software Foundation; either version 2, or (at your option)
16 * any later version.
17 *
18 * Steel is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU General Public License for more details.
22 *
23 * You should have received a copy of the GNU General Public License
24 * along with Steel. If not, write to the Free Software Foundation,
25 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
26 */
27
28/* Title: xferrecv.h
29 * Purpose: general purpose import of data by dragging icon
30 *
31 */
32
33#ifndef __xferrecv_h
34#define __xferrecv_h
35
36#ifndef __flex_h
37 #include "flex.h"
38#endif
39
40#ifndef BOOL
41#define BOOL int
42#define TRUE 1
43#define FALSE 0
44#endif
45
46
47/* -------------------------- xferrecv_checkinsert -------------------------
48 * Description: Set up the acknowledge message for a MDATAOPEN or MDATALOAD
49 * and get filename to load from.
50 *
51 * Parameters: char **filename -- returned pointer to filename
52 * Returns: the file's type (eg. 0x0fff for !Edit)
53 * Other Info: This function checks to see if the last wimp event was a
54 * request to import a file. If so it returns file type and
55 * a pointer to file's name is put into *filename. If not
56 * it returns -1.
57 *
58 */
59
60int xferrecv_checkinsert(char **filename);
61
62
63/* --------------------------- xferrecv_insertfileok -----------------------
64 * Description: Deletes scrap file (if used for transfer), and sends
65 * acknowledgement of MDATALOAD message.
66 *
67 * Parameters: void
68 * Returns: void.
69 * Other Info: none.
70 *
71 */
72
73void xferrecv_insertfileok(void);
74
75
76/* --------------------------- xferrecv_checkprint -------------------------
77 * Description: Set up acknowledge message to a MPrintTypeOdd message
78 * and get file name to print.
79 *
80 * Parameters: char **filename -- returned pointer to filename
81 * Returns: The file's type (eg. 0x0fff for !Edit).
82 * Other Info: Application can either print file directly or convert it to
83 * <Printer$Temp> for printing by the printer application.
84 *
85 */
86
87int xferrecv_checkprint(char **filename);
88
89
90/* --------------------------- xferrecv_printfileok ------------------------
91 * Description: Send an acknowledgement back to printer application. If
92 * file sent to <Printer$Temp> then this also fills in file
93 * type in message.
94 *
95 * Parameters: int type -- type of file sent to <Printer$Temp>
96 * (eg. 0x0fff for !edit)
97 * Returns: void.
98 * Other Info: none.
99 *
100 */
101
102void xferrecv_printfileok(int type);
103
104
105/* ---------------------------- xferrecv_checkimport -----------------------
106 * Description: Set up acknowledgement message to a MDATASAVE message.
107 *
108 * Parameters: int *estsize -- sender's estimate of file size
109 * Returns: File type.
110 * Other Info: none.
111 *
112 */
113
114int xferrecv_checkimport(int *estsize);
115
116/*
117 * char *xferrecv_nameToImport(void)
118 *
119 * Use
120 * Returns the name of the file to import (full pathname if available).
121 *
122 * Returns
123 * A pointer to a read-only string.
124 */
125
126char *xferrecv_nameToImport(void);
127
128/*
129 * void xferrecv_importByScrap(void)
130 *
131 * Use
132 * Tells xferrecv not to bother with RAM transfer, but to use the
133 * <Wimp$Scrap> file instead. It checks that the system variables and
134 * everything are set up right beforehand.
135 */
136
137void xferrecv_importByScrap(void);
138
139/* ------------------------- xferrecv_buffer_processor ---------------------
140 * Description: This is a typedef for the caller-supplied function
141 * to empty a full buffer during data transfer.
142 *
143 * Parameters: char **buffer -- new buffer to be used
144 * int *size -- updated size
145 * Returns: return FALSE if unable to empty buffer or create new one.
146 * Other Info: This is the function (supplied by application,) which will
147 * be called when buffer is full. It should empty the current
148 * buffer, or create more space and modify size accordingly
149 * or return FALSE. *buffer and *size are the current buffer
150 * and its size on function entry.
151 *
152 */
153
154typedef BOOL (*xferrecv_buffer_processor)(char **buffer, int *size);
155
156
157
158/* ---------------------------- xferrecv_doimport --------------------------
159 * Description: Loads data into a buffer, and calls the caller-supplied
160 * function to empty the buffer when full.
161 *
162 * Parameters: char *buf -- the buffer
163 * int size -- buffer's size
164 * xferrecv_buffer_processor -- caller-supplied function to
165 * be called when buffer full
166 * Returns: Number of bytes transferred on successful completion
167 * or -1 otherwise.
168 * Other Info: none.
169 *
170 */
171
172int xferrecv_doimport(char *buf, int size, xferrecv_buffer_processor);
173
174/*
175 * int xferrecv_returnImportedBlock(flex_ptr p)
176 *
177 * Use
178 * Performs the data import if possible, and returns with the block filled
179 * with *ALL* the imported data i.e. it obviates the need of any work on
180 * your part for the data transfer. This is the life, huh? If anything
181 * went wrong, it returns -1 as for xferrecv_doimport
182 *
183 * Parameters
184 * flex_ptr p == flex pointer to nothing in particular (certainly not a
185 * flex block - one is allocated for you). Remember to free it after
186 * you've read all the data! Also ensure that flex has been initialised.
187 * If there is no data to import (i.e. the import failed) then p is freed
188 * of any data that may have been stored there.
189 *
190 * Returns
191 * -1 for failure, or the total size of the imported data for success
192 */
193
194int xferrecv_returnImportedBlock(flex_ptr p);
195
196/* ---------------------- xferrecv_file_is_safe ----------------------------
197 * Description: Informs caller if file was recieved from a "safe" source
198 * (see below for definition of "safe").
199 *
200 * Parameters: void
201 * Returns: true if file is safe.
202 * Other Info: "Safe" in this context means that the supplied filename
203 * will not change in the foreseeable future.
204 *
205 */
206
207BOOL xferrecv_file_is_safe(void);
208
209#endif
210
211/* end xferrecv.h */