feat: server list sidebar + notifications + new icon

- Added server list sidebar (GtkPaned) showing saved servers with
  name, user@host:port detail. Double-click to connect.
- Added '+' button in sidebar to add new servers
- Added notification bar (animated GtkRevealer) for status messages:
  'Server saved', 'Server connected', 'Server disconnected',
  'Server removed', 'Key generated', 'Key imported', 'Key deleted'
  Auto-hides after 4 seconds.
- Changed icon to terminal-style PNG + SVG (scalable)
- Server list updates automatically when servers are added/removed

Layout: [Sidebar: Servers] | [Notebook: Terminal Tabs]
This commit is contained in:
x3
2026-09-07 15:19:48 +00:00
parent 75ceeffab9
commit 539e951fec
24 changed files with 37829 additions and 47 deletions
+759
View File
@@ -0,0 +1,759 @@
# Makefile.in generated by automake 1.18.1 from Makefile.am.
# src/Makefile. Generated from Makefile.in by configure.
# Copyright (C) 1994-2025 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
am__is_gnu_make = { \
if test -z '$(MAKELEVEL)'; then \
false; \
elif test -n '$(MAKE_HOST)'; then \
true; \
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
true; \
else \
false; \
fi; \
}
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
am__rm_f = rm -f $(am__rm_f_notfound)
am__rm_rf = rm -rf $(am__rm_f_notfound)
pkgdatadir = $(datadir)/x3-ssh
pkgincludedir = $(includedir)/x3-ssh
pkglibdir = $(libdir)/x3-ssh
pkglibexecdir = $(libexecdir)/x3-ssh
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
bin_PROGRAMS = x3-ssh$(EXEEXT)
subdir = src
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_icons_DATA) \
$(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(iconsdir)"
PROGRAMS = $(bin_PROGRAMS)
am_x3_ssh_OBJECTS = x3_ssh-main.$(OBJEXT) \
x3_ssh-ssh_terminal.$(OBJEXT) x3_ssh-server_store.$(OBJEXT) \
x3_ssh-ssh_client.$(OBJEXT) x3_ssh-key_store.$(OBJEXT)
x3_ssh_OBJECTS = $(am_x3_ssh_OBJECTS)
am__DEPENDENCIES_1 =
x3_ssh_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1)
x3_ssh_LINK = $(CXXLD) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
$(LDFLAGS) -o $@
AM_V_P = $(am__v_P_$(V))
am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_$(V))
am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_$(V))
am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
am__v_at_0 = @
am__v_at_1 =
DEFAULT_INCLUDES = -I.
depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
am__maybe_remake_depfiles = depfiles
am__depfiles_remade = ./$(DEPDIR)/x3_ssh-key_store.Po \
./$(DEPDIR)/x3_ssh-main.Po ./$(DEPDIR)/x3_ssh-server_store.Po \
./$(DEPDIR)/x3_ssh-ssh_client.Po \
./$(DEPDIR)/x3_ssh-ssh_terminal.Po
am__mv = mv -f
AM_V_lt = $(am__v_lt_$(V))
am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
am__v_lt_0 = --silent
am__v_lt_1 =
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
AM_V_CXX = $(am__v_CXX_$(V))
am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY))
am__v_CXX_0 = @echo " CXX " $@;
am__v_CXX_1 =
CXXLD = $(CXX)
CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
-o $@
AM_V_CXXLD = $(am__v_CXXLD_$(V))
am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY))
am__v_CXXLD_0 = @echo " CXXLD " $@;
am__v_CXXLD_1 =
SOURCES = $(x3_ssh_SOURCES)
DIST_SOURCES = $(x3_ssh_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
am__install_max = 40
am__nobase_strip_setup = \
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
am__nobase_strip = \
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
am__nobase_list = $(am__nobase_strip_setup); \
for p in $$list; do echo "$$p $$p"; done | \
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
if (++n[$$2] == $(am__install_max)) \
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
END { for (dir in files) print dir, files[dir] }'
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__uninstall_files_from_dir = { \
{ test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \
}
DATA = $(dist_icons_DATA)
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
# *not* preserved.
am__uniquify_input = $(AWK) '\
BEGIN { nonempty = 0; } \
{ items[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in items) print i; }; } \
'
# Make sure the list of sources is unique. This is necessary because,
# e.g., the same source file might be shared among _SOURCES variables
# for different programs/libraries.
am__define_uniq_tagged_files = \
list='$(am__tagged_files)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
am__DIST_COMMON = $(srcdir)/Makefile.in \
$(top_srcdir)/build-aux/depcomp
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = ${SHELL} '/home/administrator/Programms/ssh/x3-ssh/build-aux/missing' aclocal-1.18
AMTAR = $${TAR-tar}
AM_DEFAULT_VERBOSITY = 1
AUTOCONF = ${SHELL} '/home/administrator/Programms/ssh/x3-ssh/build-aux/missing' autoconf
AUTOHEADER = ${SHELL} '/home/administrator/Programms/ssh/x3-ssh/build-aux/missing' autoheader
AUTOMAKE = ${SHELL} '/home/administrator/Programms/ssh/x3-ssh/build-aux/missing' automake-1.18
AWK = gawk
CPPFLAGS =
CSCOPE = cscope
CTAGS = ctags
CXX = g++ -std=gnu++17
CXXDEPMODE = depmode=gcc3
CXXFLAGS = -g -O2
CYGPATH_W = echo
DEFS = -DPACKAGE_NAME=\"x3-ssh\" -DPACKAGE_TARNAME=\"x3-ssh\" -DPACKAGE_VERSION=\"1.0.0\" -DPACKAGE_STRING=\"x3-ssh\ 1.0.0\" -DPACKAGE_BUGREPORT=\"x3@sysdaemon.xyz\" -DPACKAGE_URL=\"\" -DPACKAGE=\"x3-ssh\" -DVERSION=\"1.0.0\" -DHAVE_CXX17=1
DEPDIR = .deps
ECHO_C =
ECHO_N = -n
ECHO_T =
ETAGS = etags
EXEEXT =
GTK_CFLAGS = -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/glycin-2 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/atk-1.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/fribidi -I/usr/include/pixman-1 -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gio-unix-2.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/sysprof-6 -pthread
GTK_LIBS = -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lcairo-gobject -lgdk_pixbuf-2.0 -latk-1.0 -lpango-1.0 -lcairo -lharfbuzz -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lz
HAVE_CXX17 = 1
INSTALL = /usr/bin/install -c
INSTALL_DATA = ${INSTALL} -m 644
INSTALL_PROGRAM = ${INSTALL}
INSTALL_SCRIPT = ${INSTALL}
INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
LDFLAGS =
LIBOBJS =
LIBS =
LIBSSH_CFLAGS =
LIBSSH_LIBS = -lssh
LTLIBOBJS =
MAKEINFO = ${SHELL} '/home/administrator/Programms/ssh/x3-ssh/build-aux/missing' makeinfo
MKDIR_P = /usr/bin/mkdir -p
OBJEXT = o
PACKAGE = x3-ssh
PACKAGE_BUGREPORT = x3@sysdaemon.xyz
PACKAGE_NAME = x3-ssh
PACKAGE_STRING = x3-ssh 1.0.0
PACKAGE_TARNAME = x3-ssh
PACKAGE_URL =
PACKAGE_VERSION = 1.0.0
PATH_SEPARATOR = :
PKG_CONFIG = /usr/bin/pkg-config
PKG_CONFIG_LIBDIR =
PKG_CONFIG_PATH =
SET_MAKE =
SHELL = /bin/bash
STRIP =
VERSION = 1.0.0
VTE_CFLAGS = -I/usr/include/vte-2.91 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/glycin-2 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/atk-1.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/fribidi -I/usr/include/pixman-1 -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gio-unix-2.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/sysprof-6 -pthread
VTE_LIBS = -lvte-2.91 -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lcairo-gobject -lgdk_pixbuf-2.0 -latk-1.0 -lpango-1.0 -lcairo -lharfbuzz -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lz
abs_builddir = /home/administrator/Programms/ssh/x3-ssh/src
abs_srcdir = /home/administrator/Programms/ssh/x3-ssh/src
abs_top_builddir = /home/administrator/Programms/ssh/x3-ssh
abs_top_srcdir = /home/administrator/Programms/ssh/x3-ssh
ac_ct_CXX = g++
am__include = include
am__leading_dot = .
am__quote =
am__rm_f_notfound =
am__tar = tar --format=ustar -chf - "$$tardir"
am__untar = tar -xf -
am__xargs_n = xargs -n
bindir = ${exec_prefix}/bin
build_alias =
builddir = .
datadir = ${datarootdir}
datarootdir = ${prefix}/share
docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
dvidir = ${docdir}
exec_prefix = ${prefix}
host_alias =
htmldir = ${docdir}
includedir = ${prefix}/include
infodir = ${datarootdir}/info
install_sh = ${SHELL} /home/administrator/Programms/ssh/x3-ssh/build-aux/install-sh
libdir = ${exec_prefix}/lib
libexecdir = ${exec_prefix}/libexec
localedir = ${datarootdir}/locale
localstatedir = ${prefix}/var
mandir = ${datarootdir}/man
mkdir_p = $(MKDIR_P)
oldincludedir = /usr/include
pdfdir = ${docdir}
prefix = /usr/local
program_transform_name = s,x,x,
psdir = ${docdir}
runstatedir = ${localstatedir}/run
sbindir = ${exec_prefix}/sbin
sharedstatedir = ${prefix}/com
srcdir = .
sysconfdir = ${prefix}/etc
target_alias =
top_build_prefix = ../
top_builddir = ..
top_srcdir = ..
x3_ssh_SOURCES = \
main.cpp \
ssh_terminal.cpp \
server_store.cpp \
ssh_client.cpp \
key_store.cpp
x3_ssh_CXXFLAGS = \
-std=c++17 \
$(GTK_CFLAGS) \
$(VTE_CFLAGS) \
$(LIBSSH_CFLAGS) \
-DLOCALEDIR=\"$(localedir)\" \
-DICONDIR=\"$(datadir)/icons\"
x3_ssh_LDADD = \
$(GTK_LIBS) \
$(VTE_LIBS) \
$(LIBSSH_LIBS)
iconsdir = $(datadir)/icons
dist_icons_DATA = ../icons/x3-ssh.png
all: all-am
.SUFFIXES:
.SUFFIXES: .cpp .o .obj
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign src/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
$(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
fi; \
for p in $$list; do echo "$$p $$p"; done | \
sed 's/$(EXEEXT)$$//' | \
while read p p1; do if test -f $$p \
; then echo "$$p"; echo "$$p"; else :; fi; \
done | \
sed -e 'p;s,.*/,,;n;h' \
-e 's|.*|.|' \
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
sed 'N;N;N;s,\n, ,g' | \
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
{ d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
if ($$2 == $$4) files[d] = files[d] " " $$1; \
else { print "f", $$3 "/" $$4, $$1; } } \
END { for (d in files) print "f", d, files[d] }' | \
while read type dir files; do \
if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
test -z "$$files" || { \
echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
$(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
} \
; done
uninstall-binPROGRAMS:
@$(NORMAL_UNINSTALL)
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
files=`for p in $$list; do echo "$$p"; done | \
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-e 's/$$/$(EXEEXT)/' \
`; \
test -n "$$list" || exit 0; \
echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
cd "$(DESTDIR)$(bindir)" && $(am__rm_f) $$files
clean-binPROGRAMS:
-$(am__rm_f) $(bin_PROGRAMS)
x3-ssh$(EXEEXT): $(x3_ssh_OBJECTS) $(x3_ssh_DEPENDENCIES) $(EXTRA_x3_ssh_DEPENDENCIES)
@rm -f x3-ssh$(EXEEXT)
$(AM_V_CXXLD)$(x3_ssh_LINK) $(x3_ssh_OBJECTS) $(x3_ssh_LDADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
include ./$(DEPDIR)/x3_ssh-key_store.Po # am--include-marker
include ./$(DEPDIR)/x3_ssh-main.Po # am--include-marker
include ./$(DEPDIR)/x3_ssh-server_store.Po # am--include-marker
include ./$(DEPDIR)/x3_ssh-ssh_client.Po # am--include-marker
include ./$(DEPDIR)/x3_ssh-ssh_terminal.Po # am--include-marker
$(am__depfiles_remade):
@$(MKDIR_P) $(@D)
@: >>$@
am--depfiles: $(am__depfiles_remade)
.cpp.o:
$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
$(am__mv) $$depbase.Tpo $$depbase.Po
# $(AM_V_CXX)source='$<' object='$@' libtool=no \
# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
# $(AM_V_CXX_no)$(CXXCOMPILE) -c -o $@ $<
.cpp.obj:
$(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
$(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
$(am__mv) $$depbase.Tpo $$depbase.Po
# $(AM_V_CXX)source='$<' object='$@' libtool=no \
# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
# $(AM_V_CXX_no)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
x3_ssh-main.o: main.cpp
$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -MT x3_ssh-main.o -MD -MP -MF $(DEPDIR)/x3_ssh-main.Tpo -c -o x3_ssh-main.o `test -f 'main.cpp' || echo '$(srcdir)/'`main.cpp
$(AM_V_at)$(am__mv) $(DEPDIR)/x3_ssh-main.Tpo $(DEPDIR)/x3_ssh-main.Po
# $(AM_V_CXX)source='main.cpp' object='x3_ssh-main.o' libtool=no \
# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
# $(AM_V_CXX_no)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -c -o x3_ssh-main.o `test -f 'main.cpp' || echo '$(srcdir)/'`main.cpp
x3_ssh-main.obj: main.cpp
$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -MT x3_ssh-main.obj -MD -MP -MF $(DEPDIR)/x3_ssh-main.Tpo -c -o x3_ssh-main.obj `if test -f 'main.cpp'; then $(CYGPATH_W) 'main.cpp'; else $(CYGPATH_W) '$(srcdir)/main.cpp'; fi`
$(AM_V_at)$(am__mv) $(DEPDIR)/x3_ssh-main.Tpo $(DEPDIR)/x3_ssh-main.Po
# $(AM_V_CXX)source='main.cpp' object='x3_ssh-main.obj' libtool=no \
# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
# $(AM_V_CXX_no)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -c -o x3_ssh-main.obj `if test -f 'main.cpp'; then $(CYGPATH_W) 'main.cpp'; else $(CYGPATH_W) '$(srcdir)/main.cpp'; fi`
x3_ssh-ssh_terminal.o: ssh_terminal.cpp
$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -MT x3_ssh-ssh_terminal.o -MD -MP -MF $(DEPDIR)/x3_ssh-ssh_terminal.Tpo -c -o x3_ssh-ssh_terminal.o `test -f 'ssh_terminal.cpp' || echo '$(srcdir)/'`ssh_terminal.cpp
$(AM_V_at)$(am__mv) $(DEPDIR)/x3_ssh-ssh_terminal.Tpo $(DEPDIR)/x3_ssh-ssh_terminal.Po
# $(AM_V_CXX)source='ssh_terminal.cpp' object='x3_ssh-ssh_terminal.o' libtool=no \
# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
# $(AM_V_CXX_no)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -c -o x3_ssh-ssh_terminal.o `test -f 'ssh_terminal.cpp' || echo '$(srcdir)/'`ssh_terminal.cpp
x3_ssh-ssh_terminal.obj: ssh_terminal.cpp
$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -MT x3_ssh-ssh_terminal.obj -MD -MP -MF $(DEPDIR)/x3_ssh-ssh_terminal.Tpo -c -o x3_ssh-ssh_terminal.obj `if test -f 'ssh_terminal.cpp'; then $(CYGPATH_W) 'ssh_terminal.cpp'; else $(CYGPATH_W) '$(srcdir)/ssh_terminal.cpp'; fi`
$(AM_V_at)$(am__mv) $(DEPDIR)/x3_ssh-ssh_terminal.Tpo $(DEPDIR)/x3_ssh-ssh_terminal.Po
# $(AM_V_CXX)source='ssh_terminal.cpp' object='x3_ssh-ssh_terminal.obj' libtool=no \
# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
# $(AM_V_CXX_no)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -c -o x3_ssh-ssh_terminal.obj `if test -f 'ssh_terminal.cpp'; then $(CYGPATH_W) 'ssh_terminal.cpp'; else $(CYGPATH_W) '$(srcdir)/ssh_terminal.cpp'; fi`
x3_ssh-server_store.o: server_store.cpp
$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -MT x3_ssh-server_store.o -MD -MP -MF $(DEPDIR)/x3_ssh-server_store.Tpo -c -o x3_ssh-server_store.o `test -f 'server_store.cpp' || echo '$(srcdir)/'`server_store.cpp
$(AM_V_at)$(am__mv) $(DEPDIR)/x3_ssh-server_store.Tpo $(DEPDIR)/x3_ssh-server_store.Po
# $(AM_V_CXX)source='server_store.cpp' object='x3_ssh-server_store.o' libtool=no \
# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
# $(AM_V_CXX_no)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -c -o x3_ssh-server_store.o `test -f 'server_store.cpp' || echo '$(srcdir)/'`server_store.cpp
x3_ssh-server_store.obj: server_store.cpp
$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -MT x3_ssh-server_store.obj -MD -MP -MF $(DEPDIR)/x3_ssh-server_store.Tpo -c -o x3_ssh-server_store.obj `if test -f 'server_store.cpp'; then $(CYGPATH_W) 'server_store.cpp'; else $(CYGPATH_W) '$(srcdir)/server_store.cpp'; fi`
$(AM_V_at)$(am__mv) $(DEPDIR)/x3_ssh-server_store.Tpo $(DEPDIR)/x3_ssh-server_store.Po
# $(AM_V_CXX)source='server_store.cpp' object='x3_ssh-server_store.obj' libtool=no \
# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
# $(AM_V_CXX_no)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -c -o x3_ssh-server_store.obj `if test -f 'server_store.cpp'; then $(CYGPATH_W) 'server_store.cpp'; else $(CYGPATH_W) '$(srcdir)/server_store.cpp'; fi`
x3_ssh-ssh_client.o: ssh_client.cpp
$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -MT x3_ssh-ssh_client.o -MD -MP -MF $(DEPDIR)/x3_ssh-ssh_client.Tpo -c -o x3_ssh-ssh_client.o `test -f 'ssh_client.cpp' || echo '$(srcdir)/'`ssh_client.cpp
$(AM_V_at)$(am__mv) $(DEPDIR)/x3_ssh-ssh_client.Tpo $(DEPDIR)/x3_ssh-ssh_client.Po
# $(AM_V_CXX)source='ssh_client.cpp' object='x3_ssh-ssh_client.o' libtool=no \
# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
# $(AM_V_CXX_no)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -c -o x3_ssh-ssh_client.o `test -f 'ssh_client.cpp' || echo '$(srcdir)/'`ssh_client.cpp
x3_ssh-ssh_client.obj: ssh_client.cpp
$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -MT x3_ssh-ssh_client.obj -MD -MP -MF $(DEPDIR)/x3_ssh-ssh_client.Tpo -c -o x3_ssh-ssh_client.obj `if test -f 'ssh_client.cpp'; then $(CYGPATH_W) 'ssh_client.cpp'; else $(CYGPATH_W) '$(srcdir)/ssh_client.cpp'; fi`
$(AM_V_at)$(am__mv) $(DEPDIR)/x3_ssh-ssh_client.Tpo $(DEPDIR)/x3_ssh-ssh_client.Po
# $(AM_V_CXX)source='ssh_client.cpp' object='x3_ssh-ssh_client.obj' libtool=no \
# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
# $(AM_V_CXX_no)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -c -o x3_ssh-ssh_client.obj `if test -f 'ssh_client.cpp'; then $(CYGPATH_W) 'ssh_client.cpp'; else $(CYGPATH_W) '$(srcdir)/ssh_client.cpp'; fi`
x3_ssh-key_store.o: key_store.cpp
$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -MT x3_ssh-key_store.o -MD -MP -MF $(DEPDIR)/x3_ssh-key_store.Tpo -c -o x3_ssh-key_store.o `test -f 'key_store.cpp' || echo '$(srcdir)/'`key_store.cpp
$(AM_V_at)$(am__mv) $(DEPDIR)/x3_ssh-key_store.Tpo $(DEPDIR)/x3_ssh-key_store.Po
# $(AM_V_CXX)source='key_store.cpp' object='x3_ssh-key_store.o' libtool=no \
# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
# $(AM_V_CXX_no)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -c -o x3_ssh-key_store.o `test -f 'key_store.cpp' || echo '$(srcdir)/'`key_store.cpp
x3_ssh-key_store.obj: key_store.cpp
$(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -MT x3_ssh-key_store.obj -MD -MP -MF $(DEPDIR)/x3_ssh-key_store.Tpo -c -o x3_ssh-key_store.obj `if test -f 'key_store.cpp'; then $(CYGPATH_W) 'key_store.cpp'; else $(CYGPATH_W) '$(srcdir)/key_store.cpp'; fi`
$(AM_V_at)$(am__mv) $(DEPDIR)/x3_ssh-key_store.Tpo $(DEPDIR)/x3_ssh-key_store.Po
# $(AM_V_CXX)source='key_store.cpp' object='x3_ssh-key_store.obj' libtool=no \
# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
# $(AM_V_CXX_no)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -c -o x3_ssh-key_store.obj `if test -f 'key_store.cpp'; then $(CYGPATH_W) 'key_store.cpp'; else $(CYGPATH_W) '$(srcdir)/key_store.cpp'; fi`
install-dist_iconsDATA: $(dist_icons_DATA)
@$(NORMAL_INSTALL)
@list='$(dist_icons_DATA)'; test -n "$(iconsdir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(iconsdir)'"; \
$(MKDIR_P) "$(DESTDIR)$(iconsdir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(iconsdir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(iconsdir)" || exit $$?; \
done
uninstall-dist_iconsDATA:
@$(NORMAL_UNINSTALL)
@list='$(dist_icons_DATA)'; test -n "$(iconsdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
dir='$(DESTDIR)$(iconsdir)'; $(am__uninstall_files_from_dir)
ID: $(am__tagged_files)
$(am__define_uniq_tagged_files); mkid -fID $$unique
tags: tags-am
TAGS: tags
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
$(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: ctags-am
CTAGS: ctags
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
$(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
cscopelist: cscopelist-am
cscopelist-am: $(am__tagged_files)
list='$(am__tagged_files)'; \
case "$(srcdir)" in \
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
*) sdir=$(subdir)/$(srcdir) ;; \
esac; \
for i in $$list; do \
if test -f "$$i"; then \
echo "$(subdir)/$$i"; \
else \
echo "$$sdir/$$i"; \
fi; \
done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
distdir-am: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(PROGRAMS) $(DATA)
installdirs:
for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(iconsdir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-$(am__rm_f) $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
distclean: distclean-am
-rm -f ./$(DEPDIR)/x3_ssh-key_store.Po
-rm -f ./$(DEPDIR)/x3_ssh-main.Po
-rm -f ./$(DEPDIR)/x3_ssh-server_store.Po
-rm -f ./$(DEPDIR)/x3_ssh-ssh_client.Po
-rm -f ./$(DEPDIR)/x3_ssh-ssh_terminal.Po
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am: install-dist_iconsDATA
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am: install-binPROGRAMS
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/x3_ssh-key_store.Po
-rm -f ./$(DEPDIR)/x3_ssh-main.Po
-rm -f ./$(DEPDIR)/x3_ssh-server_store.Po
-rm -f ./$(DEPDIR)/x3_ssh-ssh_client.Po
-rm -f ./$(DEPDIR)/x3_ssh-ssh_terminal.Po
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-binPROGRAMS uninstall-dist_iconsDATA
.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \
clean-binPROGRAMS clean-generic cscopelist-am ctags ctags-am \
distclean distclean-compile distclean-generic distclean-tags \
distdir dvi dvi-am html html-am info info-am install \
install-am install-binPROGRAMS install-data install-data-am \
install-dist_iconsDATA install-dvi install-dvi-am install-exec \
install-exec-am install-html install-html-am install-info \
install-info-am install-man install-pdf install-pdf-am \
install-ps install-ps-am install-strip installcheck \
installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
uninstall-am uninstall-binPROGRAMS uninstall-dist_iconsDATA
.PRECIOUS: Makefile
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
# Tell GNU make to disable its built-in pattern rules.
%:: %,v
%:: RCS/%,v
%:: RCS/%
%:: s.%
%:: SCCS/s.%
+759
View File
@@ -0,0 +1,759 @@
# Makefile.in generated by automake 1.18.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2025 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
am__is_gnu_make = { \
if test -z '$(MAKELEVEL)'; then \
false; \
elif test -n '$(MAKE_HOST)'; then \
true; \
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
true; \
else \
false; \
fi; \
}
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
am__rm_f = rm -f $(am__rm_f_notfound)
am__rm_rf = rm -rf $(am__rm_f_notfound)
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
bin_PROGRAMS = x3-ssh$(EXEEXT)
subdir = src
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(dist_icons_DATA) \
$(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(iconsdir)"
PROGRAMS = $(bin_PROGRAMS)
am_x3_ssh_OBJECTS = x3_ssh-main.$(OBJEXT) \
x3_ssh-ssh_terminal.$(OBJEXT) x3_ssh-server_store.$(OBJEXT) \
x3_ssh-ssh_client.$(OBJEXT) x3_ssh-key_store.$(OBJEXT)
x3_ssh_OBJECTS = $(am_x3_ssh_OBJECTS)
am__DEPENDENCIES_1 =
x3_ssh_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1)
x3_ssh_LINK = $(CXXLD) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
$(LDFLAGS) -o $@
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@
depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
am__maybe_remake_depfiles = depfiles
am__depfiles_remade = ./$(DEPDIR)/x3_ssh-key_store.Po \
./$(DEPDIR)/x3_ssh-main.Po ./$(DEPDIR)/x3_ssh-server_store.Po \
./$(DEPDIR)/x3_ssh-ssh_client.Po \
./$(DEPDIR)/x3_ssh-ssh_terminal.Po
am__mv = mv -f
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
am__v_lt_1 =
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
AM_V_CXX = $(am__v_CXX_@AM_V@)
am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
am__v_CXX_0 = @echo " CXX " $@;
am__v_CXX_1 =
CXXLD = $(CXX)
CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
-o $@
AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
am__v_CXXLD_0 = @echo " CXXLD " $@;
am__v_CXXLD_1 =
SOURCES = $(x3_ssh_SOURCES)
DIST_SOURCES = $(x3_ssh_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
am__install_max = 40
am__nobase_strip_setup = \
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
am__nobase_strip = \
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
am__nobase_list = $(am__nobase_strip_setup); \
for p in $$list; do echo "$$p $$p"; done | \
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
if (++n[$$2] == $(am__install_max)) \
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
END { for (dir in files) print dir, files[dir] }'
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__uninstall_files_from_dir = { \
{ test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \
}
DATA = $(dist_icons_DATA)
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
# *not* preserved.
am__uniquify_input = $(AWK) '\
BEGIN { nonempty = 0; } \
{ items[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in items) print i; }; } \
'
# Make sure the list of sources is unique. This is necessary because,
# e.g., the same source file might be shared among _SOURCES variables
# for different programs/libraries.
am__define_uniq_tagged_files = \
list='$(am__tagged_files)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
am__DIST_COMMON = $(srcdir)/Makefile.in \
$(top_srcdir)/build-aux/depcomp
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CPPFLAGS = @CPPFLAGS@
CSCOPE = @CSCOPE@
CTAGS = @CTAGS@
CXX = @CXX@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
GTK_CFLAGS = @GTK_CFLAGS@
GTK_LIBS = @GTK_LIBS@
HAVE_CXX17 = @HAVE_CXX17@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBSSH_CFLAGS = @LIBSSH_CFLAGS@
LIBSSH_LIBS = @LIBSSH_LIBS@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
VTE_CFLAGS = @VTE_CFLAGS@
VTE_LIBS = @VTE_LIBS@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__rm_f_notfound = @am__rm_f_notfound@
am__tar = @am__tar@
am__untar = @am__untar@
am__xargs_n = @am__xargs_n@
bindir = @bindir@
build_alias = @build_alias@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host_alias = @host_alias@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
x3_ssh_SOURCES = \
main.cpp \
ssh_terminal.cpp \
server_store.cpp \
ssh_client.cpp \
key_store.cpp
x3_ssh_CXXFLAGS = \
-std=c++17 \
$(GTK_CFLAGS) \
$(VTE_CFLAGS) \
$(LIBSSH_CFLAGS) \
-DLOCALEDIR=\"$(localedir)\" \
-DICONDIR=\"$(datadir)/icons\"
x3_ssh_LDADD = \
$(GTK_LIBS) \
$(VTE_LIBS) \
$(LIBSSH_LIBS)
iconsdir = $(datadir)/icons
dist_icons_DATA = ../icons/x3-ssh.png
all: all-am
.SUFFIXES:
.SUFFIXES: .cpp .o .obj
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign src/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
$(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
fi; \
for p in $$list; do echo "$$p $$p"; done | \
sed 's/$(EXEEXT)$$//' | \
while read p p1; do if test -f $$p \
; then echo "$$p"; echo "$$p"; else :; fi; \
done | \
sed -e 'p;s,.*/,,;n;h' \
-e 's|.*|.|' \
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
sed 'N;N;N;s,\n, ,g' | \
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
{ d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
if ($$2 == $$4) files[d] = files[d] " " $$1; \
else { print "f", $$3 "/" $$4, $$1; } } \
END { for (d in files) print "f", d, files[d] }' | \
while read type dir files; do \
if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
test -z "$$files" || { \
echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
$(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
} \
; done
uninstall-binPROGRAMS:
@$(NORMAL_UNINSTALL)
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
files=`for p in $$list; do echo "$$p"; done | \
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-e 's/$$/$(EXEEXT)/' \
`; \
test -n "$$list" || exit 0; \
echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
cd "$(DESTDIR)$(bindir)" && $(am__rm_f) $$files
clean-binPROGRAMS:
-$(am__rm_f) $(bin_PROGRAMS)
x3-ssh$(EXEEXT): $(x3_ssh_OBJECTS) $(x3_ssh_DEPENDENCIES) $(EXTRA_x3_ssh_DEPENDENCIES)
@rm -f x3-ssh$(EXEEXT)
$(AM_V_CXXLD)$(x3_ssh_LINK) $(x3_ssh_OBJECTS) $(x3_ssh_LDADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x3_ssh-key_store.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x3_ssh-main.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x3_ssh-server_store.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x3_ssh-ssh_client.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/x3_ssh-ssh_terminal.Po@am__quote@ # am--include-marker
$(am__depfiles_remade):
@$(MKDIR_P) $(@D)
@: >>$@
am--depfiles: $(am__depfiles_remade)
.cpp.o:
@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
.cpp.obj:
@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
x3_ssh-main.o: main.cpp
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -MT x3_ssh-main.o -MD -MP -MF $(DEPDIR)/x3_ssh-main.Tpo -c -o x3_ssh-main.o `test -f 'main.cpp' || echo '$(srcdir)/'`main.cpp
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/x3_ssh-main.Tpo $(DEPDIR)/x3_ssh-main.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='main.cpp' object='x3_ssh-main.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -c -o x3_ssh-main.o `test -f 'main.cpp' || echo '$(srcdir)/'`main.cpp
x3_ssh-main.obj: main.cpp
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -MT x3_ssh-main.obj -MD -MP -MF $(DEPDIR)/x3_ssh-main.Tpo -c -o x3_ssh-main.obj `if test -f 'main.cpp'; then $(CYGPATH_W) 'main.cpp'; else $(CYGPATH_W) '$(srcdir)/main.cpp'; fi`
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/x3_ssh-main.Tpo $(DEPDIR)/x3_ssh-main.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='main.cpp' object='x3_ssh-main.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -c -o x3_ssh-main.obj `if test -f 'main.cpp'; then $(CYGPATH_W) 'main.cpp'; else $(CYGPATH_W) '$(srcdir)/main.cpp'; fi`
x3_ssh-ssh_terminal.o: ssh_terminal.cpp
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -MT x3_ssh-ssh_terminal.o -MD -MP -MF $(DEPDIR)/x3_ssh-ssh_terminal.Tpo -c -o x3_ssh-ssh_terminal.o `test -f 'ssh_terminal.cpp' || echo '$(srcdir)/'`ssh_terminal.cpp
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/x3_ssh-ssh_terminal.Tpo $(DEPDIR)/x3_ssh-ssh_terminal.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='ssh_terminal.cpp' object='x3_ssh-ssh_terminal.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -c -o x3_ssh-ssh_terminal.o `test -f 'ssh_terminal.cpp' || echo '$(srcdir)/'`ssh_terminal.cpp
x3_ssh-ssh_terminal.obj: ssh_terminal.cpp
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -MT x3_ssh-ssh_terminal.obj -MD -MP -MF $(DEPDIR)/x3_ssh-ssh_terminal.Tpo -c -o x3_ssh-ssh_terminal.obj `if test -f 'ssh_terminal.cpp'; then $(CYGPATH_W) 'ssh_terminal.cpp'; else $(CYGPATH_W) '$(srcdir)/ssh_terminal.cpp'; fi`
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/x3_ssh-ssh_terminal.Tpo $(DEPDIR)/x3_ssh-ssh_terminal.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='ssh_terminal.cpp' object='x3_ssh-ssh_terminal.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -c -o x3_ssh-ssh_terminal.obj `if test -f 'ssh_terminal.cpp'; then $(CYGPATH_W) 'ssh_terminal.cpp'; else $(CYGPATH_W) '$(srcdir)/ssh_terminal.cpp'; fi`
x3_ssh-server_store.o: server_store.cpp
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -MT x3_ssh-server_store.o -MD -MP -MF $(DEPDIR)/x3_ssh-server_store.Tpo -c -o x3_ssh-server_store.o `test -f 'server_store.cpp' || echo '$(srcdir)/'`server_store.cpp
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/x3_ssh-server_store.Tpo $(DEPDIR)/x3_ssh-server_store.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='server_store.cpp' object='x3_ssh-server_store.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -c -o x3_ssh-server_store.o `test -f 'server_store.cpp' || echo '$(srcdir)/'`server_store.cpp
x3_ssh-server_store.obj: server_store.cpp
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -MT x3_ssh-server_store.obj -MD -MP -MF $(DEPDIR)/x3_ssh-server_store.Tpo -c -o x3_ssh-server_store.obj `if test -f 'server_store.cpp'; then $(CYGPATH_W) 'server_store.cpp'; else $(CYGPATH_W) '$(srcdir)/server_store.cpp'; fi`
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/x3_ssh-server_store.Tpo $(DEPDIR)/x3_ssh-server_store.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='server_store.cpp' object='x3_ssh-server_store.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -c -o x3_ssh-server_store.obj `if test -f 'server_store.cpp'; then $(CYGPATH_W) 'server_store.cpp'; else $(CYGPATH_W) '$(srcdir)/server_store.cpp'; fi`
x3_ssh-ssh_client.o: ssh_client.cpp
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -MT x3_ssh-ssh_client.o -MD -MP -MF $(DEPDIR)/x3_ssh-ssh_client.Tpo -c -o x3_ssh-ssh_client.o `test -f 'ssh_client.cpp' || echo '$(srcdir)/'`ssh_client.cpp
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/x3_ssh-ssh_client.Tpo $(DEPDIR)/x3_ssh-ssh_client.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='ssh_client.cpp' object='x3_ssh-ssh_client.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -c -o x3_ssh-ssh_client.o `test -f 'ssh_client.cpp' || echo '$(srcdir)/'`ssh_client.cpp
x3_ssh-ssh_client.obj: ssh_client.cpp
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -MT x3_ssh-ssh_client.obj -MD -MP -MF $(DEPDIR)/x3_ssh-ssh_client.Tpo -c -o x3_ssh-ssh_client.obj `if test -f 'ssh_client.cpp'; then $(CYGPATH_W) 'ssh_client.cpp'; else $(CYGPATH_W) '$(srcdir)/ssh_client.cpp'; fi`
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/x3_ssh-ssh_client.Tpo $(DEPDIR)/x3_ssh-ssh_client.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='ssh_client.cpp' object='x3_ssh-ssh_client.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -c -o x3_ssh-ssh_client.obj `if test -f 'ssh_client.cpp'; then $(CYGPATH_W) 'ssh_client.cpp'; else $(CYGPATH_W) '$(srcdir)/ssh_client.cpp'; fi`
x3_ssh-key_store.o: key_store.cpp
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -MT x3_ssh-key_store.o -MD -MP -MF $(DEPDIR)/x3_ssh-key_store.Tpo -c -o x3_ssh-key_store.o `test -f 'key_store.cpp' || echo '$(srcdir)/'`key_store.cpp
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/x3_ssh-key_store.Tpo $(DEPDIR)/x3_ssh-key_store.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='key_store.cpp' object='x3_ssh-key_store.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -c -o x3_ssh-key_store.o `test -f 'key_store.cpp' || echo '$(srcdir)/'`key_store.cpp
x3_ssh-key_store.obj: key_store.cpp
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -MT x3_ssh-key_store.obj -MD -MP -MF $(DEPDIR)/x3_ssh-key_store.Tpo -c -o x3_ssh-key_store.obj `if test -f 'key_store.cpp'; then $(CYGPATH_W) 'key_store.cpp'; else $(CYGPATH_W) '$(srcdir)/key_store.cpp'; fi`
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/x3_ssh-key_store.Tpo $(DEPDIR)/x3_ssh-key_store.Po
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='key_store.cpp' object='x3_ssh-key_store.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(x3_ssh_CXXFLAGS) $(CXXFLAGS) -c -o x3_ssh-key_store.obj `if test -f 'key_store.cpp'; then $(CYGPATH_W) 'key_store.cpp'; else $(CYGPATH_W) '$(srcdir)/key_store.cpp'; fi`
install-dist_iconsDATA: $(dist_icons_DATA)
@$(NORMAL_INSTALL)
@list='$(dist_icons_DATA)'; test -n "$(iconsdir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(iconsdir)'"; \
$(MKDIR_P) "$(DESTDIR)$(iconsdir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(iconsdir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(iconsdir)" || exit $$?; \
done
uninstall-dist_iconsDATA:
@$(NORMAL_UNINSTALL)
@list='$(dist_icons_DATA)'; test -n "$(iconsdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
dir='$(DESTDIR)$(iconsdir)'; $(am__uninstall_files_from_dir)
ID: $(am__tagged_files)
$(am__define_uniq_tagged_files); mkid -fID $$unique
tags: tags-am
TAGS: tags
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
$(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: ctags-am
CTAGS: ctags
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
$(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
cscopelist: cscopelist-am
cscopelist-am: $(am__tagged_files)
list='$(am__tagged_files)'; \
case "$(srcdir)" in \
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
*) sdir=$(subdir)/$(srcdir) ;; \
esac; \
for i in $$list; do \
if test -f "$$i"; then \
echo "$(subdir)/$$i"; \
else \
echo "$$sdir/$$i"; \
fi; \
done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
distdir-am: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(PROGRAMS) $(DATA)
installdirs:
for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(iconsdir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-$(am__rm_f) $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
distclean: distclean-am
-rm -f ./$(DEPDIR)/x3_ssh-key_store.Po
-rm -f ./$(DEPDIR)/x3_ssh-main.Po
-rm -f ./$(DEPDIR)/x3_ssh-server_store.Po
-rm -f ./$(DEPDIR)/x3_ssh-ssh_client.Po
-rm -f ./$(DEPDIR)/x3_ssh-ssh_terminal.Po
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am: install-dist_iconsDATA
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am: install-binPROGRAMS
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/x3_ssh-key_store.Po
-rm -f ./$(DEPDIR)/x3_ssh-main.Po
-rm -f ./$(DEPDIR)/x3_ssh-server_store.Po
-rm -f ./$(DEPDIR)/x3_ssh-ssh_client.Po
-rm -f ./$(DEPDIR)/x3_ssh-ssh_terminal.Po
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-binPROGRAMS uninstall-dist_iconsDATA
.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \
clean-binPROGRAMS clean-generic cscopelist-am ctags ctags-am \
distclean distclean-compile distclean-generic distclean-tags \
distdir dvi dvi-am html html-am info info-am install \
install-am install-binPROGRAMS install-data install-data-am \
install-dist_iconsDATA install-dvi install-dvi-am install-exec \
install-exec-am install-html install-html-am install-info \
install-info-am install-man install-pdf install-pdf-am \
install-ps install-ps-am install-strip installcheck \
installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
uninstall-am uninstall-binPROGRAMS uninstall-dist_iconsDATA
.PRECIOUS: Makefile
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
# Tell GNU make to disable its built-in pattern rules.
%:: %,v
%:: RCS/%,v
%:: RCS/%
%:: s.%
%:: SCCS/s.%
+169 -34
View File
@@ -15,21 +15,36 @@ static void clear_container(GtkWidget* container) {
g_list_free(children);
}
static void refresh_server_list(GtkWidget* listbox, const std::vector<ServerConfig>& servers) {
static void refresh_server_list_widget(GtkWidget* listbox, const std::vector<ServerConfig>& servers) {
clear_container(listbox);
for (const auto& s : servers) {
std::string text = s.name + " | " + s.user + "@" + s.host + ":" + std::to_string(s.port);
if (s.use_key) text += " [key]";
GtkWidget* row = gtk_label_new(text.c_str());
gtk_widget_set_halign(row, GTK_ALIGN_START);
gtk_widget_set_margin_start(row, 8);
gtk_widget_set_margin_top(row, 4);
gtk_widget_set_margin_bottom(row, 4);
gtk_list_box_insert(GTK_LIST_BOX(listbox), row, -1);
GtkWidget* row_box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 2);
gtk_widget_set_margin_start(row_box, 8);
gtk_widget_set_margin_end(row_box, 8);
gtk_widget_set_margin_top(row_box, 6);
gtk_widget_set_margin_bottom(row_box, 6);
GtkWidget* name_label = gtk_label_new(s.name.c_str());
gtk_widget_set_halign(name_label, GTK_ALIGN_START);
gtk_label_set_ellipsize(GTK_LABEL(name_label), PANGO_ELLIPSIZE_END);
PangoAttrList* attrs = pango_attr_list_new();
pango_attr_list_insert(attrs, pango_attr_weight_new(PANGO_WEIGHT_BOLD));
gtk_label_set_attributes(GTK_LABEL(name_label), attrs);
pango_attr_list_unref(attrs);
gtk_box_pack_start(GTK_BOX(row_box), name_label, FALSE, FALSE, 0);
std::string detail = s.user + "@" + s.host + ":" + std::to_string(s.port);
if (s.use_key) detail += " [key]";
GtkWidget* detail_label = gtk_label_new(detail.c_str());
gtk_widget_set_halign(detail_label, GTK_ALIGN_START);
gtk_label_set_ellipsize(GTK_LABEL(detail_label), PANGO_ELLIPSIZE_END);
gtk_box_pack_start(GTK_BOX(row_box), detail_label, FALSE, FALSE, 0);
gtk_list_box_insert(GTK_LIST_BOX(listbox), row_box, -1);
}
}
static void refresh_key_list(GtkWidget* listbox, const std::vector<SshKey>& keys) {
static void refresh_key_list_widget(GtkWidget* listbox, const std::vector<SshKey>& keys) {
clear_container(listbox);
for (const auto& k : keys) {
std::string text = k.name + " | " + k.fingerprint;
@@ -47,7 +62,9 @@ static void refresh_key_list(GtkWidget* listbox, const std::vector<SshKey>& keys
SshClientWindow::SshClientWindow()
: window_(nullptr), notebook_(nullptr), statusbar_(nullptr),
server_combo_(nullptr), quick_entry_(nullptr),
user_entry_(nullptr), port_spin_(nullptr) {
user_entry_(nullptr), port_spin_(nullptr),
server_listbox_(nullptr), notif_revealer_(nullptr),
notif_label_(nullptr), notif_bar_(nullptr) {
build_ui();
}
@@ -81,15 +98,45 @@ void SshClientWindow::build_ui() {
}
}
GtkWidget* vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
gtk_container_add(GTK_CONTAINER(window_), vbox);
GtkWidget* main_vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
gtk_container_add(GTK_CONTAINER(window_), main_vbox);
/* ── notification bar (top, hidden by default) ── */
notif_bar_ = gtk_revealer_new();
gtk_revealer_set_transition_type(GTK_REVEALER(notif_bar_), GTK_REVEALER_TRANSITION_TYPE_SLIDE_DOWN);
gtk_revealer_set_reveal_child(GTK_REVEALER(notif_bar_), FALSE);
GtkWidget* notif_box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 8);
gtk_widget_set_margin_start(notif_box, 12);
gtk_widget_set_margin_end(notif_box, 12);
gtk_widget_set_margin_top(notif_box, 6);
gtk_widget_set_margin_bottom(notif_box, 6);
notif_label_ = gtk_label_new("");
gtk_widget_set_halign(notif_label_, GTK_ALIGN_START);
gtk_widget_set_hexpand(notif_label_, TRUE);
gtk_box_pack_start(GTK_BOX(notif_box), notif_label_, TRUE, TRUE, 0);
GtkWidget* notif_close = gtk_button_new_from_icon_name("window-close", GTK_ICON_SIZE_MENU);
gtk_widget_set_size_request(notif_close, 24, 24);
g_signal_connect(notif_close, "clicked", G_CALLBACK(+[](GtkWidget*, gpointer d) {
gtk_revealer_set_reveal_child(GTK_REVEALER(d), FALSE);
}), notif_bar_);
gtk_box_pack_end(GTK_BOX(notif_box), notif_close, FALSE, FALSE, 0);
gtk_container_add(GTK_CONTAINER(notif_bar_), notif_box);
/* colored background */
GtkCssProvider* css = gtk_css_provider_new();
gtk_css_provider_load_from_data(css, ".notif-ok { background: #2ecc71; color: #000; }"
".notif-err { background: #e74c3c; color: #fff; }", -1, nullptr);
GtkStyleContext* ctx = gtk_widget_get_style_context(notif_bar_);
gtk_style_context_add_provider(ctx, GTK_STYLE_PROVIDER(css), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
g_object_unref(css);
gtk_box_pack_start(GTK_BOX(main_vbox), notif_bar_, FALSE, FALSE, 0);
/* ── toolbar ── */
GtkWidget* toolbar = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 4);
gtk_widget_set_margin_start(toolbar, 6);
gtk_widget_set_margin_end(toolbar, 6);
gtk_widget_set_margin_top(toolbar, 4);
gtk_widget_set_margin_bottom(toolbar, 4);
gtk_box_pack_start(GTK_BOX(vbox), toolbar, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(main_vbox), toolbar, FALSE, FALSE, 0);
server_combo_ = gtk_combo_box_text_new();
gtk_combo_box_set_wrap_width(GTK_COMBO_BOX(server_combo_), 0);
@@ -115,20 +162,72 @@ void SshClientWindow::build_ui() {
gtk_box_pack_start(GTK_BOX(toolbar), make_button("+ Tab", G_CALLBACK(on_new_tab), this), FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(toolbar), make_button("Close Tab", G_CALLBACK(on_close_tab), this), FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(toolbar), make_button("Disconnect", G_CALLBACK(on_disconnect), this), FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(toolbar), make_button("Servers", G_CALLBACK(on_manage_servers), this), FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(toolbar), make_button("Keys", G_CALLBACK(on_manage_keys), this), FALSE, FALSE, 0);
update_server_combo();
GtkWidget* sep = gtk_separator_new(GTK_ORIENTATION_HORIZONTAL);
gtk_box_pack_start(GTK_BOX(vbox), sep, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(main_vbox), sep, FALSE, FALSE, 0);
/* ── paned: sidebar | notebook ── */
GtkWidget* paned = gtk_paned_new(GTK_ORIENTATION_HORIZONTAL);
gtk_box_pack_start(GTK_BOX(main_vbox), paned, TRUE, TRUE, 0);
/* ── sidebar: server list ── */
GtkWidget* sidebar = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
gtk_paned_pack1(GTK_PANED(paned), sidebar, FALSE, FALSE);
gtk_widget_set_size_request(sidebar, 220, -1);
GtkWidget* sidebar_header = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 6);
gtk_widget_set_margin_start(sidebar_header, 8);
gtk_widget_set_margin_end(sidebar_header, 4);
gtk_widget_set_margin_top(sidebar_header, 6);
gtk_widget_set_margin_bottom(sidebar_header, 6);
GtkWidget* sidebar_title = gtk_label_new(nullptr);
gtk_label_set_markup(GTK_LABEL(sidebar_title), "<b>Servers</b>");
gtk_box_pack_start(GTK_BOX(sidebar_header), sidebar_title, TRUE, TRUE, 0);
GtkWidget* add_srv_btn = gtk_button_new_from_icon_name("list-add", GTK_ICON_SIZE_MENU);
gtk_widget_set_size_request(add_srv_btn, 28, 28);
g_signal_connect(add_srv_btn, "clicked", G_CALLBACK(on_add_server), this);
gtk_box_pack_end(GTK_BOX(sidebar_header), add_srv_btn, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(sidebar), sidebar_header, FALSE, FALSE, 0);
GtkWidget* sidebar_sep = gtk_separator_new(GTK_ORIENTATION_HORIZONTAL);
gtk_box_pack_start(GTK_BOX(sidebar), sidebar_sep, FALSE, FALSE, 0);
GtkWidget* scrolled = gtk_scrolled_window_new(nullptr, nullptr);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
server_listbox_ = gtk_list_box_new();
gtk_list_box_set_selection_mode(GTK_LIST_BOX(server_listbox_), GTK_SELECTION_SINGLE);
g_signal_connect(server_listbox_, "row-activated", G_CALLBACK(on_server_row_activated), this);
gtk_container_add(GTK_CONTAINER(scrolled), server_listbox_);
gtk_box_pack_start(GTK_BOX(sidebar), scrolled, TRUE, TRUE, 0);
update_server_list();
/* ── notebook for terminals ── */
notebook_ = gtk_notebook_new();
gtk_notebook_set_scrollable(GTK_NOTEBOOK(notebook_), TRUE);
gtk_box_pack_start(GTK_BOX(vbox), notebook_, TRUE, TRUE, 0);
gtk_paned_pack2(GTK_PANED(paned), notebook_, TRUE, TRUE);
/* ── statusbar ── */
statusbar_ = gtk_statusbar_new();
gtk_box_pack_end(GTK_BOX(vbox), statusbar_, FALSE, FALSE, 0);
gtk_box_pack_end(GTK_BOX(main_vbox), statusbar_, FALSE, FALSE, 0);
}
void SshClientWindow::show_notification(const std::string& msg, bool is_error) {
gtk_label_set_text(GTK_LABEL(notif_label_), msg.c_str());
GtkStyleContext* ctx = gtk_widget_get_style_context(notif_bar_);
gtk_style_context_remove_class(ctx, "notif-ok");
gtk_style_context_remove_class(ctx, "notif-err");
gtk_style_context_add_class(ctx, is_error ? "notif-err" : "notif-ok");
gtk_revealer_set_reveal_child(GTK_REVEALER(notif_bar_), TRUE);
/* auto-hide after 4 seconds */
g_timeout_add(4000, [](gpointer data) -> gboolean {
gtk_revealer_set_reveal_child(GTK_REVEALER(data), FALSE);
return G_SOURCE_REMOVE;
}, notif_bar_);
}
void SshClientWindow::update_server_combo() {
@@ -141,6 +240,11 @@ void SshClientWindow::update_server_combo() {
gtk_combo_box_set_active(GTK_COMBO_BOX(server_combo_), 0);
}
void SshClientWindow::update_server_list() {
refresh_server_list_widget(server_listbox_, server_store_.servers());
update_server_combo();
}
void SshClientWindow::update_status(const std::string& msg) {
if (!statusbar_) return;
guint ctx_id = gtk_statusbar_get_context_id(GTK_STATUSBAR(statusbar_), "main");
@@ -175,7 +279,6 @@ void SshClientWindow::close_tab_at(int idx) {
GtkWidget* page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook_), idx);
if (!page) return;
/* Find and disconnect the terminal first, before removing from notebook */
SshTerminal* found = nullptr;
for (auto it = terminals_.begin(); it != terminals_.end(); ++it) {
if ((*it)->widget() == page) {
@@ -190,7 +293,6 @@ void SshClientWindow::close_tab_at(int idx) {
delete found;
}
/* Now safe to remove page — no page-removed callback will cause issues */
gtk_notebook_remove_page(GTK_NOTEBOOK(notebook_), idx);
}
@@ -202,6 +304,7 @@ void SshClientWindow::disconnect() {
if (t->widget() == page) {
t->disconnect();
update_status("Disconnected");
show_notification("Server disconnected");
return;
}
}
@@ -229,6 +332,7 @@ void SshClientWindow::connect_to_server(const std::string& host, int port,
bool ok = term->connect(host, port, user, keyfile, password);
if (!ok) {
update_status("Failed to connect to " + host);
show_notification("Failed to connect to " + host, true);
for (auto it = terminals_.begin(); it != terminals_.end(); ++it) {
if (*it == term) { terminals_.erase(it); break; }
}
@@ -236,6 +340,7 @@ void SshClientWindow::connect_to_server(const std::string& host, int port,
gtk_notebook_remove_page(GTK_NOTEBOOK(notebook_), idx);
} else {
update_status("Connected to " + user + "@" + host);
show_notification("Server connected: " + user + "@" + host + ":" + std::to_string(port));
}
}
@@ -267,6 +372,28 @@ void SshClientWindow::on_quick_connect(GtkWidget*, gpointer d) {
self->show_password_dialog(host, port, u, "", host);
}
/* ─── server row activated ────────────────────────────────── */
void SshClientWindow::on_server_row_activated(GtkListBox*, GtkListBoxRow* row, gpointer d) {
auto* self = static_cast<SshClientWindow*>(d);
int idx = gtk_list_box_row_get_index(row);
if (idx < 0 || idx >= (int)self->server_store_.servers().size()) return;
const auto& s = self->server_store_.servers()[idx];
if (s.use_key && !s.keyfile.empty()) {
self->connect_to_server(s.host, s.port, s.user, s.keyfile, "", s.name);
} else {
self->show_password_dialog(s.host, s.port, s.user, s.keyfile, s.name);
}
}
/* ─── add server button ───────────────────────────────────── */
void SshClientWindow::on_add_server(GtkWidget*, gpointer d) {
auto* self = static_cast<SshClientWindow*>(d);
self->show_server_dialog(-1);
}
/* ─── password dialog ─────────────────────────────────────── */
void SshClientWindow::show_password_dialog(const std::string& host, int port,
@@ -407,7 +534,8 @@ void SshClientWindow::show_server_dialog(int edit_index) {
if (!s.name.empty() && !s.host.empty() && !s.user.empty()) {
if (editing) server_store_.update(edit_index, s);
else server_store_.add(s);
update_server_combo();
update_server_list();
show_notification(editing ? "Server updated: " + s.name : "Server saved: " + s.name);
}
}
gtk_widget_destroy(dialog);
@@ -438,7 +566,7 @@ void SshClientWindow::show_key_dialog() {
gtk_container_add(GTK_CONTAINER(scrolled), listbox);
gtk_box_pack_start(GTK_BOX(vbox), scrolled, TRUE, TRUE, 0);
refresh_key_list(listbox, key_store_.keys());
refresh_key_list_widget(listbox, key_store_.keys());
GtkWidget* hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 6);
GtkWidget* gen_btn = gtk_button_new_with_label("Generate New Key");
@@ -484,8 +612,9 @@ void SshClientWindow::show_key_dialog() {
int bits = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(bs));
if (name && *name) {
c->self->key_store_.generate_keypair(name, bits);
c->self->update_server_combo();
refresh_key_list(c->listbox, c->self->key_store_.keys());
c->self->update_server_list();
refresh_key_list_widget(c->listbox, c->self->key_store_.keys());
c->self->show_notification("Key generated: " + std::string(name));
}
}
gtk_widget_destroy(dlg);
@@ -529,7 +658,8 @@ void SshClientWindow::show_key_dialog() {
const char* name = gtk_entry_get_text(GTK_ENTRY(ne));
if (name && *name) {
c->self->key_store_.import_key(name, path);
refresh_key_list(c->listbox, c->self->key_store_.keys());
refresh_key_list_widget(c->listbox, c->self->key_store_.keys());
c->self->show_notification("Key imported: " + std::string(name));
}
}
gtk_widget_destroy(dlg);
@@ -545,8 +675,10 @@ void SshClientWindow::show_key_dialog() {
if (!row) return;
int idx = gtk_list_box_row_get_index(row);
if (idx >= 0 && idx < (int)c->self->key_store_.keys().size()) {
std::string name = c->self->key_store_.keys()[idx].name;
c->self->key_store_.remove(idx);
refresh_key_list(c->listbox, c->self->key_store_.keys());
refresh_key_list_widget(c->listbox, c->self->key_store_.keys());
c->self->show_notification("Key deleted: " + name);
}
}), ctx);
@@ -585,7 +717,7 @@ void SshClientWindow::on_manage_servers(GtkWidget*, gpointer d) {
gtk_container_add(GTK_CONTAINER(scrolled), listbox);
gtk_box_pack_start(GTK_BOX(vbox), scrolled, TRUE, TRUE, 0);
refresh_server_list(listbox, self->server_store_.servers());
refresh_server_list_widget(listbox, self->server_store_.servers());
GtkWidget* hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 6);
GtkWidget* add_btn = gtk_button_new_with_label("Add");
@@ -601,8 +733,8 @@ void SshClientWindow::on_manage_servers(GtkWidget*, gpointer d) {
g_signal_connect(add_btn, "clicked", G_CALLBACK(+[](GtkWidget*, gpointer d) {
auto* c = static_cast<SrvCtx*>(d);
c->self->show_server_dialog(-1);
c->self->update_server_combo();
refresh_server_list(c->listbox, c->self->server_store_.servers());
c->self->update_server_list();
refresh_server_list_widget(c->listbox, c->self->server_store_.servers());
}), ctx);
g_signal_connect(edit_btn, "clicked", G_CALLBACK(+[](GtkWidget*, gpointer d) {
@@ -612,8 +744,8 @@ void SshClientWindow::on_manage_servers(GtkWidget*, gpointer d) {
int idx = gtk_list_box_row_get_index(row);
if (idx >= 0 && idx < (int)c->self->server_store_.servers().size()) {
c->self->show_server_dialog(idx);
c->self->update_server_combo();
refresh_server_list(c->listbox, c->self->server_store_.servers());
c->self->update_server_list();
refresh_server_list_widget(c->listbox, c->self->server_store_.servers());
}
}), ctx);
@@ -623,9 +755,11 @@ void SshClientWindow::on_manage_servers(GtkWidget*, gpointer d) {
if (!row) return;
int idx = gtk_list_box_row_get_index(row);
if (idx >= 0 && idx < (int)c->self->server_store_.servers().size()) {
std::string name = c->self->server_store_.servers()[idx].name;
c->self->server_store_.remove(idx);
c->self->update_server_combo();
refresh_server_list(c->listbox, c->self->server_store_.servers());
c->self->update_server_list();
refresh_server_list_widget(c->listbox, c->self->server_store_.servers());
c->self->show_notification("Server removed: " + name);
}
}), ctx);
@@ -634,7 +768,7 @@ void SshClientWindow::on_manage_servers(GtkWidget*, gpointer d) {
gtk_dialog_run(GTK_DIALOG(dialog));
delete ctx;
gtk_widget_destroy(dialog);
self->update_server_combo();
self->update_server_list();
}
/* ─── callbacks ───────────────────────────────────────────── */
@@ -664,5 +798,6 @@ void SshClientWindow::on_manage_keys(GtkWidget*, gpointer d) {
void SshClientWindow::run() {
gtk_widget_show_all(window_);
gtk_revealer_set_reveal_child(GTK_REVEALER(notif_bar_), FALSE);
gtk_main();
}
+8
View File
@@ -29,7 +29,9 @@ private:
void show_password_dialog(const std::string& host, int port, const std::string& user,
const std::string& keyfile, const std::string& name);
void update_server_combo();
void update_server_list();
void update_status(const std::string& msg);
void show_notification(const std::string& msg, bool is_error = false);
static void on_new_tab(GtkWidget* w, gpointer d);
static void on_close_tab(GtkWidget* w, gpointer d);
@@ -38,6 +40,8 @@ private:
static void on_manage_servers(GtkWidget* w, gpointer d);
static void on_manage_keys(GtkWidget* w, gpointer d);
static void on_quick_connect(GtkWidget* w, gpointer d);
static void on_add_server(GtkWidget* w, gpointer d);
static void on_server_row_activated(GtkListBox* list, GtkListBoxRow* row, gpointer d);
GtkWidget* window_;
GtkWidget* notebook_;
@@ -46,6 +50,10 @@ private:
GtkWidget* quick_entry_;
GtkWidget* user_entry_;
GtkWidget* port_spin_;
GtkWidget* server_listbox_;
GtkWidget* notif_revealer_;
GtkWidget* notif_label_;
GtkWidget* notif_bar_;
ServerStore server_store_;
KeyStore key_store_;