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