diff options
Diffstat (limited to 'kioslave/fish')
-rw-r--r-- | kioslave/fish/CMakeLists.txt | 45 | ||||
-rw-r--r-- | kioslave/fish/ConfigureChecks.cmake | 32 | ||||
-rw-r--r-- | kioslave/fish/genfishcode.cmake | 8 | ||||
-rwxr-xr-x | kioslave/fish/genfishcode.pl | 43 |
4 files changed, 128 insertions, 0 deletions
diff --git a/kioslave/fish/CMakeLists.txt b/kioslave/fish/CMakeLists.txt new file mode 100644 index 000000000..77049ce8b --- /dev/null +++ b/kioslave/fish/CMakeLists.txt @@ -0,0 +1,45 @@ +################################################# +# +# (C) 2010-2011 Serghei Amelian +# serghei (DOT) amelian (AT) gmail.com +# +# Improvements and feedback are welcome +# +# This file is released under GPL >= 2 +# +################################################# + +include( ConfigureChecks.cmake ) + +include_directories( + ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_BINARY_DIR} + ${TDE_INCLUDE_DIR} + ${TQT_INCLUDE_DIRS} +) + +link_directories( + ${TQT_LIBRARY_DIRS} +) + + +##### other data ################################ + +install( FILES fish.protocol nxfish.protocol DESTINATION ${SERVICES_INSTALL_DIR} ) + + +##### kio_fish (module) ######################### + +add_custom_command( OUTPUT fishcode.h + COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/genfishcode.pl ${CMAKE_CURRENT_SOURCE_DIR}/fish.pl > fishcode.h + DEPENDS fish.pl ) + +set_property( SOURCE fish.cpp APPEND PROPERTY OBJECT_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/fishcode.h ) + +set( target kio_fish ) + +tde_add_kpart( ${target} AUTOMOC + SOURCES fish.cpp + LINK kio-shared util + DESTINATION ${PLUGIN_INSTALL_DIR} +) diff --git a/kioslave/fish/ConfigureChecks.cmake b/kioslave/fish/ConfigureChecks.cmake new file mode 100644 index 000000000..46ea1c181 --- /dev/null +++ b/kioslave/fish/ConfigureChecks.cmake @@ -0,0 +1,32 @@ +################################################# +# +# (C) 2010-2011 Serghei Amelian +# serghei (DOT) amelian (AT) gmail.com +# +# Improvements and feedback are welcome +# +# This file is released under GPL >= 2 +# +################################################# + +check_include_file( stropts.h HAVE_STROPTS ) +check_include_file( libutil.h HAVE_LIBUTIL_H ) +check_include_file( util.h HAVE_UTIL_H ) +check_include_file( pty.h HAVE_PTY_H ) + + +tde_save( CMAKE_REQUIRED_LIBRARIES ) +set( CMAKE_REQUIRED_LIBRARIES util ) + +check_c_source_runs(" + #include <pty.h> + int main(int argc, char* argv) { + int master_fd, slave_fd; + int result; + result = openpty(&master_fd, &slave_fd, 0, 0, 0); + return 0; + }" + HAVE_OPENPTY +) + +tde_restore( CMAKE_REQUIRED_LIBRARIES ) diff --git a/kioslave/fish/genfishcode.cmake b/kioslave/fish/genfishcode.cmake new file mode 100644 index 000000000..9b35a51ec --- /dev/null +++ b/kioslave/fish/genfishcode.cmake @@ -0,0 +1,8 @@ +#!/bin/sh + +SUM=$( @MD5SUM@ @CMAKE_CURRENT_SOURCE_DIR@/fish.pl | cut -d ' ' @MD5SUM_CUT@ ) + +#echo "#define CHECKSUM "\"$SUM\"" > fishcode.h +#echo 'static const char *fishCode(' >> fishcode.h +#sed -e 's/\\/\\\\/g;s/"/\\"/g;s/^[ ]*/"/;/^"# /d;s/[ ]*$$/\\n"/;/^"\\n"$$/d;s/{CHECKSUM}/'$$SUM'/;' @CMAKE_CURRENT_SOURCE_DIR@/fish.pl >> fishcode.h +#echo ');' >> fishcode.h diff --git a/kioslave/fish/genfishcode.pl b/kioslave/fish/genfishcode.pl new file mode 100755 index 000000000..60dfff8de --- /dev/null +++ b/kioslave/fish/genfishcode.pl @@ -0,0 +1,43 @@ +#!/usr/bin/perl +use strict; +use warnings; + +use Digest::MD5; + +sub md5sum { + my $filename = shift; + my $digest; + eval { + open( my $FILE, '<', $filename ) + or die "Can't find file $filename\n"; + my $ctx = Digest::MD5->new; + $ctx->addfile($FILE); + $digest = $ctx->hexdigest; + close($FILE); + }; + if ($@) { + warn $@; + } + return $digest; +} + +my $file = $ARGV[0] or die "Missing filename argument"; + +my $fish_md5 = md5sum($file) + or die "Couldn't compute MD5 for some reason\n"; +print qq{#define CHECKSUM "$fish_md5"\n}; +print qq{static const char *fishCode(\n}; + +open( my $FISH, "<", "$file" ) or die "Can't open $file\n"; +while (<$FISH>) { + chomp; + s|\\|\\\\|g; + s|"|\\"|g; + s/^\s*/"/; + next if /^"# /; + s/\s*$/\\n"/; + next if /^"\\n"$/; + print "$_\n"; +} +close($FISH); +print qq{);\n}; |