libssh2-1.10.0/0000755000175000017500000000000014112770040010134 500000000000000libssh2-1.10.0/depcomp0000755000175000017500000005602014047767356011463 00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2018-03-07.03; # UTC # Copyright (C) 1999-2020 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz digits=0123456789 alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Avoid interferences from the environment. gccflag= dashmflag= # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The second -e expression handles DOS-style file names with drive # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool generates 2 separate objects for the 2 libraries. These # two compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E \ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: libssh2-1.10.0/docs/0000755000175000017500000000000014112770040011064 500000000000000libssh2-1.10.0/docs/libssh2_session_last_error.30000644000175000017500000000210012615665557016454 00000000000000.TH libssh2_session_last_error 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual" .SH NAME libssh2_session_last_error - get the most recent error .SH SYNOPSIS #include int libssh2_session_last_error(LIBSSH2_SESSION *session, char **errmsg, int *errmsg_len, int want_buf); .SH DESCRIPTION \fIsession\fP - Session instance as returned by .BR libssh2_session_init_ex(3) \fIerrmsg\fP - If not NULL, is populated by reference with the human readable form of the most recent error message. \fIerrmsg_len\fP - If not NULL, is populated by reference with the length of errmsg. (The string is NUL-terminated, so the length is only useful as an optimization, to avoid calling strlen.) \fIwant_buf\fP - If set to a non-zero value, "ownership" of the errmsg buffer will be given to the calling scope. If necessary, the errmsg buffer will be duplicated. Determine the most recent error condition and its cause. .SH RETURN VALUE Numeric error code corresponding to the the Error Code constants. .SH SEE ALSO .BR libssh2_session_last_errno(3) .BR libssh2_session_set_last_error(3) libssh2-1.10.0/docs/libssh2_scp_recv.30000644000175000017500000000175612600044410014326 00000000000000.TH libssh2_scp_recv 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual" .SH NAME libssh2_scp_recv - request a remote file via SCP .SH SYNOPSIS #include LIBSSH2_CHANNEL * libssh2_scp_recv(LIBSSH2_SESSION *session, const char *path, struct stat *sb); .SH DESCRIPTION This function is \fBDEPRECATED\fP. Use \fIlibssh2_scp_recv2(3)\fP instead! \fIsession\fP - Session instance as returned by .BR libssh2_session_init_ex(3) \fIpath\fP - Full path and filename of file to transfer. That is the remote file name. \fIsb\fP - Populated with remote file's size, mode, mtime, and atime Request a file from the remote host via SCP. .SH RETURN VALUE Pointer to a newly allocated LIBSSH2_CHANNEL instance, or NULL on errors. .SH ERRORS \fILIBSSH2_ERROR_ALLOC\fP - An internal memory allocation call failed. \fILIBSSH2_ERROR_SCP_PROTOCOL\fP - \fILIBSSH2_ERROR_EAGAIN\fP - Marked for non-blocking I/O but the call would block. .SH SEE ALSO .BR libssh2_session_init_ex(3) .BR libssh2_channel_open_ex(3) libssh2-1.10.0/docs/libssh2_sftp_read.30000644000175000017500000000273111633133514014474 00000000000000.TH libssh2_sftp_read 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual" .SH NAME libssh2_sftp_read - read data from an SFTP handle .SH SYNOPSIS #include #include ssize_t libssh2_sftp_read(LIBSSH2_SFTP_HANDLE *handle, char *buffer, size_t buffer_maxlen); .SH DESCRIPTION \fIhandle\fP is the SFTP File Handle as returned by .BR libssh2_sftp_open_ex(3) \fIbuffer\fP is a pointer to a pre-allocated buffer of at least \fIbuffer_maxlen\fP bytes to read data into. Reads a block of data from an LIBSSH2_SFTP_HANDLE. This method is modelled after the POSIX .BR read(2) function and uses the same calling semantics. .BR libssh2_sftp_read(3) will attempt to read as much as possible however it may not fill all of buffer if the file pointer reaches the end or if further reads would cause the socket to block. .SH RETURN VALUE Number of bytes actually populated into buffer, or negative on failure. It returns LIBSSH2_ERROR_EAGAIN when it would otherwise block. While LIBSSH2_ERROR_EAGAIN is a negative number, it isn't really a failure per se. .SH ERRORS \fILIBSSH2_ERROR_ALLOC\fP - An internal memory allocation call failed. \fILIBSSH2_ERROR_SOCKET_SEND\fP - Unable to send data on socket. \fILIBSSH2_ERROR_SOCKET_TIMEOUT\fP - \fILIBSSH2_ERROR_SFTP_PROTOCOL\fP - An invalid SFTP protocol response was received on the socket, or an SFTP operation caused an errorcode to be returned by the server. .SH SEE ALSO .BR libssh2_sftp_open_ex(3) .BR libssh2_sftp_read(3) libssh2-1.10.0/docs/libssh2_userauth_publickey.30000644000175000017500000000164011633133514016432 00000000000000.TH libssh2_userauth_publickey 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual" .SH NAME libssh2_userauth_publickey - authenticate using a callback function .SH SYNOPSIS #include .nf int libssh2_userauth_publickey(LIBSSH2_SESSION *session, const char *user, const unsigned char *pubkeydata, size_t pubkeydata_len, sign_callback, void **abstract); .SH DESCRIPTION Authenticate with the \fIsign_callback\fP callback that matches the prototype below .SH CALLBACK .nf int name(LIBSSH2_SESSION *session, unsigned char **sig, size_t *sig_len, const unsigned char *data, size_t data_len, void **abstract); .fi This function gets called... .SH RETURN VALUE Return 0 on success or negative on failure. .SH SEE ALSO .BR libssh2_userauth_publickey_fromfile_ex(3) libssh2-1.10.0/docs/libssh2_userauth_password_ex.30000644000175000017500000000420411633133514017000 00000000000000.TH libssh2_userauth_password_ex 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual" .SH NAME libssh2_userauth_password_ex - authenticate a session with username and password .SH SYNOPSIS #include .nf int libssh2_userauth_password_ex(LIBSSH2_SESSION *session, const char *username, unsigned int username_len, const char *password, unsigned int password_len, LIBSSH2_PASSWD_CHANGEREQ_FUNC((*passwd_change_cb))); #define libssh2_userauth_password(session, username, password) \\ libssh2_userauth_password_ex((session), (username), \\ strlen(username), \\ (password), strlen(password), NULL) .SH DESCRIPTION \fIsession\fP - Session instance as returned by .BR libssh2_session_init_ex(3) \fIusername\fP - Name of user to attempt plain password authentication for. \fIusername_len\fP - Length of username parameter. \fIpassword\fP - Password to use for authenticating username. \fIpassword_len\fP - Length of password parameter. \fIpasswd_change_cb\fP - If the host accepts authentication but requests that the password be changed, this callback will be issued. If no callback is defined, but server required password change, authentication will fail. Attempt basic password authentication. Note that many SSH servers which appear to support ordinary password authentication actually have it disabled and use Keyboard Interactive authentication (routed via PAM or another authentication backed) instead. .SH RETURN VALUE Return 0 on success or negative on failure. It returns LIBSSH2_ERROR_EAGAIN when it would otherwise block. While LIBSSH2_ERROR_EAGAIN is a negative number, it isn't really a failure per se. .SH ERRORS Some of the errors this function may return include: \fILIBSSH2_ERROR_ALLOC\fP - An internal memory allocation call failed. \fILIBSSH2_ERROR_SOCKET_SEND\fP - Unable to send data on socket. \fILIBSSH2_ERROR_PASSWORD_EXPIRED\fP - \fLIBSSH2_ERROR_AUTHENTICATION_FAILED\fP - failed, invalid username/password or public/private key. .SH SEE ALSO .BR libssh2_session_init_ex(3) libssh2-1.10.0/docs/libssh2_session_methods.30000644000175000017500000000174111633133514015733 00000000000000.TH libssh2_session_methods 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual" .SH NAME libssh2_session_methods - return the currently active algorithms .SH SYNOPSIS #include const char * libssh2_session_methods(LIBSSH2_SESSION *session, int method_type); .SH DESCRIPTION \fIsession\fP - Session instance as returned by .BR libssh2_session_init_ex(3) \fImethod_type\fP - one of the method type constants: LIBSSH2_METHOD_KEX, LIBSSH2_METHOD_HOSTKEY, LIBSSH2_METHOD_CRYPT_CS, LIBSSH2_METHOD_CRYPT_SC, LIBSSH2_METHOD_MAC_CS, LIBSSH2_METHOD_MAC_SC, LIBSSH2_METHOD_COMP_CS, LIBSSH2_METHOD_COMP_SC, LIBSSH2_METHOD_LANG_CS, LIBSSH2_METHOD_LANG_SC. Returns the actual method negotiated for a particular transport parameter. .SH RETURN VALUE Negotiated method or NULL if the session has not yet been started. .SH ERRORS \fILIBSSH2_ERROR_INVAL\fP - The requested method type was invalid. \fILIBSSH2_ERROR_METHOD_NONE\fP - no method has been set .SH SEE ALSO .BR libssh2_session_init_ex(3) libssh2-1.10.0/docs/libssh2_scp_send.30000644000175000017500000000107011633133514014316 00000000000000.TH libssh2_scp_send 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual" .SH NAME libssh2_scp_send - convenience macro for \fIlibssh2_scp_send_ex(3)\fP calls .SH SYNOPSIS #include LIBSSH2_CHANNEL * libssh2_scp_send(LIBSSH2_SESSION *session, const char *path, int mode, size_t size); .SH DESCRIPTION This is a macro defined in a public libssh2 header file that is using the underlying function \fIlibssh2_scp_send_ex(3)\fP. .SH RETURN VALUE See \fIlibssh2_scp_send_ex(3)\fP .SH ERRORS See \fIlibssh2_scp_send_ex(3)\fP .SH SEE ALSO .BR libssh2_scp_send_ex(3) libssh2-1.10.0/docs/libssh2_sftp_rewind.30000644000175000017500000000101512400451466015045 00000000000000.TH libssh2_sftp_rewind 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual" .SH NAME libssh2_sftp_rewind - convenience macro for \fIlibssh2_sftp_seek64(3)\fP calls .SH SYNOPSIS #include int libssh2_sftp_rewind(LIBSSH2_SFTP_HANDLE *handle); .SH DESCRIPTION This is a macro defined in a public libssh2 header file that is using the underlying function \fIlibssh2_sftp_seek64(3)\fP. .SH RETURN VALUE See \fIlibssh2_sftp_seek64(3)\fP .SH ERRORS See \fIlibssh2_sftp_seek64(3)\fP .SH SEE ALSO .BR libssh2_sftp_seek64(3) libssh2-1.10.0/docs/libssh2_sftp_seek64.30000644000175000017500000000203611633133514014660 00000000000000.TH libssh2_sftp_seek64 3 "22 Dec 2008" "libssh2 1.0" "libssh2 manual" .SH NAME libssh2_sftp_seek64 - set the read/write position within a file .SH SYNOPSIS .nf #include #include void libssh2_sftp_seek64(LIBSSH2_SFTP_HANDLE *handle, libssh2_uint64_t offset); .SH DESCRIPTION \fIhandle\fP - SFTP File Handle as returned by .BR libssh2_sftp_open_ex(3) \fIoffset\fP - Number of bytes from the beginning of file to seek to. Move the file handle's internal pointer to an arbitrary location. libssh2 implements file pointers as a localized concept to make file access appear more POSIX like. No packets are exchanged with the server during a seek operation. The localized file pointer is simply used as a convenience offset during read/write operations. You MUST NOT seek during writing or reading a file with SFTP, as the internals use outstanding packets and changing the "file position" during transit will results in badness. .SH AVAILABILITY Added in 1.0 .SH SEE ALSO .BR libssh2_sftp_open_ex(3) libssh2-1.10.0/docs/libssh2_scp_send64.30000644000175000017500000000277411633133514014504 00000000000000.TH libssh2_scp_send64 3 "17 Apr 2010" "libssh2 1.2.6" "libssh2 manual" .SH NAME libssh2_scp_send64 - Send a file via SCP .SH SYNOPSIS .nf #include LIBSSH2_CHANNEL * libssh2_scp_send64(LIBSSH2_SESSION *session, const char *path, int mode, libssh2_uint64_t size, time_t mtime, time_t atime); .SH DESCRIPTION \fIsession\fP - Session instance as returned by .BR libssh2_session_init_ex(3) \fIpath\fP - Full path and filename of file to transfer to. That is the remote file name. \fImode\fP - File access mode to create file with \fIsize\fP - Size of file being transmitted (Must be known ahead of time). Note that this needs to be passed on as variable type libssh2_uint64_t. This type is 64 bit on modern operating systems and compilers. \fImtime\fP - mtime to assign to file being created \fIatime\fP - atime to assign to file being created (Set this and mtime to zero to instruct remote host to use current time). Send a file to the remote host via SCP. .SH RETURN VALUE Pointer to a newly allocated LIBSSH2_CHANNEL instance, or NULL on errors. .SH ERRORS \fILIBSSH2_ERROR_ALLOC\fP - An internal memory allocation call failed. \fILIBSSH2_ERROR_SOCKET_SEND\fP - Unable to send data on socket. \fILIBSSH2_ERROR_SCP_PROTOCOL\fP - \fILIBSSH2_ERROR_EAGAIN\fP - Marked for non-blocking I/O but the call would block. .SH AVAILABILITY This function was added in libssh2 1.2.6 and is meant to replace the former \fIlibssh2_scp_send_ex(3)\fP function. .SH SEE ALSO .BR libssh2_channel_open_ex(3) libssh2-1.10.0/docs/libssh2_sftp_setstat.30000644000175000017500000000107511633133514015250 00000000000000.TH libssh2_sftp_setstat 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual" .SH NAME libssh2_sftp_setstat - convenience macro for \fIlibssh2_sftp_stat_ex(3)\fP calls .SH SYNOPSIS #include int libssh2_sftp_setstat(LIBSSH2_SFTP *sftp, const char *path, LIBSSH2_SFTP_ATTRIBUTES *attr); .SH DESCRIPTION This is a macro defined in a public libssh2 header file that is using the underlying function \fIlibssh2_sftp_stat_ex(3)\fP. .SH RETURN VALUE See \fIlibssh2_sftp_stat_ex(3)\fP .SH ERRORS See \fIlibssh2_sftp_stat_ex(3)\fP .SH SEE ALSO .BR libssh2_sftp_stat_ex(3) libssh2-1.10.0/docs/libssh2_publickey_init.30000644000175000017500000000027311633133514015536 00000000000000.TH libssh2_publickey_init 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual" .SH NAME libssh2_publickey_init - TODO .SH SYNOPSIS .SH DESCRIPTION .SH RETURN VALUE .SH ERRORS .SH SEE ALSO libssh2-1.10.0/docs/libssh2_sftp_rename_ex.30000644000175000017500000000375512400451466015535 00000000000000.TH libssh2_sftp_rename_ex 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual" .SH NAME libssh2_sftp_rename_ex - rename an SFTP file .SH SYNOPSIS #include #include int libssh2_sftp_rename_ex(LIBSSH2_SFTP *sftp, const char *source_filename, unsigned int source_filename_len, const char *dest_filename, unsigned int dest_filename_len, long flags); int libssh2_sftp_rename_ex(LIBSSH2_SFTP *sftp, const char *source_filename, const char *dest_filename); .SH DESCRIPTION \fIsftp\fP - SFTP instance as returned by .BR libssh2_sftp_init(3) \fIsourcefile\fP - Path and name of the existing filesystem entry \fIsourcefile_len\fP - Length of the path and name of the existing filesystem entry \fIdestfile\fP - Path and name of the target filesystem entry \fIdestfile_len\fP - Length of the path and name of the target filesystem entry \fIflags\fP - Bitmask flags made up of LIBSSH2_SFTP_RENAME_* constants. Rename a filesystem object on the remote filesystem. The semantics of this command typically include the ability to move a filesystem object between folders and/or filesystem mounts. If the LIBSSH2_SFTP_RENAME_OVERWRITE flag is not set and the destfile entry already exists, the operation will fail. Use of the other two flags indicate a preference (but not a requirement) for the remote end to perform an atomic rename operation and/or using native system calls when possible. .SH RETURN VALUE Return 0 on success or negative on failure. It returns LIBSSH2_ERROR_EAGAIN when it would otherwise block. While LIBSSH2_ERROR_EAGAIN is a negative number, it isn't really a failure per se. .SH ERRORS \fILIBSSH2_ERROR_ALLOC\fP - An internal memory allocation call failed. \fILIBSSH2_ERROR_SOCKET_SEND\fP - Unable to send data on socket. \fILIBSSH2_ERROR_SOCKET_TIMEOUT\fP - \fILIBSSH2_ERROR_SFTP_PROTOCOL\fP - An invalid SFTP protocol response was received on the socket, or an SFTP operation caused an errorcode to be returned by the server. .SH SEE ALSO .BR libssh2_sftp_init(3) libssh2-1.10.0/docs/libssh2_session_handshake.30000644000175000017500000000243511633133514016217 00000000000000.TH libssh2_session_handshake 3 "7 Oct 2010" "libssh2 1.2.8" "libssh2 manual" .SH NAME libssh2_session_handshake - perform the SSH handshake .SH SYNOPSIS #include int libssh2_session_handshake(LIBSSH2_SESSION *session, libssh2_socket_t socket); .SH DESCRIPTION \fIsession\fP - Session instance as returned by .BR libssh2_session_init_ex(3) \fIsocket\fP - Connected socket descriptor. Typically a TCP connection though the protocol allows for any reliable transport and the library will attempt to use any berkeley socket. Begin transport layer protocol negotiation with the connected host. .SH RETURN VALUE Returns 0 on success, negative on failure. .SH ERRORS \fILIBSSH2_ERROR_SOCKET_NONE\fP - The socket is invalid. \fILIBSSH2_ERROR_BANNER_SEND\fP - Unable to send banner to remote host. \fILIBSSH2_ERROR_KEX_FAILURE\fP - >Encryption key exchange with the remote host failed. \fILIBSSH2_ERROR_SOCKET_SEND\fP - Unable to send data on socket. \fILIBSSH2_ERROR_SOCKET_DISCONNECT\fP - The socket was disconnected. \fILIBSSH2_ERROR_PROTO\fP - An invalid SSH protocol response was received on the socket. \fILIBSSH2_ERROR_EAGAIN\fP - Marked for non-blocking I/O but the call would block. .SH AVAILABILITY Added in 1.2.8 .SH SEE ALSO .BR libssh2_session_free(3) .BR libssh2_session_init_ex(3) libssh2-1.10.0/docs/libssh2_channel_write_ex.30000644000175000017500000000344211633133514016043 00000000000000.TH libssh2_channel_write_ex 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual" .SH NAME libssh2_channel_write_ex - write data to a channel stream blocking .SH SYNOPSIS .nf #include ssize_t libssh2_channel_write_ex(LIBSSH2_CHANNEL *channel, int stream_id, char *buf, size_t buflen); .SH DESCRIPTION Write data to a channel stream. All channel streams have one standard I/O substream (stream_id == 0), and may have up to 2^32 extended data streams as identified by the selected \fIstream_id\fP. The SSH2 protocol currently defines a stream ID of 1 to be the stderr substream. \fIchannel\fP - active channel stream to write to. \fIstream_id\fP - substream ID number (e.g. 0 or SSH_EXTENDED_DATA_STDERR) \fIbuf\fP - pointer to buffer to write \fIbuflen\fP - size of the data to write \fIlibssh2_channel_write(3)\fP and \fIlibssh2_channel_write_stderr(3)\fP are convenience macros for this function. \fIlibssh2_channel_write_ex(3)\fP will use as much as possible of the buffer and put it into a single SSH protocol packet. This means that to get maximum performance when sending larger files, you should try to always pass in at least 32K of data to this function. .SH RETURN VALUE Actual number of bytes written or negative on failure. LIBSSH2_ERROR_EAGAIN when it would otherwise block. While LIBSSH2_ERROR_EAGAIN is a negative number, it isn't really a failure per se. .SH ERRORS \fILIBSSH2_ERROR_ALLOC\fP - An internal memory allocation call failed. \fILIBSSH2_ERROR_SOCKET_SEND\fP - Unable to send data on socket. \fILIBSSH2_ERROR_CHANNEL_CLOSED\fP - The channel has been closed. \fILIBSSH2_ERROR_CHANNEL_EOF_SENT\fP - The channel has been requested to be closed. .SH SEE ALSO .BR libssh2_channel_open_ex(3) .BR libssh2_channel_read_ex(3) libssh2-1.10.0/docs/libssh2_publickey_list_free.30000644000175000017500000000030511633133514016543 00000000000000.TH libssh2_publickey_list_free 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual" .SH NAME libssh2_publickey_list_free - TODO .SH SYNOPSIS .SH DESCRIPTION .SH RETURN VALUE .SH ERRORS .SH SEE ALSO libssh2-1.10.0/docs/libssh2_knownhost_free.30000644000175000017500000000076011315200650015551 00000000000000.\" .\" Copyright (c) 2009 by Daniel Stenberg .\" .TH libssh2_knownhost_free 3 "28 May 2009" "libssh2 1.2" "libssh2 manual" .SH NAME libssh2_knownhost_free - free a collection of known hosts .SH SYNOPSIS #include void libssh2_knownhost_free(LIBSSH2_KNOWNHOSTS *hosts); .SH DESCRIPTION Free a collection of known hosts. .SH RETURN VALUE None. .SH AVAILABILITY Added in libssh2 1.2 .SH SEE ALSO .BR libssh2_knownhost_init(3) .BR libssh2_knownhost_add(3) .BR libssh2_knownhost_check(3) libssh2-1.10.0/docs/BINDINGS0000644000175000017500000000141512663431074012137 00000000000000 Creative people have written bindings or interfaces for various environments and programming languages. Using one of these bindings allows you to take advantage of libssh2 directly from within your favourite language. The bindings listed below are not part of the libssh2 distribution archives, but must be downloaded and installed separately. Cocoa/Objective-C https://github.com/karelia/libssh2_sftp-Cocoa-wrapper Haskell FFI bindings - https://hackage.haskell.org/package/libssh2 Perl Net::SSH2 - https://metacpan.org/pod/Net::SSH2 PHP ssh2 - https://pecl.php.net/package/ssh2 Python pylibssh2 - https://pypi.python.org/pypi/pylibssh2 Python-ctypes PySsh2 - https://github.com/gellule/PySsh2 Ruby libssh2-ruby - https://github.com/mitchellh/libssh2-ruby libssh2-1.10.0/docs/libssh2_sftp_init.30000644000175000017500000000251511633133514014524 00000000000000.TH libssh2_sftp_init 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual" .SH NAME libssh2_sftp_init - open SFTP channel for the given SSH session. .SH SYNOPSIS #include #include LIBSSH2_SFTP * libssh2_sftp_init(LIBSSH2_SESSION *session); .SH DESCRIPTION \fIsession\fP - Session instance as returned by .BR libssh2_session_init_ex(3) Open a channel and initialize the SFTP subsystem. Although the SFTP subsystem operates over the same type of channel as those exported by the Channel API, the protocol itself implements its own unique binary packet protocol which must be managed with the libssh2_sftp_*() family of functions. When an SFTP session is complete, it must be destroyed using the .BR libssh2_sftp_shutdown(3) function. .SH RETURN VALUE A pointer to the newly allocated SFTP instance or NULL on failure. .SH ERRORS \fILIBSSH2_ERROR_ALLOC\fP - An internal memory allocation call failed. \fILIBSSH2_ERROR_SOCKET_SEND\fP - Unable to send data on socket. \fILIBSSH2_ERROR_SOCKET_TIMEOUT\fP - \fILIBSSH2_ERROR_SFTP_PROTOCOL\fP - An invalid SFTP protocol response was received on the socket, or an SFTP operation caused an errorcode to be returned by the server. \fILIBSSH2_ERROR_EAGAIN\fP - Marked for non-blocking I/O but the call would block. .SH SEE ALSO .BR libssh2_sftp_shutdown(3) .BR libssh2_sftp_open_ex(3) libssh2-1.10.0/docs/libssh2_sftp_readdir.30000644000175000017500000000115011633133514015165 00000000000000.TH libssh2_sftp_readdir 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual" .SH NAME libssh2_sftp_readdir - convenience macro for \fIlibssh2_sftp_readdir_ex(3)\fP calls .SH SYNOPSIS #include int libssh2_sftp_readdir(LIBSSH2_SFTP_HANDLE *handle, char *buffer, size_t buffer_maxlen, LIBSSH2_SFTP_ATTRIBUTES *attrs); .SH DESCRIPTION This is a macro defined in a public libssh2 header file that is using the underlying function \fIlibssh2_sftp_readdir_ex(3)\fP. .SH RETURN VALUE See \fIlibssh2_sftp_readdir_ex(3)\fP .SH ERRORS See \fIlibssh2_sftp_readdir_ex(3)\fP .SH SEE ALSO .BR libssh2_sftp_readdir_ex(3) libssh2-1.10.0/docs/libssh2_session_banner_set.30000644000175000017500000000220712400451466016410 00000000000000.TH libssh2_session_banner_set 3 "9 Sep 2011" "libssh2 1.4.0" "libssh2 manual" .SH NAME libssh2_session_banner_set - set the SSH protocol banner for the local client .SH SYNOPSIS #include int libssh2_session_banner_set(LIBSSH2_SESSION *session, const char *banner); .SH DESCRIPTION \fIsession\fP - Session instance as returned by .BR libssh2_session_init_ex(3) \fIbanner\fP - A pointer to a zero-terminated string holding the user defined banner Set the banner that will be sent to the remote host when the SSH session is started with \fIlibssh2_session_handshake(3)\fP This is optional; a banner corresponding to the protocol and libssh2 version will be sent by default. .SH RETURN VALUE Returns 0 on success or negative on failure. It returns LIBSSH2_ERROR_EAGAIN when it would otherwise block. While LIBSSH2_ERROR_EAGAIN is a negative number, it isn't really a failure per se. .SH ERRORS \fILIBSSH2_ERROR_ALLOC\fP - An internal memory allocation call failed. .SH AVAILABILITY Added in 1.4.0. Before 1.4.0 this function was known as libssh2_banner_set(3) .SH SEE ALSO .BR libssh2_session_handshake(3), .BR libssh2_session_banner_get(3) libssh2-1.10.0/docs/libssh2_session_last_errno.30000644000175000017500000000105112615665557016454 00000000000000.TH libssh2_session_last_errno 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual" .SH NAME libssh2_session_last_errno - get the most recent error number .SH SYNOPSIS #include int libssh2_session_last_errno(LIBSSH2_SESSION *session); .SH DESCRIPTION \fIsession\fP - Session instance as returned by .BR libssh2_session_init_ex(3) Determine the most recent error condition. .SH RETURN VALUE Numeric error code corresponding to the the Error Code constants. .SH SEE ALSO .BR libssh2_session_last_error(3) .BR libssh2_session_set_last_error(3) libssh2-1.10.0/docs/libssh2_session_get_blocking.30000644000175000017500000000065011633133514016715 00000000000000.TH libssh2_session_get_blocking 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual" .SH NAME libssh2_session_get_blocking - TODO .SH SYNOPSIS int libssh2_session_get_blocking(LIBSSH2_SESSION *session); .SH DESCRIPTION Returns 0 if the state of the session has previously be set to non-blocking and it returns 1 if the state was set to blocking. .SH RETURN VALUE See description. .SH SEE ALSO .BR libssh2_session_set_blocking(3) libssh2-1.10.0/docs/libssh2_channel_wait_eof.30000644000175000017500000000111113446422146016007 00000000000000.TH libssh2_channel_wait_eof 3 "1 Jun 2007" "libssh2 0.15" "libssh2 manual" .SH NAME libssh2_channel_wait_eof - wait for the remote to reply to an EOF request .SH SYNOPSIS #include int libssh2_channel_wait_eof(LIBSSH2_CHANNEL *channel); .SH DESCRIPTION Wait for the remote end to send EOF. .SH RETURN VALUE Return 0 on success or negative on failure. It returns LIBSSH2_ERROR_EAGAIN when it would otherwise block. While LIBSSH2_ERROR_EAGAIN is a negative number, it isn't really a failure per se. .SH SEE ALSO .BR libssh2_channel_send_eof(3) .BR libssh2_channel_eof(3) libssh2-1.10.0/docs/libssh2_channel_window_read.30000644000175000017500000000114311633133514016513 00000000000000.TH libssh2_channel_window_read 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual" .SH NAME libssh2_channel_window_read - convenience macro for \fIlibssh2_channel_window_read_ex(3)\fP calls .SH SYNOPSIS #include unsigned long libssh2_channel_window_read(LIBSSH2_CHANNEL *channel); .SH DESCRIPTION This is a macro defined in a public libssh2 header file that is using the underlying function \fIlibssh2_channel_window_read_ex(3)\fP. .SH RETURN VALUE See \fIlibssh2_channel_window_read_ex(3)\fP .SH ERRORS See \fIlibssh2_channel_window_read_ex(3)\fP .SH SEE ALSO .BR libssh2_channel_window_read_ex(3) libssh2-1.10.0/docs/libssh2_sftp_fstat.30000644000175000017500000000106411633133514014700 00000000000000.TH libssh2_sftp_fstat 3 "20 Feb 2010" "libssh2 1.2.4" "libssh2 manual" .SH NAME libssh2_sftp_fstat - convenience macro for \fIlibssh2_sftp_fstat_ex(3)\fP calls .SH SYNOPSIS #include int libssh2_sftp_fstat(LIBSSH2_SFTP_HANDLE *handle, LIBSSH2_SFTP_ATTRIBUTES *attrs); .SH DESCRIPTION This is a macro defined in a public libssh2 header file that is using the underlying function \fIlibssh2_sftp_fstat_ex(3)\fP. .SH RETURN VALUE See \fIlibssh2_sftp_fstat_ex(3)\fP .SH ERRORS See \fIlibssh2_sftp_fstat_ex(3)\fP .SH SEE ALSO .BR libssh2_sftp_fstat_ex(3) libssh2-1.10.0/docs/libssh2_agent_userauth.30000644000175000017500000000162411314516632015545 00000000000000.\" .\" Copyright (c) 2009 by Daiki Ueno .\" .TH libssh2_agent_userauth 3 "23 Dec 2009" "libssh2 1.2" "libssh2 manual" .SH NAME libssh2_agent_userauth - authenticate a session with a public key, with the help of ssh-agent .SH SYNOPSIS #include int libssh2_agent_userauth(LIBSSH2_AGENT *agent, const char *username, struct libssh2_agent_publickey *identity); .SH DESCRIPTION \fIagent\fP - ssh-agent handle as returned by .BR libssh2_agent_init(3) \fIusername\fP - Remote user name to authenticate as. \fIidentity\fP - Public key to authenticate with, as returned by .BR libssh2_agent_get_identity(3) Attempt public key authentication with the help of ssh-agent. .SH RETURN VALUE Returns 0 if succeeded, or a negative value for error. .SH AVAILABILITY Added in libssh2 1.2 .SH SEE ALSO .BR libssh2_agent_init(3) .BR libssh2_agent_get_identity(3) libssh2-1.10.0/docs/libssh2_agent_list_identities.30000644000175000017500000000126511314516632017102 00000000000000.\" .\" Copyright (c) 2009 by Daiki Ueno .\" .TH libssh2_agent_list_identities 3 "23 Dec 2009" "libssh2 1.2" "libssh2 manual" .SH NAME libssh2_agent_list_identities - request an ssh-agent to list of public keys. .SH SYNOPSIS #include int libssh2_agent_list_identities(LIBSSH2_AGENT *agent); .SH DESCRIPTION Request an ssh-agent to list of public keys, and stores them in the internal collection of the handle. Call \fIlibssh2_agent_get_identity(3)\fP to get a public key off the collection. .SH RETURN VALUE Returns 0 if succeeded, or a negative value for error. .SH AVAILABILITY Added in libssh2 1.2 .SH SEE ALSO .BR libssh2_agent_connect(3) .BR libssh2_agent_get_identity(3) libssh2-1.10.0/docs/INSTALL_CMAKE.md0000644000175000017500000001360114016143065013341 00000000000000License: see COPYING Source code: https://github.com/libssh2/libssh2 Web site source code: https://github.com/libssh2/www Installation instructions are in docs/INSTALL ======= To build libssh2 you will need CMake v2.8 or later [1] and one of the following cryptography libraries: * OpenSSL * Libgcrypt * WinCNG * mbedTLS Getting started --------------- If you are happy with the default options, make a new build directory, change to it, configure the build environment and build the project: ``` mkdir bin cd bin cmake .. cmake --build . ``` libssh2 will be built as a static library and will use any cryptography library available. The library binary will be put in `bin/src`, with the examples in `bin/example` and the tests in `bin/tests`. Customising the build --------------------- Of course, you might want to customise the build options. You can pass the options to CMake on the command line: cmake -D