diff --git a/ChangeLog b/ChangeLog index fa7ac580..403ccae7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,6 @@ +2018-11-01 Markus Gans + * Moved FTerm debug access methods to FTermDebugData + 2018-10-29 Markus Gans * FTerm is now a data member of FVTerm * Fix FListBox prevListItem() diff --git a/README.md b/README.md index d8857374..762234a7 100644 --- a/README.md +++ b/README.md @@ -248,6 +248,12 @@ License ------- GNU Lesser General Public License Version 3 +Frequently Asked Questions +-------------------------- +If you have any problems, please read the +[FAQ](doc/faq.md#frequently-asked-questions) +before you give up. + Please send bug reports to -------------------------- https://github.com/gansm/finalcut/issues diff --git a/autogen.sh b/autogen.sh index f47cec46..50027620 100755 --- a/autogen.sh +++ b/autogen.sh @@ -3,7 +3,7 @@ if test "$1" = "update" then # Update generated configuration files - if which autoreconf >/dev/null + if command -v autoreconf >/dev/null then autoreconf --force --install --verbose --warnings=all else diff --git a/build.sh b/build.sh index 229e1bbe..ae0c9e42 100755 --- a/build.sh +++ b/build.sh @@ -30,7 +30,7 @@ if [ -n "$1" ] then if [ ! -f ./configure ] then - if which autoreconf >/dev/null + if command -v autoreconf >/dev/null then autoreconf --install --force else diff --git a/doc/console_codes-manual.sh b/doc/console_codes-manual.sh index da084d69..08d9c904 100755 --- a/doc/console_codes-manual.sh +++ b/doc/console_codes-manual.sh @@ -2,6 +2,6 @@ # set the xterm window title TERMTITLE="man 4 console_codes" -echo -ne "\033]0;${TERMTITLE}\007" +echo -ne "\\033]0;${TERMTITLE}\\007" man 4 console_codes diff --git a/doc/console_ioctl-manual.sh b/doc/console_ioctl-manual.sh index 73d3141a..dae34282 100755 --- a/doc/console_ioctl-manual.sh +++ b/doc/console_ioctl-manual.sh @@ -2,6 +2,6 @@ # set the xterm window title TERMTITLE="man 4 console_ioctl" -echo -ne "\033]0;${TERMTITLE}\007" +echo -ne "\\033]0;${TERMTITLE}\\007" man 4 console_ioctl diff --git a/doc/terminfo-capabilities.sh b/doc/terminfo-capabilities.sh index 09e455fe..2f19f964 100755 --- a/doc/terminfo-capabilities.sh +++ b/doc/terminfo-capabilities.sh @@ -2,6 +2,6 @@ # set the xterm window title TERMTITLE="infocmp: $TERM" -echo -ne "\033]0;${TERMTITLE}\007" +echo -ne "\\033]0;${TERMTITLE}\\007" infocmp -x | less diff --git a/doc/terminfo-manual.sh b/doc/terminfo-manual.sh index 67547c33..e5e842df 100755 --- a/doc/terminfo-manual.sh +++ b/doc/terminfo-manual.sh @@ -2,7 +2,7 @@ # set the xterm window title TERMTITLE="man 5 terminfo" -echo -ne "\033]0;${TERMTITLE}\007" +echo -ne "\\033]0;${TERMTITLE}\\007" man 5 terminfo diff --git a/examples/termcap.cpp b/examples/termcap.cpp index f82fd3a1..37b7452f 100644 --- a/examples/termcap.cpp +++ b/examples/termcap.cpp @@ -225,21 +225,22 @@ void tcapString (const std::string& name, const char cap_str[]) #if DEBUG void debug (finalcut::FApplication& TermApp) { - finalcut::FTerm& fterm = TermApp.getFTerm(); - const finalcut::FString& ab_s = fterm.getAnswerbackString(); - const finalcut::FString& sec_da = fterm.getSecDAString(); + finalcut::FTermDebugData& debug_data = TermApp.getFTermDebugData(); + const finalcut::FString& ab_s = debug_data.getAnswerbackString(); + const finalcut::FString& sec_da = debug_data.getSecDAString(); std::cout << "\n.------------------- debug -------------------\r\n"; + #if defined(__linux__) std::cout << "| Framebuffer bpp: " - << fterm.getFramebufferBpp() << "\r\n"; + << debug_data.getFramebufferBpp() << "\r\n"; #endif std::cout << "| after init_256colorTerminal(): " - << fterm.getTermType_256color() << "\r\n"; + << debug_data.getTermType_256color() << "\r\n"; std::cout << "| after parseAnswerbackMsg(): " - << fterm.getTermType_Answerback() << "\r\n"; + << debug_data.getTermType_Answerback() << "\r\n"; std::cout << "| after parseSecDA(): " - << fterm.getTermType_SecDA() << "\r\n"; + << debug_data.getTermType_SecDA() << "\r\n"; if ( ! ab_s.isEmpty() ) tcapString ("| The answerback String", ab_s); @@ -248,7 +249,6 @@ void debug (finalcut::FApplication& TermApp) tcapString ("| The SecDA String", sec_da); std::cout << "`------------------- debug -------------------\r\n"; - } #else void debug (finalcut::FApplication&) diff --git a/src/fterm.cpp b/src/fterm.cpp index e00a4ac1..75e6ecc3 100644 --- a/src/fterm.cpp +++ b/src/fterm.cpp @@ -59,6 +59,10 @@ FMouseControl* FTerm::mouse = 0; FTermOpenBSD* FTerm::openbsd = 0; #endif +#if DEBUG + FTermDebugData* FTerm::debug_data = 0; +#endif + //---------------------------------------------------------------------- // class FTerm @@ -888,6 +892,11 @@ void FTerm::init_global_values (bool disable_alt_screen) if ( ! init_values.terminal_detection ) term_detection->setTerminalDetection (false); + +#if DEBUG + debug_data->setFTermDetection(term_detection); + debug_data->setFTermData(data); +#endif } //---------------------------------------------------------------------- @@ -1090,7 +1099,7 @@ void FTerm::init_termcap() // Initialize the terminal capabilities FTermcap termcap; - termcap.setTermData(data); + termcap.setFTermData(data); termcap.setFTermDetection(term_detection); termcap.init(); @@ -1104,7 +1113,7 @@ void FTerm::init_quirks() // Initialize terminal quirks FTermcapQuirks quirks; - quirks.setTermData (data); + quirks.setFTermData (data); quirks.setFTermDetection (term_detection); quirks.terminalFixup(); // Fix terminal quirks } @@ -1681,6 +1690,10 @@ inline void FTerm::allocationValues() #elif defined(__NetBSD__) || defined(__OpenBSD__) openbsd = new FTermOpenBSD(); #endif + +#if DEBUG + debug_data = new FTermDebugData(); +#endif } catch (const std::bad_alloc& ex) { @@ -1692,6 +1705,11 @@ inline void FTerm::allocationValues() //---------------------------------------------------------------------- inline void FTerm::deallocationValues() { +#if DEBUG + if ( debug_data ) + delete debug_data; +#endif + #if defined(__NetBSD__) || defined(__OpenBSD__) if ( openbsd ) delete openbsd; @@ -1750,7 +1768,7 @@ void FTerm::init (bool disable_alt_screen) initBaudRate(); // Terminal detection - term_detection->setTermData(data); + term_detection->setFTermData(data); term_detection->detect(); setTermType (term_detection->getTermType()); diff --git a/src/ftermcap.cpp b/src/ftermcap.cpp index e35b62b9..728222b3 100644 --- a/src/ftermcap.cpp +++ b/src/ftermcap.cpp @@ -65,7 +65,7 @@ FTermcap::~FTermcap() // destructor // public methods of FTermcap //---------------------------------------------------------------------- -void FTermcap::setTermData (FTermData* data) +void FTermcap::setFTermData (FTermData* data) { fterm_data = data; } diff --git a/src/ftermcapquirks.cpp b/src/ftermcapquirks.cpp index 5ea603f8..87d239e3 100644 --- a/src/ftermcapquirks.cpp +++ b/src/ftermcapquirks.cpp @@ -49,7 +49,7 @@ FTermcapQuirks::~FTermcapQuirks() // destructor // public methods of FTermcapQuirks //---------------------------------------------------------------------- -void FTermcapQuirks::setTermData (FTermData* data) +void FTermcapQuirks::setFTermData (FTermData* data) { fterm_data = data; } diff --git a/src/ftermdetection.cpp b/src/ftermdetection.cpp index 55925af3..8ee741c8 100644 --- a/src/ftermdetection.cpp +++ b/src/ftermdetection.cpp @@ -89,7 +89,7 @@ FTermDetection::~FTermDetection() // destructor // public methods of FTermDetection //---------------------------------------------------------------------- -void FTermDetection::setTermData (FTermData* data) +void FTermDetection::setFTermData (FTermData* data) { fterm_data = data; } diff --git a/src/include/final/fterm.h b/src/include/final/fterm.h index 91f0ba2e..023b8838 100644 --- a/src/include/final/fterm.h +++ b/src/include/final/fterm.h @@ -143,6 +143,9 @@ namespace finalcut { +// class forward declaration +class FTermDebugData; + //---------------------------------------------------------------------- // class FTerm //---------------------------------------------------------------------- @@ -181,13 +184,8 @@ class FTerm initializationValues& getInitValues(); #if DEBUG - static const FString& getAnswerbackString(); - static const FString& getSecDAString(); - static const char* getTermType_256color(); - static const char* getTermType_Answerback(); - static const char* getTermType_SecDA(); - static int getFramebufferBpp(); -#endif // DEBUG + FTermDebugData& getFTermDebugData(); +#endif // Inquiries static bool isNormal (charData*&); @@ -410,6 +408,10 @@ class FTerm #elif defined(__NetBSD__) || defined(__OpenBSD__) static FTermOpenBSD* openbsd; #endif + +#if DEBUG + static FTermDebugData* debug_data; +#endif }; #pragma pack(pop) @@ -453,28 +455,8 @@ inline FTerm::initializationValues& FTerm::getInitValues() #if DEBUG //---------------------------------------------------------------------- -inline const FString& FTerm::getAnswerbackString() -{ return term_detection->getAnswerbackString(); } - -//---------------------------------------------------------------------- -inline const FString& FTerm::getSecDAString() -{ return term_detection->getSecDAString(); } - -//---------------------------------------------------------------------- -inline const char* FTerm::getTermType_256color() -{ return term_detection->getTermType_256color(); } - -//---------------------------------------------------------------------- -inline const char* FTerm::getTermType_Answerback() -{ return term_detection->getTermType_Answerback(); } - -//---------------------------------------------------------------------- -inline const char* FTerm::getTermType_SecDA() -{ return term_detection->getTermType_SecDA(); } - -//---------------------------------------------------------------------- -inline int FTerm::getFramebufferBpp() -{ return data->getFramebufferBpp(); } +inline FTermDebugData& FTerm::getFTermDebugData() +{ return *debug_data; } #endif // DEBUG //---------------------------------------------------------------------- @@ -598,6 +580,68 @@ inline void FTerm::changeTermSizeFinished() { data->setTermResized(false); } +#if DEBUG +//---------------------------------------------------------------------- +// class FTermDebugData +//---------------------------------------------------------------------- + +class FTermDebugData +{ + public: + // Accessors + const FString& getAnswerbackString(); + const FString& getSecDAString(); + const char* getTermType_256color(); + const char* getTermType_Answerback(); + const char* getTermType_SecDA(); +#if defined(__linux__) + int getFramebufferBpp(); +#endif + // Mutators + void setFTermDetection (FTermDetection*); + void setFTermData (FTermData*); + + private: + FTermDetection* term_detection; + FTermData* data; +}; + +//---------------------------------------------------------------------- +inline void FTermDebugData::setFTermDetection (FTermDetection* obj) +{ term_detection = obj; } + +//---------------------------------------------------------------------- +inline void FTermDebugData::setFTermData (FTermData* obj) +{ data = obj; } + +//---------------------------------------------------------------------- +inline const FString& FTermDebugData::getAnswerbackString() +{ return term_detection->getAnswerbackString(); } + +//---------------------------------------------------------------------- +inline const FString& FTermDebugData::getSecDAString() +{ return term_detection->getSecDAString(); } + +//---------------------------------------------------------------------- +inline const char* FTermDebugData::getTermType_256color() +{ return term_detection->getTermType_256color(); } + +//---------------------------------------------------------------------- +inline const char* FTermDebugData::getTermType_Answerback() +{ return term_detection->getTermType_Answerback(); } + +//---------------------------------------------------------------------- +inline const char* FTermDebugData::getTermType_SecDA() +{ return term_detection->getTermType_SecDA(); } + +//---------------------------------------------------------------------- +#if defined(__linux__) +inline int FTermDebugData::getFramebufferBpp() +{ return data->getFramebufferBpp(); } +#endif // defined(__linux__) + +#endif // DEBUG + } // namespace finalcut #endif // FTERM_H diff --git a/src/include/final/ftermcap.h b/src/include/final/ftermcap.h index 04f20a3a..1637f49c 100644 --- a/src/include/final/ftermcap.h +++ b/src/include/final/ftermcap.h @@ -101,7 +101,7 @@ class FTermcap } // Mutator - static void setTermData (FTermData*); + static void setFTermData (FTermData*); static void setFTermDetection (FTermDetection*); // Methods diff --git a/src/include/final/ftermcapquirks.h b/src/include/final/ftermcapquirks.h index 9d9b5e53..0870b26f 100644 --- a/src/include/final/ftermcapquirks.h +++ b/src/include/final/ftermcapquirks.h @@ -64,7 +64,7 @@ class FTermcapQuirks const char* getClassName() const; // Mutator - static void setTermData (FTermData*); + static void setFTermData (FTermData*); static void setFTermDetection (FTermDetection*); // Methods diff --git a/src/include/final/ftermdata.h b/src/include/final/ftermdata.h index 1efa370c..aa050ed4 100644 --- a/src/include/final/ftermdata.h +++ b/src/include/final/ftermdata.h @@ -386,7 +386,7 @@ inline void FTermData::setXtermTitle (const FString& title) { xterm_title = title; } //---------------------------------------------------------------------- -#if DEBUG +#if DEBUG && defined(__linux__) inline void FTermData::setFramebufferBpp (int bpp) { framebuffer_bpp = bpp; } #endif diff --git a/src/include/final/ftermdetection.h b/src/include/final/ftermdetection.h index 474ee08c..97cf6f54 100644 --- a/src/include/final/ftermdetection.h +++ b/src/include/final/ftermdetection.h @@ -153,7 +153,7 @@ class FTermDetection static void setScreenTerm (bool); static void setTmuxTerm (bool); static void setTerminalDetection (bool); - static void setTermData (FTermData*); + static void setFTermData (FTermData*); static void setTtyTypeFileName (char[]); // Methods diff --git a/src/include/final/fvterm.h b/src/include/final/fvterm.h index b7ebce7e..5ccef524 100644 --- a/src/include/final/fvterm.h +++ b/src/include/final/fvterm.h @@ -142,6 +142,9 @@ class FVTerm static char* getTermType(); static char* getTermFileName(); FTerm& getFTerm(); +#if DEBUG + FTermDebugData& getFTermDebugData(); +#endif // Mutators void setTermXY (int, int); @@ -644,6 +647,12 @@ inline char* FVTerm::getTermFileName() inline FTerm& FVTerm::getFTerm() { return *fterm; } +//---------------------------------------------------------------------- +#if DEBUG +inline FTermDebugData& FVTerm::getFTermDebugData() +{ return getFTerm().getFTermDebugData(); } +#endif + //---------------------------------------------------------------------- inline void FVTerm::hideCursor() { return hideCursor(true); }