1      * Copyright (c) 2015, Patrick Monnerat, D+H <patrick.monnerat@dh.com>
2      * All rights reserved.
3      *
4      * Redistribution and use in source and binary forms,
5      * with or without modification, are permitted provided
6      * that the following conditions are met:
7      *
8      *   Redistributions of source code must retain the above
9      *   copyright notice, this list of conditions and the
10      *   following disclaimer.
11      *
12      *   Redistributions in binary form must reproduce the above
13      *   copyright notice, this list of conditions and the following
14      *   disclaimer in the documentation and/or other materials
15      *   provided with the distribution.
16      *
17      *   Neither the name of the copyright holder nor the names
18      *   of any other contributors may be used to endorse or
19      *   promote products derived from this software without
20      *   specific prior written permission.
21      *
22      * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
23      * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
24      * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
25      * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26      * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
27      * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
28      * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
29      * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
30      * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
31      * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
32      * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
33      * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
34      * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
35      * OF SUCH DAMAGE.
36
37      /if not defined(LIBSSH2_SFTP_H_)
38      /define LIBSSH2_SFTP_H_
39
40      /include "libssh2rpg/libssh2"
41
42      * Note: Version 6 was documented at the time of writing
43      * However it was marked as "DO NOT IMPLEMENT" due to pending changes
44      *
45      * Let's start with Version 3 (The version found in OpenSSH) and go from
46      * there.
47     d LIBSSH2_SFTP_VERSION...
48     d                 c                   3
49
50      * Flags for open_ex().
51     d LIBSSH2_SFTP_OPENFILE...
52     d                 c                   0
53     d LIBSSH2_SFTP_OPENDIR...
54     d                 c                   1
55
56      * Flags for rename_ex().
57     d LIBSSH2_SFTP_RENAME_OVERWRITE...
58     d                 c                   X'00000001'
59     d LIBSSH2_SFTP_RENAME_ATOMIC...
60     d                 c                   X'00000002'
61     d LIBSSH2_SFTP_RENAME_NATIVE...
62     d                 c                   X'00000004'
63
64      * Flags for stat_ex().
65     d LIBSSH2_SFTP_STAT...
66     d                 c                   0
67     d LIBSSH2_SFTP_LSTAT...
68     d                 c                   1
69     d LIBSSH2_SFTP_SETSTAT...
70     d                 c                   2
71
72      * Flags for symlink_ex().
73     d LIBSSH2_SFTP_SYMLINK...
74     d                 c                   0
75     d LIBSSH2_SFTP_READLINK...
76     d                 c                   1
77     d LIBSSH2_SFTP_REALPATH...
78     d                 c                   2
79
80      * SFTP attribute flag bits.
81     d LIBSSH2_SFTP_ATTR_SIZE...
82     d                 c                   X'00000001'
83     d LIBSSH2_SFTP_ATTR_UIDGID...
84     d                 c                   X'00000002'
85     d LIBSSH2_SFTP_ATTR_PERMISSIONS...
86     d                 c                   X'00000004'
87     d LIBSSH2_SFTP_ATTR_ACMODTIME...
88     d                 c                   X'00000008'
89     d LIBSSH2_SFTP_ATTR_EXTENDED...
90     d                 c                   X'80000000'
91
92      * SFTP statvfs flag bits.
93     d LIBSSH2_SFTP_ST_RDONLY...
94     d                 c                   X'00000001'
95     d LIBSSH2_SFTP_ST_NOSUID...
96     d                 c                   X'00000002'
97
98     d #LIBSSH2_SFTP_ATTRIBUTES...
99     d                 ds                  based(######typedef######)
100     d                                     align qualified
101      * If flags & ATTR_* bit is set, then the value in this struct will be
102      * meaningful Otherwise it should be ignored.
103     d  flags                              like(libssh2_Culong)
104     d  filesize                           like(libssh2_uint64_t)
105     d  uid                                like(libssh2_Culong)
106     d  gid                                like(libssh2_Culong)
107     d  permissions                        like(libssh2_Culong)
108     d  atime                              like(libssh2_Culong)
109     d  mtime                              like(libssh2_Culong)
110
111     d #LIBSSH2_SFTP_STATVFS...
112     d                 ds                  based(######typedef######)
113     d                                     align qualified
114     d  f_bsize                            like(libssh2_uint64_t)               Filesys block size
115     d  f_frsize                           like(libssh2_uint64_t)               Fragment size
116     d  f_blocks                           like(libssh2_uint64_t)               FS size in f_frsize
117     d  f_bfree                            like(libssh2_uint64_t)               Free blocks
118     d  f_bavail                           like(libssh2_uint64_t)               Free blks f. nonroot
119     d  f_files                            like(libssh2_uint64_t)               Inodes
120     d  f_ffree                            like(libssh2_uint64_t)               Free inodes
121     d  f_favail                           like(libssh2_uint64_t)               Free inds f. nonroot
122     d  f_fsid                             like(libssh2_uint64_t)               File system ID
123     d  f_flag                             like(libssh2_uint64_t)               Mount flags
124     d  f_namemax                          like(libssh2_uint64_t)               Max filename length
125
126      * SFTP filetypes.
127     d LIBSSH2_SFTP_TYPE_REGULAR...
128     d                 c                   1
129     d LIBSSH2_SFTP_TYPE_DIRECTORY...
130     d                 c                   2
131     d LIBSSH2_SFTP_TYPE_SYMLINK...
132     d                 c                   3
133     d LIBSSH2_SFTP_TYPE_SPECIAL...
134     d                 c                   4
135     d LIBSSH2_SFTP_TYPE_UNKNOWN...
136     d                 c                   5
137     d LIBSSH2_SFTP_TYPE_SOCKET...
138     d                 c                   6
139     d LIBSSH2_SFTP_TYPE_CHAR_DEVICE...
140     d                 c                   7
141     d LIBSSH2_SFTP_TYPE_BLOCK_DEVICE...
142     d                 c                   8
143     d LIBSSH2_SFTP_TYPE_FIFO...
144     d                 c                   9
145
146      * Reproduce the POSIX file modes here for systems that are not POSIX
147      * compliant.
148      *
149      * These is used in "permissions" of "struct _LIBSSH2_SFTP_ATTRIBUTES"
150
151      * File type.
152     d LIBSSH2_SFTP_S_IFMT...                                                   type of file mask
153     d                 c                   X'F000'
154     d LIBSSH2_SFTP_S_IFIFO...                                                  named pipe (fifo)
155     d                 c                   X'1000'
156     d LIBSSH2_SFTP_S_IFCHR...                                                  character special
157     d                 c                   X'2000'
158     d LIBSSH2_SFTP_S_IFDIR...                                                  directory
159     d                 c                   X'4000'
160     d LIBSSH2_SFTP_S_IFBLK...                                                  block special
161     d                 c                   X'6000'
162     d LIBSSH2_SFTP_S_IFREG...                                                  regular
163     d                 c                   X'8000'
164     d LIBSSH2_SFTP_S_IFLNK...                                                  symbolic link
165     d                 c                   X'A000'
166     d LIBSSH2_SFTP_S_IFSOCK...                                                 socket
167     d                 c                   X'C000'
168
169      * File mode.
170      * Read, write, execute/search by owner.
171     d LIBSSH2_SFTP_S_IRWXU...                                                  RWX mask for owner
172     d                 c                   X'01C0'
173     d LIBSSH2_SFTP_S_IRUSR...                                                  R for owner
174     d                 c                   X'0100'
175     d LIBSSH2_SFTP_S_IWUSR...                                                  W for owner
176     d                 c                   X'0080'
177     d LIBSSH2_SFTP_S_IXUSR...                                                  X for owner
178     d                 c                   X'0040'
179      * Read, write, execute/search by group.
180     d LIBSSH2_SFTP_S_IRWXG...                                                  RWX mask for group
181     d                 c                   X'0038'
182     d LIBSSH2_SFTP_S_IRGRP...                                                  R for group
183     d                 c                   X'0020'
184     d LIBSSH2_SFTP_S_IWGRP...                                                  W for group
185     d                 c                   X'0010'
186     d LIBSSH2_SFTP_S_IXGRP...                                                  X for group
187     d                 c                   X'0008'
188      * Read, write, execute/search by others.
189     d LIBSSH2_SFTP_S_IRWXO...                                                  RWX mask for other
190     d                 c                   X'0007'
191     d LIBSSH2_SFTP_S_IROTH...                                                  R for other
192     d                 c                   X'0004'
193     d LIBSSH2_SFTP_S_IWOTH...                                                  W for other
194     d                 c                   X'0002'
195     d LIBSSH2_SFTP_S_IXOTH...                                                  X for other
196     d                 c                   X'0001'
197
198      * C macro implementation.
199     d LIBSSH2_SFTP_S_ISLNK...
200     d                 pr                  extproc('LIBSSH2_SFTP_S_ISLNK')
201     d                                     like(libssh2_Cint)
202     d  permissions                        value like(libssh2_Culong)
203
204      * C macro implementation.
205     d LIBSSH2_SFTP_S_ISREG...
206     d                 pr                  extproc('LIBSSH2_SFTP_S_ISREG')
207     d                                     like(libssh2_Cint)
208     d  permissions                        value like(libssh2_Culong)
209
210      * C macro implementation.
211     d LIBSSH2_SFTP_S_ISDIR...
212     d                 pr                  extproc('LIBSSH2_SFTP_S_ISDIR')
213     d                                     like(libssh2_Cint)
214     d  permissions                        value like(libssh2_Culong)
215
216      * C macro implementation.
217     d LIBSSH2_SFTP_S_ISCHR...
218     d                 pr                  extproc('LIBSSH2_SFTP_S_ISCHR')
219     d                                     like(libssh2_Cint)
220     d  permissions                        value like(libssh2_Culong)
221
222      * C macro implementation.
223     d LIBSSH2_SFTP_S_ISBLK...
224     d                 pr                  extproc('LIBSSH2_SFTP_S_ISBLK')
225     d                                     like(libssh2_Cint)
226     d  permissions                        value like(libssh2_Culong)
227
228      * C macro implementation.
229     d LIBSSH2_SFTP_S_ISFIFO...
230     d                 pr                  extproc('LIBSSH2_SFTP_S_ISFIFO')
231     d                                     like(libssh2_Cint)
232     d  permissions                        value like(libssh2_Culong)
233
234      * C macro implementation.
235     d LIBSSH2_SFTP_S_ISSOCK...
236     d                 pr                  extproc('LIBSSH2_SFTP_S_ISSOCK')
237     d                                     like(libssh2_Cint)
238     d  permissions                        value like(libssh2_Culong)
239
240      * SFTP File Transfer Flags -- (e.g. flags parameter to sftp_open())
241      * Danger will robinson... APPEND doesn't have any effect on OpenSSH
242      * servers.
243     d LIBSSH2_FXF_READ...
244     d                 c                   X'00000001'
245     d LIBSSH2_FXF_WRITE...
246     d                 c                   X'00000002'
247     d LIBSSH2_FXF_APPEND...
248     d                 c                   X'00000004'
249     d LIBSSH2_FXF_CREAT...
250     d                 c                   X'00000008'
251     d LIBSSH2_FXF_TRUNC...
252     d                 c                   X'00000010'
253     d LIBSSH2_FXF_EXCL...
254     d                 c                   X'00000020'
255
256      * SFTP Status Codes (returned by libssh2_sftp_last_error()).
257     d LIBSSH2_FX_OK...
258     d                 c                   0
259     d LIBSSH2_FX_EOF...
260     d                 c                   1
261     d LIBSSH2_FX_NO_SUCH_FILE...
262     d                 c                   2
263     d LIBSSH2_FX_PERMISSION_DENIED...
264     d                 c                   3
265     d LIBSSH2_FX_FAILURE...
266     d                 c                   4
267     d LIBSSH2_FX_BAD_MESSAGE...
268     d                 c                   5
269     d LIBSSH2_FX_NO_CONNECTION...
270     d                 c                   6
271     d LIBSSH2_FX_CONNECTION_LOST...
272     d                 c                   7
273     d LIBSSH2_FX_OP_UNSUPPORTED...
274     d                 c                   8
275     d LIBSSH2_FX_INVALID_HANDLE...
276     d                 c                   9
277     d LIBSSH2_FX_NO_SUCH_PATH...
278     d                 c                   10
279     d LIBSSH2_FX_FILE_ALREADY_EXISTS...
280     d                 c                   11
281     d LIBSSH2_FX_WRITE_PROTECT...
282     d                 c                   12
283     d LIBSSH2_FX_NO_MEDIA...
284     d                 c                   13
285     d LIBSSH2_FX_NO_SPACE_ON_FILESYSTEM...
286     d                 c                   14
287     d LIBSSH2_FX_QUOTA_EXCEEDED...
288     d                 c                   15
289     d LIBSSH2_FX_UNKNOWN_PRINCIPAL...
290     d                 c                   16
291     d LIBSSH2_FX_LOCK_CONFLICT...
292     d                 c                   17
293     d LIBSSH2_FX_DIR_NOT_EMPTY...
294     d                 c                   18
295     d LIBSSH2_FX_NOT_A_DIRECTORY...
296     d                 c                   19
297     d LIBSSH2_FX_INVALID_FILENAME...
298     d                 c                   20
299     d LIBSSH2_FX_LINK_LOOP...
300     d                 c                   21
301
302      * Returned by any function that would block during a read/write operation.
303     d LIBSSH2SFTP_EAGAIN...
304     d                 c                   -37
305
306      * SFTP API.
307     d libssh2_sftp_init...
308     d                 pr              *   extproc('libssh2_sftp_init')         LIBSSH2_SFTP *
309     d  session                        *   value                                LIBSSH2_SESSION *
310
311     d libssh2_sftp_shutdown...
312     d                 pr                  extproc('libssh2_sftp_shutdown')
313     d                                     like(libssh2_Cint)
314     d  sftp                           *   value                                LIBSSH2_SFTP *
315
316     d libssh2_sftp_last_error...
317     d                 pr                  extproc('libssh2_sftp_last_error')
318     d                                     like(libssh2_Culong)
319     d  sftp                           *   value                                LIBSSH2_SFTP *
320
321     d libssh2_sftp_get_channel...
322     d                 pr              *   extproc('libssh2_sftp_get_channel')  LIBSSH2_CHANNEL *
323     d  sftp                           *   value                                LIBSSH2_SFTP *
324
325      * File / Directory Ops.
326     d libssh2_sftp_open_ex...
327     d                 pr              *   extproc('libssh2_sftp_open_ex')      LIBSSH2_SFTP_HANDLE*
328     d  sftp                           *   value                                LIBSSH2_SFTP *
329     d  filename                       *   value options(*string)               const char *
330     d  filename_len                       value like(libssh2_Cuint)
331     d  flags                              value like(libssh2_Culong)
332     d  mode                               value like(libssh2_Clong)
333     d  open_type                          value like(libssh2_Cint)
334
335      * C macro implementation.
336     d libssh2_sftp_open...
337     d                 pr              *   extproc('libssh2_sftp_open')         LIBSSH2_SFTP_HANDLE
338     d                                                                          *
339     d  sftp                           *   value                                LIBSSH2_SFTP *
340     d  filename                       *   value options(*string)               const char *
341     d  flags                              value like(libssh2_Culong)
342     d  mode                               value like(libssh2_Clong)
343
344      * C macro libssh2_sftp_opendir implementation.
345      * Renamed to avoid upper/lower case name clash.
346     d libssh2_sftp_open_dir...
347     d                 pr              *   extproc('libssh2_sftp_opendir')      LIBSSH2_SFTP_HANDLE
348     d                                                                          *
349     d  sftp                           *   value                                LIBSSH2_SFTP *
350     d  path                           *   value options(*string)               const char *
351
352     d libssh2_sftp_read...
353     d                 pr                  extproc('libssh2_sftp_read')
354     d                                     like(libssh2_Cssize_t)
355     d  handle                         *   value                                LIBSSH2_SFTP_HANDLE*
356     d  buffer                         *   value options(*string)               char *
357     d  buffer_maxlen                      value like(libssh2_Csize_t)
358
359     d libssh2_sftp_readdir_ex...
360     d                 pr                  extproc('libssh2_sftp_readdir_ex')
361     d                                     like(libssh2_Cint)
362     d  handle                         *   value                                LIBSSH2_SFTP_HANDLE*
363     d  buffer                         *   value                                char *
364     d  buffer_maxlen                      value like(libssh2_Csize_t)
365     d  longentry                      *   value                                char *
366     d  longentry_maxlen...
367     d                                     value like(libssh2_Csize_t)
368     d  attrs                          *   value                                LIBSSH2_SFTP_...
369     d                                                                          ATTRIBUTES *
370
371      * C macro implementation.
372     d libssh2_sftp_readdir...
373     d                 pr                  extproc('libssh2_sftp_readdir')
374     d                                     like(libssh2_Cint)
375     d  handle                         *   value                                LIBSSH2_SFTP_HANDLE*
376     d  buffer                         *   value                                char *
377     d  buffer_maxlen                      value like(libssh2_Csize_t)
378     d  attrs                          *   value                                LIBSSH2_SFTP_...
379     d                                                                          ATTRIBUTES *
380
381     d libssh2_sftp_write...
382     d                 pr                  extproc('libssh2_sftp_write')
383     d                                     like(libssh2_Cssize_t)
384     d  handle                         *   value                                LIBSSH2_SFTP_HANDLE*
385     d  buffer                         *   value options(*string)               const char *
386     d  count                              value like(libssh2_Csize_t)
387
388     d libssh2_sftp_fsync...
389     d                 pr                  extproc('libssh2_sftp_fsync')
390     d                                     like(libssh2_Cint)
391     d  handle                         *   value                                LIBSSH2_SFTP_HANDLE*
392
393     d libssh2_sftp_close_handle...
394     d                 pr                  extproc('libssh2_sftp_close_handle')
395     d                                     like(libssh2_Cint)
396     d  handle                         *   value                                LIBSSH2_SFTP_HANDLE*
397
398      * C macro implementation.
399     d libssh2_sftp_close...
400     d                 pr                  extproc('libssh2_sftp_close_handle')
401     d                                     like(libssh2_Cint)
402     d  handle                         *   value                                LIBSSH2_SFTP_HANDLE*
403
404      * C macro implementation.
405     d libssh2_sftp_closedir...
406     d                 pr                  extproc('libssh2_sftp_close_handle')
407     d                                     like(libssh2_Cint)
408     d  handle                         *   value                                LIBSSH2_SFTP_HANDLE*
409
410     d libssh2_sftp_seek...
411     d                 pr                  extproc('libssh2_sftp_seek')
412     d  handle                         *   value                                LIBSSH2_SFTP_HANDLE*
413     d  offset                             value like(libssh2_Csize_t)
414
415     d libssh2_sftp_seek64...
416     d                 pr                  extproc('libssh2_sftp_seek64')
417     d  handle                         *   value                                LIBSSH2_SFTP_HANDLE*
418     d  offset                             value like(libssh2_uint64_t)
419
420      * C macro implementation.
421     d libssh2_sftp_rewind...
422     d                 pr                  extproc('libssh2_sftp_rewind')
423     d  handle                         *   value                                LIBSSH2_SFTP_HANDLE*
424
425     d libssh2_sftp_tell...
426     d                 pr                  extproc('libssh2_sftp_tell')
427     d                                     like(libssh2_Csize_t)
428     d  handle                         *   value                                LIBSSH2_SFTP_HANDLE*
429
430     d libssh2_sftp_tell64...
431     d                 pr                  extproc('libssh2_sftp_tell64')
432     d                                     like(libssh2_uint64_t)
433     d  handle                         *   value                                LIBSSH2_SFTP_HANDLE*
434
435     d libssh2_sftp_fstat_ex...
436     d                 pr                  extproc('libssh2_sftp_fstat_ex')
437     d                                     like(libssh2_Cint)
438     d  handle                         *   value                                LIBSSH2_SFTP_HANDLE*
439     d  attrs                          *   value                                LIBSSH2_SFTP_...
440     d                                                                          ATTRIBUTES *
441     d  setstat                            value like(libssh2_Cint)
442
443      * C macro implementation.
444     d libssh2_sftp_fstat...
445     d                 pr                  extproc('libssh2_sftp_fstat')
446     d                                     like(libssh2_Cint)
447     d  handle                         *   value                                LIBSSH2_SFTP_HANDLE*
448     d  attrs                          *   value                                LIBSSH2_SFTP_...
449     d                                                                          ATTRIBUTES *
450
451      * C macro implementation.
452     d libssh2_sftp_fsetstat...
453     d                 pr                  extproc('libssh2_sftp_fsetstat')
454     d                                     like(libssh2_Cint)
455     d  handle                         *   value                                LIBSSH2_SFTP_HANDLE*
456     d  attrs                          *   value                                LIBSSH2_SFTP_...
457     d                                                                          ATTRIBUTES *
458
459      * Miscellaneous Ops.
460     d libssh2_sftp_rename_ex...
461     d                 pr                  extproc('libssh2_sftp_rename_ex')
462     d                                     like(libssh2_Cint)
463     d  sftp                           *   value                                LIBSSH2_SFTP *
464     d  source_filename...
465     d                                 *   value options(*string)               const char *
466     d  source_filename_len...
467     d                                     value like(libssh2_Cuint)
468     d  dest_filename                  *   value options(*string)               const char *
469     d  dest_filename_len...
470     d                                     value like(libssh2_Cuint)
471     d  flags                              value like(libssh2_Clong)
472
473      * C macro implementation.
474     d libssh2_sftp_rename...
475     d                 pr                  extproc('libssh2_sftp_rename')
476     d                                     like(libssh2_Cint)
477     d  sftp                           *   value                                LIBSSH2_SFTP *
478     d  source_filename...
479     d                                 *   value options(*string)               const char *
480     d  dest_filename                  *   value options(*string)               const char *
481
482     d libssh2_sftp_unlink_ex...
483     d                 pr                  extproc('libssh2_sftp_unlink_ex')
484     d                                     like(libssh2_Cint)
485     d  sftp                           *   value                                LIBSSH2_SFTP *
486     d  filename                       *   value options(*string)               const char *
487     d  filename_len                       value like(libssh2_Cuint)
488
489      * C macro implementation.
490     d libssh2_sftp_unlink...
491     d                 pr                  extproc('libssh2_sftp_unlink')
492     d                                     like(libssh2_Cint)
493     d  sftp                           *   value                                LIBSSH2_SFTP *
494     d  filename                       *   value options(*string)               const char *
495
496     d libssh2_sftp_fstatvfs...
497     d                 pr                  extproc('libssh2_sftp_fstatvfs')
498     d                                     like(libssh2_Cint)
499     d  handle                         *   value                                LIBSSH2_SFTP_HANDLE*
500     d  st                             *   value                                LIBSSH2_SFTP_STATVFS
501     d                                                                          *
502
503     d libssh2_sftp_statvfs...
504     d                 pr                  extproc('libssh2_sftp_statvfs')
505     d                                     like(libssh2_Cint)
506     d  sftp                           *   value                                LIBSSH2_SFTP *
507     d  path                           *   value options(*string)               const char *
508     d  path_len                           value like(libssh2_Csize_t)
509     d  st                             *   value                                LIBSSH2_SFTP_STATVFS
510     d                                                                          *
511
512     d libssh2_sftp_mkdir_ex...
513     d                 pr                  extproc('libssh2_sftp_mkdir_ex')
514     d                                     like(libssh2_Cint)
515     d  sftp                           *   value                                LIBSSH2_SFTP *
516     d  path                           *   value options(*string)               const char *
517     d  path_len                           value like(libssh2_Cuint)
518     d  mode                               value like(libssh2_Clong)
519
520      * C macro implementation.
521     d libssh2_sftp_mkdir...
522     d                 pr                  extproc('libssh2_sftp_mkdir')
523     d                                     like(libssh2_Cint)
524     d  sftp                           *   value                                LIBSSH2_SFTP *
525     d  path                           *   value options(*string)               const char *
526     d  mode                               value like(libssh2_Clong)
527
528     d libssh2_sftp_rmdir_ex...
529     d                 pr                  extproc('libssh2_sftp_rmdir_ex')
530     d                                     like(libssh2_Cint)
531     d  sftp                           *   value                                LIBSSH2_SFTP *
532     d  path                           *   value options(*string)               const char *
533     d  path_len                           value like(libssh2_Cuint)
534
535      * C macro implementation.
536     d libssh2_sftp_rmdir...
537     d                 pr                  extproc('libssh2_sftp_rmdir')
538     d                                     like(libssh2_Cint)
539     d  sftp                           *   value                                LIBSSH2_SFTP *
540     d  path                           *   value options(*string)               const char *
541
542     d libssh2_sftp_stat_ex...
543     d                 pr                  extproc('libssh2_sftp_stat_ex')
544     d                                     like(libssh2_Cint)
545     d  sftp                           *   value                                LIBSSH2_SFTP *
546     d  path                           *   value options(*string)               const char *
547     d  path_len                           value like(libssh2_Cuint)
548     d  stat_type                          value like(libssh2_Cint)
549     d  attrs                          *   value                                LIBSSH2_SFTP_...
550     d                                                                          ATTRIBUTES *
551
552      * C macro libssh2_sftp_stat implementation.
553      * Renamed to avoid upper/lower case name clash.
554     d libssh2_sftp_get_stat...
555     d                 pr                  extproc('libssh2_sftp_stat')
556     d                                     like(libssh2_Cint)
557     d  sftp                           *   value                                LIBSSH2_SFTP *
558     d  path                           *   value options(*string)               const char *
559     d  attrs                          *   value                                LIBSSH2_SFTP_...
560     d                                                                          ATTRIBUTES *
561
562      * C macro libssh2_sftp_lstat implementation.
563      * Renamed to avoid upper/lower case name clash.
564     d libssh2_sftp_get_lstat...
565     d                 pr                  extproc('libssh2_sftp_lstat')
566     d                                     like(libssh2_Cint)
567     d  sftp                           *   value                                LIBSSH2_SFTP *
568     d  path                           *   value options(*string)               const char *
569     d  attrs                          *   value                                LIBSSH2_SFTP_...
570     d                                                                          ATTRIBUTES *
571
572      * C macro libssh2_sftp_setstat implementation.
573      * Renamed to avoid upper/lower case name clash.
574     d libssh2_sftp_set_stat...
575     d                 pr                  extproc('libssh2_sftp_setstat')
576     d                                     like(libssh2_Cint)
577     d  sftp                           *   value                                LIBSSH2_SFTP *
578     d  path                           *   value options(*string)               const char *
579     d  attrs                          *   value                                LIBSSH2_SFTP_...
580     d                                                                          ATTRIBUTES *
581
582     d libssh2_sftp_symlink_ex...
583     d                 pr                  extproc('libssh2_sftp_symlink_ex')
584     d                                     like(libssh2_Cint)
585     d  sftp                           *   value                                LIBSSH2_SFTP *
586     d  path                           *   value options(*string)               const char *
587     d  path_len                           value like(libssh2_Cuint)
588     d  target                         *   value options(*string)               char *
589     d  target_len                         value like(libssh2_Cuint)
590     d  link_type                          value like(libssh2_Cint)
591
592      * C macro libssh2_sftp_symlink implementation.
593      * Renamed to avoid upper/lower case name clash.
594     d libssh2_sftp_sym_link...
595     d                 pr                  extproc('libssh2_sftp_symlink')
596     d                                     like(libssh2_Cint)
597     d  sftp                           *   value                                LIBSSH2_SFTP *
598     d  orig                           *   value options(*string)               const char *
599     d  linkpath                       *   value options(*string)               char *
600
601      * C macro libssh2_sftp_readlink implementation.
602      * Renamed to avoid upper/lower case name clash.
603     d libssh2_sftp_read_link...
604     d                 pr                  extproc('libssh2_sftp_readlink')
605     d                                     like(libssh2_Cint)
606     d  sftp                           *   value                                LIBSSH2_SFTP *
607     d  path                           *   value options(*string)               const char *
608     d  target                         *   value                                char *
609     d  maxlen                             value like(libssh2_Cuint)
610
611      * C macro libssh2_sftp_realpath implementation.
612      * Renamed to avoid upper/lower case name clash.
613     d libssh2_sftp_real_path...
614     d                 pr                  extproc('libssh2_sftp_realpath')
615     d                                     like(libssh2_Cint)
616     d  sftp                           *   value                                LIBSSH2_SFTP *
617     d  path                           *   value options(*string)               const char *
618     d  target                         *   value                                char *
619     d  maxlen                             value like(libssh2_Cuint)
620
621      /endif                                                                    LIBSSH2_SFTP_H_
622