⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 console.h

📁 cTorrent advanced 3.3.2。是对 CTorrent 的一个改进版本。这是目前的最新版。
💻 H
字号:
#include "def.h"#include <sys/types.h>  // fd_set#include <stdarg.h>#include <stdio.h>#if defined(USE_TERMIOS)#include <termios.h>#elif defined(USE_TERMIO)#include <termio.h>#elif defined(USE_SGTTY)#include <sgtty.h> #endif#include "rate.h"// Number of status line formats#define STATUSLINES 2// Output channel labels#define O_NCHANNELS 4  // number of output channels#define O_NORMAL    0#define O_INTERACT  1#define O_WARNING   2#define O_DEBUG     3#define O_INPUT     4  // not an output!  do not include in above count.class ConStream{ private:  FILE *m_stream;  char *m_name;  unsigned char m_newline:1;  unsigned char m_suspend:1;  unsigned char m_inputmode:1;  unsigned char m_filemode:1;  unsigned char m_restore:1;  unsigned char m_reserved:3;#if defined(USE_TERMIOS)  struct termios m_original;#elif defined(USE_TERMIO)  struct termio m_original;#elif defined(USE_SGTTY)  struct sgttyb m_original;#endif  void _newline();  int _convprintf(const char *format, va_list ap);  void Error(int sev, const char *message, ...); public:  ConStream();  ~ConStream();  void Close();  void Associate(FILE *stream, const char *name, int mode);  char *GetName() const { return m_name; }  int GetMode() const { return m_filemode ? 1 : 0; }  int Fileno() const { return m_stream ? fileno(m_stream) : -1; }  int GetNewline() const { return m_newline ? 1 : 0; }  void SyncNewline(ConStream *master) { m_newline = master->GetNewline(); }  void Suspend() { m_suspend = 1; }  void Resume() { m_suspend = 0; }  int IsSuspended() { return m_suspend ? 1 : 0; }  int SameDev(ConStream *master) const;  int GetInputMode() const { return m_inputmode; }  void SetInputMode(int keymode);  void PreserveMode();  void RestoreMode();  int IsTTY() const;  int Output(const char *message, va_list ap);  int Output_n(const char *message, va_list ap);  int Update(const char *message, va_list ap);  char *Input(char *field, size_t length);  int CharIn();  int Eof() const { return feof(m_stream); }};class Console{ private:  unsigned char m_live_idx:2;  unsigned char m_conmode:1;  unsigned char m_skip_status:1;  unsigned char m_status_last:1;  unsigned char m_reserved:3;  int m_status_format;  int m_oldfd;  int m_status_len;  typedef void (Console::*statuslinefn)(char buffer[], size_t length);  statuslinefn m_statusline[STATUSLINES];  Rate m_pre_dlrate, m_pre_ulrate;  ConStream m_stdout, m_stderr, m_stdin, m_off;  ConStream *m_streams[O_NCHANNELS+1];  int OpenNull(int nullfd, ConStream *stream, int sfd);  void SyncNewlines(int master);  int OperatorMenu(const char *param);  void ShowFiles();  void StatusLine0(char buffer[], size_t length);  void StatusLine1(char buffer[], size_t length); public:  Console();  ~Console();  int IntervalCheck(fd_set *rfdp, fd_set *wfdp);  void User(fd_set *rfdp, fd_set *wfdp, int *nready,    fd_set *rfdnextp, fd_set *wfdnextp);  void Status(int immediate);  void Print(const char *message, ...);  void Print_n(const char *message, ...);  void Update(const char *message, ...);  void Warning(int sev, const char *message, ...);  void Debug(const char *message, ...);  void Debug_n(const char *message, ...);  void Interact(const char *message, ...);  void Interact_n(const char *message, ...);  void InteractU(const char *message, ...);  char *Input(const char *prompt, char *field, size_t length);  char *GetChannel(int channel) const { return m_streams[channel]->GetName(); }  int ChangeChannel(int channel, const char *param, int notify = 1);  void cpu();  RETSIGTYPE Signal(int sig_no);  void Daemonize();};extern Console CONSOLE;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -