char *line_edition(char **env) { int (*keys_actions[15])(void); int ret; if (isatty(0) == 0) return (get_next_line(0)); if ((g_line = malloc(sizeof(t_line))) == NULL) return (print_and_return_ptr(NULL, "Allocation error.\n")); if ((ret = get_termcaps(env) == 1) || ret == -1 || (set_termcaps(1) == -1)) return (get_next_line(0)); g_line->pos = 0; g_line->cmd = NULL; signal(SIGINT, &free_line); init_actions(keys_actions); init_keys(); ret = loop_keys(keys_actions); if (set_termcaps(0) == -1) return (NULL); if (ret == 0) { if (line_ret() == -1) return (NULL); return (g_line->cmd); } return (NULL); }
DiscDetails::DiscDetails( SApplication *parent ) : SPage( tr("Disc Details") , parent ) { p = new DiscDetailsPrivate; p->spacer_widget = new QWidget(); p->spacer_widget->setSizePolicy( QSizePolicy::MinimumExpanding , QSizePolicy::MinimumExpanding ); p->slider = new SSliderWidget(); p->slider->setShowingAll( true ); p->slider->addWidget( p->spacer_widget ); p->toolbar = new QToolBar(); p->toolbar->setToolButtonStyle( Qt::ToolButtonTextBesideIcon ); p->toolbar->setStyleSheet( "QToolBar{ border-style:solid ; margin:0px }" ); p->scroll = new QScrollArea(); p->scroll->setWidget( p->slider ); p->scroll->setWidgetResizable( true ); p->scroll->setFrameShadow( QFrame::Plain ); p->scroll->setFrameShape( QFrame::NoFrame ); p->scroll->setHorizontalScrollBarPolicy( Qt::ScrollBarAlwaysOn ); p->scroll->setVerticalScrollBarPolicy( Qt::ScrollBarAlwaysOff ); p->scroll->viewport()->setAutoFillBackground( false ); p->layout = new QVBoxLayout( this ); //p->layout->addWidget( p->toolbar ); p->layout->addWidget( p->scroll ); p->layout->setContentsMargins( 1 , 1 , 1 , 1 ); p->layout->setSpacing( 1 ); init_actions(); setToolBar( p->toolbar ); setMinimumSize( QSize(720,350) ); }
static void create_action_list( void **state ) { action_list *ac_list = complete_action_list(); init_actions(); *state = ( void * ) ac_list; }
DJISDKNode::DJISDKNode(ros::NodeHandle& nh, ros::NodeHandle& nh_private) { init_publishers(nh); init_services(nh); init_actions(nh); init_parameters_and_activate(nh_private); }
MarkdownViewer::MarkdownViewer(QWidget *parent) #if MARKDOWN_VIEWER_USE_QTWEBKIT : QWebView(parent), #else :QWebEngineView(parent), #endif _preview_generator(new HtmlPreviewGenerator) { #if MARKDOWN_VIEWER_USE_QTWEBKIT page()->setLinkDelegationPolicy(QWebPage::DelegateAllLinks); settings()->setAttribute(QWebSettings::DeveloperExtrasEnabled, true); #else settings()->setAttribute(QWebEngineSettings::AutoLoadImages, true); settings()->setAttribute(QWebEngineSettings::JavascriptEnabled, true); settings()->setAttribute(QWebEngineSettings::LocalContentCanAccessFileUrls, true); settings()->setAttribute(QWebEngineSettings::LocalContentCanAccessRemoteUrls, true); settings()->setAttribute(QWebEngineSettings::LocalStorageEnabled, true); #endif init_actions(); init_popup_menu(); _base_url = QUrl::fromLocalFile(qApp->applicationDirPath()); // Setup preview connect(_preview_generator, SIGNAL(html_result_ready(QString)), this, SLOT(html_result_ready(QString))); _preview_generator->start(); }
Gtk::Widget * NiepceWindow::buildWidget() { if(m_widget) { return m_widget; } Gtk::Window & win(gtkWindow()); m_widget = &win; init_actions(); m_notifcenter = niepce::NotificationCenter::make(reinterpret_cast<uint64_t>(this)); Glib::ustring name("camera-photo"); set_icon_from_theme(name); m_notifcenter->signal_lib_notification.connect( sigc::mem_fun(*this, &NiepceWindow::on_lib_notification)); win.set_size_request(600, 400); win.show_all_children(); on_open_library(); return &win; }
static void create_bucket_list( void **state ) { bucket_list *bkt_list = create_action_bucket_list(); action_list *ac_list = complete_action_list(); const uint16_t weight = WEIGHT; const uint32_t watch_port = WATCH_PORT; const uint32_t watch_group = WATCH_GROUP; // expect_value( mock_is_valid_port_no, port_no, watch_port ); bucket *bkt = create_action_bucket( weight, watch_port, watch_group, ac_list ); if ( bkt != NULL ) { append_action_bucket( bkt_list, bkt ); } init_actions(); *state = ( void * ) bkt_list; }
DirectoryTree::DirectoryTree(QWidget *parent) : QTreeView(parent) { assert(NULL != parent); // model PkmPlugin *plugin = dynamic_cast<PkmPlugin*>(get_plugin().pointer()); assert(NULL != plugin); DirectoryTreeModel *model = new DirectoryTreeModel(plugin->get_data_source()->get_db(), parent); connect(this, SIGNAL(expanded(QModelIndex)), model, SLOT(on_expanded(QModelIndex))); connect(this, SIGNAL(collapsed(QModelIndex)), model, SLOT(on_collapsed(QModelIndex))); setModel(model); // actions init_actions(); // menus init_menus(); // 双击展开而非进入编辑模式 setExpandsOnDoubleClick(true); setAutoExpandDelay(600); // 拖拽时自动展开节点的延时(ms) setEditTriggers(EditKeyPressed); setMinimumWidth(140); // 隐藏首部 setHeaderHidden(true); // 拖拽相关 setSelectionMode(QAbstractItemView::SingleSelection); // 单选 setDragEnabled(true); // 允许"拖" setAcceptDrops(true); // 允许"放" setDropIndicatorShown(true); // ? setDragDropMode(QAbstractItemView::DragDrop); setDefaultDropAction(Qt::MoveAction); // signals connect(this, SIGNAL(activated(QModelIndex)), this, SLOT(on_item_activated(QModelIndex))); // connect(this, SIGNAL(clicked(QModelIndex)), this, SLOT(on_item_activated(QModelIndex))); connect(selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), this, SLOT(on_item_selected(QModelIndex,QModelIndex))); plugin->locate_directory.connect(this, &DirectoryTree::on_locate_directory); }
ItemList::ItemList(QWidget *parent) : QTableView(parent) { // model PasspotPlugin *plugin = dynamic_cast<PasspotPlugin*>(get_plugin().pointer()); assert(NULL != plugin); QAbstractItemModel *model = new ItemListModel(plugin->get_datasource()->get_db(), parent); setModel(model); // actions init_actions(); // menus init_menus(); // 设置列宽 setMinimumWidth(40); setColumnWidth(ItemListModel::COLUMN_TITLE, 140); setColumnWidth(ItemListModel::COLUMN_USER_NAME, 110); setColumnWidth(ItemListModel::COLUMN_PASSWORD, 90); setColumnWidth(ItemListModel::COLUMN_URL, 150); setColumnWidth(ItemListModel::COLUMN_COMMENT, 200); #if QT_VERSION >= 0x050000 horizontalHeader()->setSectionResizeMode(ItemListModel::COLUMN_COMMENT, QHeaderView::Stretch); // 伸缩 #endif // 拖拽相关 setSelectionMode(QAbstractItemView::SingleSelection); // 单选 setSelectionBehavior(QAbstractItemView::SelectRows); setDragEnabled(true); // 允许"拖" setAcceptDrops(false); // 不允许"放" setDropIndicatorShown(true); // ? setDragDropMode(QAbstractItemView::DragDrop); // 如果仅内部使用则使用 QAbstractItemView::InternalMove // event connect(this, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(on_double_click(QModelIndex))); connect(this, SIGNAL(activated(QModelIndex)), this, SLOT(on_item_activated(QModelIndex))); plugin->directory_activated.connect(this, &ItemList::on_directory_activated); }
void Service::loadFinished(bool ok) { if (!ok) return; frame_->addToJavaScriptWindowObject("QCloudmusDescriptor", &descriptor_); frame_->addToJavaScriptWindowObject("QCloudmusService", this); QString init_js = "" "CloudmusService = {QObject: QCloudmusService, descriptor: QCloudmusDescriptor};" "CloudmusService.actions = {}; CloudmusService.custom_actions = {}; " "delete window.QCloudmusService;" "delete window.QCloudmusDescriptor;" "" "CloudmusService.addAction = function(action, text, icon, func){" " CloudmusService.QObject.addCustomAction(action, text, icon);" " CloudmusService.custom_actions[action].triggered.connect(func);" "}"; frame_->evaluateJavaScript(init_js); init_actions(); frame_->evaluateJavaScript(service_); }
MainPage::MainPage( SApplication *parent ) : SPage( tr("Disc Eraser") , parent , SPage::WindowedPage ) { p = new MainPagePrivate; p->device_list = new SDeviceList( this ); p->dst_combo = new SComboBox(); p->dst_combo->setIconSize( QSize(22,22) ); p->toolbar = new QToolBar(); p->toolbar->setToolButtonStyle( Qt::ToolButtonTextBesideIcon ); p->toolbar->setStyleSheet( "QToolBar{ border-style:solid ; margin:0px }" ); p->options_widget = new QWidget(); p->options_ui = new Ui::OptionsUi; p->options_ui->setupUi( p->options_widget ); p->layout = new QVBoxLayout( this ); p->layout->addWidget( p->dst_combo ); p->layout->addWidget( p->options_widget ); p->layout->addWidget( p->toolbar ); p->layout->setContentsMargins( 10 , 10 , 10 , 10 ); setFixedWidth( 373 ); setFixedHeight( EXPANDED_HEIGHT ); p->dst_combo->setCurrentIndex( 0 ); connect( p->device_list , SIGNAL(deviceDetected(SDeviceItem)) , SLOT(deviceDetected(SDeviceItem)) ); p->device_list->refresh(); init_actions(); more_prev(); }
int main(int argc, char **argv) { char *my_socket, *pt; const struct optstruct *opt; struct optstruct *opts; time_t currtime; mode_t umsk; int ret; cl_initialize_crypto(); memset(&descr, 0, sizeof(struct smfiDesc)); descr.xxfi_name = "ClamAV"; /* filter name */ descr.xxfi_version = SMFI_VERSION; /* milter version */ descr.xxfi_flags = SMFIF_QUARANTINE; /* flags */ descr.xxfi_connect = clamfi_connect; /* connection info filter */ descr.xxfi_envfrom = clamfi_envfrom; /* envelope sender filter */ descr.xxfi_envrcpt = clamfi_envrcpt; /* envelope recipient filter */ descr.xxfi_header = clamfi_header; /* header filter */ descr.xxfi_body = clamfi_body; /* body block */ descr.xxfi_eom = clamfi_eom; /* end of message */ descr.xxfi_abort = clamfi_abort; /* message aborted */ opts = optparse(NULL, argc, argv, 1, OPT_MILTER, 0, NULL); if (!opts) { mprintf("!Can't parse command line options\n"); return 1; } if(optget(opts, "help")->enabled) { printf("Usage: %s [-c <config-file>]\n\n", argv[0]); printf(" --help -h Show this help\n"); printf(" --version -V Show version and exit\n"); printf(" --config-file <file> -c Read configuration from file\n\n"); optfree(opts); return 0; } if(opts->filename) { int x; for(x = 0; opts->filename[x]; x++) mprintf("^Ignoring option %s\n", opts->filename[x]); } if(optget(opts, "version")->enabled) { printf("clamav-milter %s\n", get_version()); optfree(opts); return 0; } pt = strdup(optget(opts, "config-file")->strarg); if (pt == NULL) { printf("Unable to allocate memory for config file\n"); return 1; } if((opts = optparse(pt, 0, NULL, 1, OPT_MILTER, 0, opts)) == NULL) { printf("%s: cannot parse config file %s\n", argv[0], pt); free(pt); return 1; } free(pt); if((opt = optget(opts, "Chroot"))->enabled) { if(chdir(opt->strarg) != 0) { logg("!Cannot change directory to %s\n", opt->strarg); return 1; } if(chroot(opt->strarg) != 0) { logg("!chroot to %s failed. Are you root?\n", opt->strarg); return 1; } } pt = optget(opts, "AddHeader")->strarg; if (strcasecmp(pt, "No")) { char myname[255]; if (((opt = optget(opts, "ReportHostname"))->enabled && strncpy(myname, opt->strarg, sizeof(myname))) || !gethostname(myname, sizeof(myname))) { myname[sizeof(myname)-1] = '\0'; snprintf(xvirushdr, sizeof(xvirushdr), "clamav-milter %s at %s", get_version(), myname); } else { snprintf(xvirushdr, sizeof(xvirushdr), "clamav-milter %s", get_version()); } xvirushdr[sizeof(xvirushdr)-1] = '\0'; descr.xxfi_flags |= SMFIF_ADDHDRS; if (strcasecmp(pt, "Add")) { /* Replace or Yes */ descr.xxfi_flags |= SMFIF_CHGHDRS; addxvirus = 1; } else { /* Add */ addxvirus = 2; } } if(!(my_socket = optget(opts, "MilterSocket")->strarg)) { logg("!Please configure the MilterSocket directive\n"); logg_close(); optfree(opts); return 1; } if(smfi_setconn(my_socket) == MI_FAILURE) { logg("!smfi_setconn failed\n"); logg_close(); optfree(opts); return 1; } if(smfi_register(descr) == MI_FAILURE) { logg("!smfi_register failed\n"); logg_close(); optfree(opts); return 1; } opt = optget(opts, "FixStaleSocket"); umsk = umask(0777); /* socket is created with 000 to avoid races */ if(smfi_opensocket(opt->enabled) == MI_FAILURE) { logg("!Failed to create socket %s\n", my_socket); logg_close(); optfree(opts); return 1; } umask(umsk); /* restore umask */ if(strncmp(my_socket, "inet:", 5) && strncmp(my_socket, "inet6:", 6)) { /* set group ownership and perms on the local socket */ char *sock_name = my_socket; mode_t sock_mode; if(!strncmp(my_socket, "unix:", 5)) sock_name += 5; if(!strncmp(my_socket, "local:", 6)) sock_name += 6; if(*my_socket == ':') sock_name ++; if(optget(opts, "MilterSocketGroup")->enabled) { char *gname = optget(opts, "MilterSocketGroup")->strarg, *end; gid_t sock_gid = strtol(gname, &end, 10); if(*end) { struct group *pgrp = getgrnam(gname); if(!pgrp) { logg("!Unknown group %s\n", gname); logg_close(); optfree(opts); return 1; } sock_gid = pgrp->gr_gid; } if(chown(sock_name, -1, sock_gid)) { logg("!Failed to change socket ownership to group %s\n", gname); logg_close(); optfree(opts); return 1; } } if ((opt = optget(opts, "User"))->enabled) { struct passwd *user; if ((user = getpwnam(opt->strarg)) == NULL) { logg("ERROR: Can't get information about user %s.\n", opt->strarg); logg_close(); optfree(opts); return 1; } if(chown(sock_name, user->pw_uid, -1)) { logg("!Failed to change socket ownership to user %s\n", user->pw_name); optfree(opts); logg_close(); return 1; } } if(optget(opts, "MilterSocketMode")->enabled) { char *end; sock_mode = strtol(optget(opts, "MilterSocketMode")->strarg, &end, 8); if(*end) { logg("!Invalid MilterSocketMode %s\n", optget(opts, "MilterSocketMode")->strarg); logg_close(); optfree(opts); return 1; } } else sock_mode = 0777 & ~umsk; if(chmod(sock_name, sock_mode & 0666)) { logg("!Cannot set milter socket permission to %s\n", optget(opts, "MilterSocketMode")->strarg); logg_close(); optfree(opts); return 1; } } if(geteuid() == 0 && (opt = optget(opts, "User"))->enabled) { struct passwd *user = NULL; if((user = getpwnam(opt->strarg)) == NULL) { fprintf(stderr, "ERROR: Can't get information about user %s.\n", opt->strarg); optfree(opts); return 1; } if(optget(opts, "AllowSupplementaryGroups")->enabled) { #ifdef HAVE_INITGROUPS if(initgroups(opt->strarg, user->pw_gid)) { fprintf(stderr, "ERROR: initgroups() failed.\n"); optfree(opts); return 1; } #else mprintf("!AllowSupplementaryGroups: initgroups() is not available, please disable AllowSupplementaryGroups\n"); optfree(opts); return 1; #endif } else { #ifdef HAVE_SETGROUPS if(setgroups(1, &user->pw_gid)) { fprintf(stderr, "ERROR: setgroups() failed.\n"); optfree(opts); return 1; } #endif } if(setgid(user->pw_gid)) { fprintf(stderr, "ERROR: setgid(%d) failed.\n", (int) user->pw_gid); optfree(opts); return 1; } if(setuid(user->pw_uid)) { fprintf(stderr, "ERROR: setuid(%d) failed.\n", (int) user->pw_uid); optfree(opts); return 1; } } logg_lock = !optget(opts, "LogFileUnlock")->enabled; logg_time = optget(opts, "LogTime")->enabled; logg_size = optget(opts, "LogFileMaxSize")->numarg; logg_verbose = mprintf_verbose = optget(opts, "LogVerbose")->enabled; if (logg_size) logg_rotate = optget(opts, "LogRotate")->enabled; if((opt = optget(opts, "LogFile"))->enabled) { logg_file = opt->strarg; if(!cli_is_abspath(logg_file)) { fprintf(stderr, "ERROR: LogFile requires full path.\n"); logg_close(); optfree(opts); return 1; } } else logg_file = NULL; #if defined(USE_SYSLOG) && !defined(C_AIX) if(optget(opts, "LogSyslog")->enabled) { int fac; opt = optget(opts, "LogFacility"); if((fac = logg_facility(opt->strarg)) == -1) { logg("!LogFacility: %s: No such facility.\n", opt->strarg); logg_close(); optfree(opts); return 1; } openlog("clamav-milter", LOG_PID, fac); logg_syslog = 1; } #endif time(&currtime); if(logg("#+++ Started at %s", ctime(&currtime))) { fprintf(stderr, "ERROR: Can't initialize the internal logger\n"); logg_close(); optfree(opts); return 1; } if((opt = optget(opts, "TemporaryDirectory"))->enabled) tempdir = opt->strarg; if(localnets_init(opts) || init_actions(opts)) { logg_close(); optfree(opts); return 1; } if((opt = optget(opts, "Whitelist"))->enabled && whitelist_init(opt->strarg)) { localnets_free(); logg_close(); optfree(opts); return 1; } if((opt = optget(opts, "SkipAuthenticated"))->enabled && smtpauth_init(opt->strarg)) { localnets_free(); whitelist_free(); logg_close(); optfree(opts); return 1; } multircpt = optget(opts, "SupportMultipleRecipients")->enabled; if(!optget(opts, "Foreground")->enabled) { if(daemonize() == -1) { logg("!daemonize() failed\n"); localnets_free(); whitelist_free(); cpool_free(); logg_close(); optfree(opts); return 1; } if(chdir("/") == -1) logg("^Can't change current working directory to root\n"); } maxfilesize = optget(opts, "MaxFileSize")->numarg; if(!maxfilesize) { logg("^Invalid MaxFileSize, using default (%d)\n", CLI_DEFAULT_MAXFILESIZE); maxfilesize = CLI_DEFAULT_MAXFILESIZE; } readtimeout = optget(opts, "ReadTimeout")->numarg; cpool_init(opts); if (!cp) { logg("!Failed to init the socket pool\n"); localnets_free(); whitelist_free(); logg_close(); optfree(opts); return 1; } if((opt = optget(opts, "PidFile"))->enabled) { FILE *fd; mode_t old_umask = umask(0002); if((fd = fopen(opt->strarg, "w")) == NULL) { logg("!Can't save PID in file %s\n", opt->strarg); } else { if (fprintf(fd, "%u\n", (unsigned int)getpid())<0) { logg("!Can't save PID in file %s\n", opt->strarg); } fclose(fd); } umask(old_umask); } ret = smfi_main(); optfree(opts); logg_close(); cpool_free(); localnets_free(); whitelist_free(); return ret; }
ConverterPage::ConverterPage( SApplication *parent , SConverter *converter ) : SPage( tr("Converter") , parent , SPage::WindowedPage ) { p = new ConverterPagePrivate; p->converter = converter; p->spacer_widget = new QWidget(); p->spacer_widget->setSizePolicy( QSizePolicy::MinimumExpanding , QSizePolicy::MinimumExpanding ); p->src_line = new QLineEdit(); p->src_line->setReadOnly( true ); p->src_line->setFocusPolicy( Qt::NoFocus ); p->src_button = new QToolButton(); p->src_button->setAutoRaise( true ); p->src_button->setFixedSize( 26 , 26 ); p->src_button->setIcon( SMasterIcons::icon( ICON_SIZE , "document-open.png" ) ); p->src_button->setToolButtonStyle( Qt::ToolButtonTextBesideIcon ); p->src_label = new QLabel( tr("Source:") ); p->src_layout = new QHBoxLayout(); p->src_layout->addWidget( p->src_line ); p->src_layout->addWidget( p->src_button ); p->dst_line = new QLineEdit(); p->dst_line->setReadOnly( true ); p->dst_line->setFocusPolicy( Qt::NoFocus ); p->dst_button = new QToolButton(); p->dst_button->setAutoRaise( true ); p->dst_button->setFixedSize( 26 , 26 ); p->dst_button->setIcon( SMasterIcons::icon( ICON_SIZE , "document-open.png" ) ); p->dst_button->setToolButtonStyle( Qt::ToolButtonTextBesideIcon ); p->dst_label = new QLabel( tr("Destination:") ); p->dst_layout = new QHBoxLayout(); p->dst_layout->addWidget( p->dst_line ); p->dst_layout->addWidget( p->dst_button ); p->toolbar = new QToolBar(); p->toolbar->setToolButtonStyle( Qt::ToolButtonTextBesideIcon ); p->toolbar->setIconSize( QSize(22,22) ); p->cline = new ConverterLine( p->converter ); p->options_widget = new QWidget(); p->options_ui = new Ui::OptionsUi; p->options_ui->setupUi( p->options_widget ); p->options_widget->hide(); p->layout = new QVBoxLayout( this ); p->layout->addWidget( p->src_label ); p->layout->addLayout( p->src_layout ); p->layout->addWidget( p->dst_label ); p->layout->addLayout( p->dst_layout ); p->layout->addWidget( p->cline ); p->layout->addWidget( p->options_widget ); p->layout->addWidget( p->toolbar ); p->layout->setSpacing( 1 ); init_actions(); setFixedSize( 373,UNEXPANDED_HEIGHT ); connect( p->src_button , SIGNAL(clicked()) , SLOT(setSource()) ); connect( p->dst_button , SIGNAL(clicked()) , SLOT(setDestination()) ); connect( p->cline , SIGNAL(updated()) , SLOT(updated()) ); }
int main(int argc, char **argv) { char *my_socket, *pt; const struct optstruct *opt; struct optstruct *opts; time_t currtime; int ret; memset(&descr, 0, sizeof(struct smfiDesc)); descr.xxfi_name = "ClamAV"; /* filter name */ descr.xxfi_version = SMFI_VERSION; /* milter version */ descr.xxfi_flags = SMFIF_QUARANTINE; /* flags */ descr.xxfi_connect = clamfi_connect; /* connection info filter */ descr.xxfi_envfrom = clamfi_envfrom; /* envelope sender filter */ descr.xxfi_envrcpt = clamfi_envrcpt; /* envelope recipient filter */ descr.xxfi_header = clamfi_header; /* header filter */ descr.xxfi_body = clamfi_body; /* body block */ descr.xxfi_eom = clamfi_eom; /* end of message */ descr.xxfi_abort = clamfi_abort; /* message aborted */ opts = optparse(NULL, argc, argv, 1, OPT_MILTER, 0, NULL); if (!opts) { mprintf("!Can't parse command line options\n"); return 1; } if(optget(opts, "help")->enabled) { printf("Usage: %s [-c <config-file>]\n\n", argv[0]); printf(" --help -h Show this help\n"); printf(" --version -V Show version and exit\n"); printf(" --config-file <file> -c Read configuration from file\n\n"); optfree(opts); return 0; } if(opts->filename) { int x; for(x = 0; opts->filename[x]; x++) mprintf("^Ignoring option %s\n", opts->filename[x]); } if(optget(opts, "version")->enabled) { printf("clamav-milter %s\n", get_version()); optfree(opts); return 0; } pt = strdup(optget(opts, "config-file")->strarg); if((opts = optparse(pt, 0, NULL, 1, OPT_MILTER, 0, opts)) == NULL) { printf("%s: cannot parse config file %s\n", argv[0], pt); free(pt); return 1; } free(pt); if((opt = optget(opts, "Chroot"))->enabled) { if(chdir(opt->strarg) != 0) { logg("!Cannot change directory to %s\n", opt->strarg); return 1; } if(chroot(opt->strarg) != 0) { logg("!chroot to %s failed. Are you root?\n", opt->strarg); return 1; } } if(geteuid() == 0 && (opt = optget(opts, "User"))->enabled) { struct passwd *user = NULL; if((user = getpwnam(opt->strarg)) == NULL) { fprintf(stderr, "ERROR: Can't get information about user %s.\n", opt->strarg); optfree(opts); return 1; } if(optget(opts, "AllowSupplementaryGroups")->enabled) { #ifdef HAVE_INITGROUPS if(initgroups(opt->strarg, user->pw_gid)) { fprintf(stderr, "ERROR: initgroups() failed.\n"); optfree(opts); return 1; } #else mprintf("!AllowSupplementaryGroups: initgroups() is not available, please disable AllowSupplementaryGroups\n"); optfree(opts); return 1; #endif } else { #ifdef HAVE_SETGROUPS if(setgroups(1, &user->pw_gid)) { fprintf(stderr, "ERROR: setgroups() failed.\n"); optfree(opts); return 1; } #endif } if(setgid(user->pw_gid)) { fprintf(stderr, "ERROR: setgid(%d) failed.\n", (int) user->pw_gid); optfree(opts); return 1; } if(setuid(user->pw_uid)) { fprintf(stderr, "ERROR: setuid(%d) failed.\n", (int) user->pw_uid); optfree(opts); return 1; } } logg_lock = !optget(opts, "LogFileUnlock")->enabled; logg_time = optget(opts, "LogTime")->enabled; logg_size = optget(opts, "LogFileMaxSize")->numarg; logg_verbose = mprintf_verbose = optget(opts, "LogVerbose")->enabled; if((opt = optget(opts, "LogFile"))->enabled) { logg_file = opt->strarg; if(strlen(logg_file) < 2 || logg_file[0] != '/') { fprintf(stderr, "ERROR: LogFile requires full path.\n"); logg_close(); optfree(opts); return 1; } } else logg_file = NULL; #if defined(USE_SYSLOG) && !defined(C_AIX) if(optget(opts, "LogSyslog")->enabled) { int fac; opt = optget(opts, "LogFacility"); if((fac = logg_facility(opt->strarg)) == -1) { logg("!LogFacility: %s: No such facility.\n", opt->strarg); logg_close(); optfree(opts); return 1; } openlog("clamav-milter", LOG_PID, fac); logg_syslog = 1; } #endif time(&currtime); if(logg("#+++ Started at %s", ctime(&currtime))) { fprintf(stderr, "ERROR: Can't initialize the internal logger\n"); logg_close(); optfree(opts); return 1; } if((opt = optget(opts, "TemporaryDirectory"))->enabled) tempdir = opt->strarg; if(localnets_init(opts) || init_actions(opts)) { logg_close(); optfree(opts); return 1; } if((opt = optget(opts, "Whitelist"))->enabled && whitelist_init(opt->strarg)) { localnets_free(); logg_close(); optfree(opts); return 1; } if((opt = optget(opts, "SkipAuthenticated"))->enabled && smtpauth_init(opt->strarg)) { localnets_free(); whitelist_free(); logg_close(); optfree(opts); return 1; } pt = optget(opts, "AddHeader")->strarg; if(strcasecmp(pt, "No")) { char myname[255]; if(!gethostname(myname, sizeof(myname))) { myname[sizeof(myname)-1] = '\0'; snprintf(xvirushdr, sizeof(xvirushdr), "clamav-milter %s at %s", get_version(), myname); xvirushdr[sizeof(xvirushdr)-1] = '\0'; } else { snprintf(xvirushdr, sizeof(xvirushdr), "clamav-milter %s", get_version()); xvirushdr[sizeof(xvirushdr)-1] = '\0'; } descr.xxfi_flags |= SMFIF_ADDHDRS; if(strcasecmp(pt, "Add")) { /* Replace or Yes */ descr.xxfi_flags |= SMFIF_CHGHDRS; addxvirus = 1; } else { /* Add */ addxvirus = 2; } } if(!(my_socket = optget(opts, "MilterSocket")->strarg)) { logg("!Please configure the MilterSocket directive\n"); localnets_free(); whitelist_free(); logg_close(); optfree(opts); return 1; } if(!optget(opts, "Foreground")->enabled) { if(daemonize() == -1) { logg("!daemonize() failed\n"); localnets_free(); whitelist_free(); cpool_free(); logg_close(); optfree(opts); return 1; } if(chdir("/") == -1) logg("^Can't change current working directory to root\n"); } if(smfi_setconn(my_socket) == MI_FAILURE) { logg("!smfi_setconn failed\n"); localnets_free(); whitelist_free(); logg_close(); optfree(opts); return 1; } if(smfi_register(descr) == MI_FAILURE) { logg("!smfi_register failed\n"); localnets_free(); whitelist_free(); logg_close(); optfree(opts); return 1; } opt = optget(opts, "FixStaleSocket"); if(smfi_opensocket(opt->enabled) == MI_FAILURE) { logg("!Failed to create socket %s\n", my_socket); localnets_free(); whitelist_free(); logg_close(); optfree(opts); return 1; } maxfilesize = optget(opts, "MaxFileSize")->numarg; readtimeout = optget(opts, "ReadTimeout")->numarg; cpool_init(opts); if (!cp) { logg("!Failed to init the socket pool\n"); localnets_free(); whitelist_free(); logg_close(); optfree(opts); return 1; } if((opt = optget(opts, "PidFile"))->enabled) { FILE *fd; mode_t old_umask = umask(0006); if((fd = fopen(opt->strarg, "w")) == NULL) { logg("!Can't save PID in file %s\n", opt->strarg); } else { if (fprintf(fd, "%u", (unsigned int)getpid())<0) { logg("!Can't save PID in file %s\n", opt->strarg); } fclose(fd); } umask(old_umask); } ret = smfi_main(); optfree(opts); logg_close(); cpool_free(); localnets_free(); whitelist_free(); return ret; }
lr_symbol* lr_parser::parse() { /* set up direct reference to tables to drive the parser */ production_tab = production_table(); action_tab = action_table(); reduce_tab = reduce_table(); /* initialize the action encapsulation object */ init_actions(); /* do user initialization */ user_init(); /* get the first token */ cur_token = scan(); /* push dummy symbol with start state to get us underway */ stack.remove_all_elements(); lr_symbol dummy_sym(0, start_state()); stack.push(&dummy_sym); /* continue until accept or fatal error */ while (true) { /* Check current token for freshness. */ assert(-1 == cur_token->parse_state); /* current state is always on the top of the stack */ /* look up action out of the current state with the current input */ int act = get_action(stack.peek()->parse_state, cur_token->sym); /* decode the action -- > 0 encodes shift */ if (act > 0) { act = act - 1; DEBUG_LOG("Shift and goto " << act); /* shift to the encoded state by pushing it on the stack */ cur_token->parse_state = act; stack.push(cur_token); /* advance to the next Symbol */ cur_token = scan(); } /* if its less than zero, then it encodes a reduce action */ else if (act < 0) { act = (-act) - 1; DEBUG_LOG("Reduce by rule " << act); /* perform the action for the reduce */ lr_symbol* lhs_sym = do_action(act); /* check for accept indication */ if (lhs_sym == 0) { return stack.peek(); } /* look up information about the production */ lhs_sym->sym = production_tab[act].lhs_sym; short handle_size = production_tab[act].rhs_size; /* pop the handle off the stack */ stack.npop(handle_size); /* look up the state to go to from the one popped back to */ act = get_reduce(stack.peek()->parse_state, lhs_sym->sym); /* shift to that state */ lhs_sym->parse_state = act; stack.push(lhs_sym); DEBUG_LOG(" and goto " << act); } /* finally if the entry is zero, we have an error */ else if (act == 0) { DEBUG_LOG("Error"); /* call user syntax error reporting routine */ syntax_error(cur_token); /* try to error recover */ switch (error_recovery()) { case ERS_FAIL: /* if that fails give up with a fatal syntax error */ unrecovered_syntax_error(cur_token); return 0; case ERS_SUCCESS: break; case ERS_ACCEPT: return stack.peek(); default: assert(0); } } } }
void create_main_window () { window = gtk_window_new (GTK_WINDOW_TOPLEVEL); GtkUIManager *ui_manager = gtk_ui_manager_new (); GtkActionGroup *action_group = create_action_group (); GError *error = NULL; gchar *ui_path = rookie_misc_get_ui_path ("AppUI.ui"); gtk_ui_manager_insert_action_group (ui_manager, action_group, 0); gtk_ui_manager_add_ui_from_file (ui_manager, ui_path, &error); handle_critical_error (error); g_free (ui_path); eggicon = gtk_status_icon_new_from_icon_name ("rookie"); init_actions (action_group); menubar = gtk_ui_manager_get_widget (ui_manager, "/menubar"); toolbar = gtk_ui_manager_get_widget (ui_manager, "/toolbar"); statbar = create_statusbar (); mainbox = gtk_vbox_new (FALSE, 0); mainpopup = gtk_ui_manager_get_widget (ui_manager, "/m_popup"); viewpopup = gtk_ui_manager_get_widget (ui_manager, "/v_popup"); statpopup = gtk_ui_manager_get_widget (ui_manager, "/s_popup"); gtk_toolbar_set_icon_size (GTK_TOOLBAR(toolbar), GTK_ICON_SIZE_LARGE_TOOLBAR); gtk_toolbar_set_style (GTK_TOOLBAR(toolbar), GTK_TOOLBAR_BOTH); sw1 = gtk_scrolled_window_new (NULL, NULL); sw2 = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(sw1), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(sw2), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); sidepane = create_sidepane (); gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW(sw1), sidepane); view = g_download_list_controller_get_view (); gtk_container_add (GTK_CONTAINER (sw2), view); bottompane = create_bottom_pane (); vpaned = gtk_vpaned_new (); gtk_paned_add1 (GTK_PANED(vpaned), sw2); gtk_paned_add2 (GTK_PANED(vpaned), bottompane); hpaned = gtk_hpaned_new (); gtk_paned_add1 (GTK_PANED(hpaned), sw1); gtk_paned_add2 (GTK_PANED(hpaned), vpaned); gtk_paned_set_position (GTK_PANED(hpaned), rookie_settings_get_sidepane_width ()); gtk_paned_set_position (GTK_PANED(vpaned), rookie_settings_get_bottompane_width ()); gtk_window_add_accel_group (GTK_WINDOW(window), gtk_ui_manager_get_accel_group(ui_manager)); gtk_window_set_title (GTK_WINDOW(window), _("Rookie Download Manager")); gtk_window_set_icon_name (GTK_WINDOW(window), "rookie"); gtk_box_pack_start (GTK_BOX(mainbox), menubar, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX(mainbox), toolbar, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX(mainbox), hpaned, TRUE, TRUE, 0); gtk_box_pack_end (GTK_BOX(mainbox), statbar, FALSE, FALSE, 0); relayout_mainbox (); gtk_container_add (GTK_CONTAINER(window), mainbox); gtk_window_set_geometry_hints (GTK_WINDOW (window), window, NULL, GDK_HINT_USER_SIZE | GDK_HINT_USER_POS | GDK_HINT_POS); gtk_window_resize (GTK_WINDOW(window), rookie_settings_get_window_width (), rookie_settings_get_window_height()); rookie_settings_bind (ROOKIE_TOOLBAR_VISIBLE, toolbar, "visible"); rookie_settings_bind (ROOKIE_STATUSBAR_VISIBLE, statbar, "visible"); /* Signals */ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(view)); g_download_list_foreach ((GFunc)g_downloadable_connect_signals, NULL); g_signal_connect (eggicon, "activate", G_CALLBACK(on_egg_icon_activate), NULL); g_signal_connect (eggicon, "popup-menu", G_CALLBACK(on_egg_icon_popup_menu), NULL); g_signal_connect (window, "delete-event", G_CALLBACK(on_window_delete), NULL); g_signal_connect (g_download_list_get (), "download-added", G_CALLBACK (on_download_added), NULL); g_signal_connect (g_download_list_get (), "download-removed", G_CALLBACK (on_download_removed), NULL); g_signal_connect (view, "button-press-event", G_CALLBACK(on_view_button_press), selection); g_signal_connect (selection, "changed", G_CALLBACK(on_selection_change), NULL); }
MainWindow2::MainWindow2( QWidget *owner ):QMainWindow(owner) { statusBar(); init_actions(); init_gui(); }
MainPage::MainPage( SApplication *parent ) : SPage( tr("Disc Imaging") , parent , SPage::WindowedPage ) { p = new MainPagePrivate; p->device_list = new SDeviceList( this ); p->dst_line = new QLineEdit(); p->dst_line->setReadOnly( true ); p->dst_line->setFixedHeight( 28 ); p->dst_line->setPlaceholderText( tr("Please select a Disc Image") ); p->dst_line->setFocusPolicy( Qt::NoFocus ); p->open_btn = new QToolButton(); p->open_btn->setIcon( SMasterIcons::icon( ICON_SIZE , "document-open.png" ) ); p->open_btn->setFixedSize( 28 , 28 ); p->image_layout = new QHBoxLayout(); p->image_layout->addWidget( p->dst_line ); p->image_layout->addWidget( p->open_btn ); p->src_combo = new SComboBox(); p->src_combo->setIconSize( QSize(22,22) ); p->label = new QLabel(); p->label->setText( tr("To") ); p->toolbar = new QToolBar(); p->toolbar->setToolButtonStyle( Qt::ToolButtonTextBesideIcon ); p->toolbar->setStyleSheet( "QToolBar{ border-style:solid ; margin:0px }" ); p->options_widget = new QWidget(); p->options_ui = new Ui::OptionsUi; p->options_ui->setupUi( p->options_widget ); p->layout = new QVBoxLayout( this ); p->layout->addWidget( p->src_combo ); p->layout->addWidget( p->label ); p->layout->addLayout( p->image_layout ); p->layout->addWidget( p->options_widget ); p->layout->addWidget( p->toolbar ); p->layout->setContentsMargins( 10 , 10 , 10 , 10 ); setFixedWidth( 413 ); setFixedHeight( EXPANDED_HEIGHT ); p->src_combo->setCurrentIndex( 0 ); connect( p->device_list , SIGNAL(deviceDetected(SDeviceItem)) , SLOT(deviceDetected(SDeviceItem)) ); connect( p->open_btn , SIGNAL(clicked()) , SLOT(select_dst_image()) ); connect( p->options_ui->library_check , SIGNAL(toggled(bool)) , p->options_ui->library_widget , SLOT(setVisible(bool)) ); connect( p->options_ui->scan_check , SIGNAL(toggled(bool)) , p->options_ui->scan_widget , SLOT(setVisible(bool)) ); connect( p->options_ui->custom_check , SIGNAL(toggled(bool)) , p->options_ui->custom_widget , SLOT(setVisible(bool)) ); connect( p->options_ui->custom_check , SIGNAL(toggled(bool)) , this , SLOT(setDefaultOptions()) ); connect( p->options_ui->custom_to_spin , SIGNAL(valueChanged(int)) , this , SLOT(to_spin_changed(int)) ); p->options_ui->library_check->setChecked( false ); p->options_ui->scan_check->setChecked( false ); p->options_ui->custom_check->setChecked( false ); init_actions(); more_prev(); p->device_list->refresh(); setAcceptDrops( true ); }
int CreateTopWindow(void) { #ifdef MOUSE_POINTER_CHANGE #ifdef WIN32 static const gchar *cr[CURSOR_MODE_3270] = { "arrow", "wait", "arrow", "sizenwse", // Top-left "sizenesw", // Top-right "sizens", // Top "sizenesw", // Bottom-left "sizenwse", // Bottom-right "sizens", // Bottom "sizewe", // Left "sizewe", // Right "sizeall" // Inside }; #else static int cr[CURSOR_MODE_3270] = { GDK_XTERM, GDK_WATCH, GDK_X_CURSOR, GDK_TOP_LEFT_CORNER, // Top-left GDK_TOP_RIGHT_CORNER, // Top-right GDK_TOP_SIDE, // Top GDK_BOTTOM_LEFT_CORNER, // Bottom-left GDK_BOTTOM_RIGHT_CORNER, // Bottom-right GDK_BOTTOM_SIDE, // Bottom GDK_LEFT_SIDE, // Left GDK_RIGHT_SIDE, // Right GDK_FLEUR // Inside }; #endif // WIN32 int f; #endif // MOUSE_POINTER_CHANGE static const struct ui_menu_setup_table widget_setup[] = { { "fontselect", setup_font_select_menu }, { "inputmethod", setup_input_methods_menu }, { "screensizes", setup_screen_size_menu }, { NULL, NULL } }; gchar *ptr; init_actions(); #ifdef MOUSE_POINTER_CHANGE // Load mouse pointers #ifdef WIN32 for(f=0;f<CURSOR_MODE_3270;f++) wCursor[f] = gdk_cursor_new_from_name(gdk_display_get_default(), cr[f]); #else for(f=0;f<CURSOR_MODE_3270;f++) wCursor[f] = gdk_cursor_new(cr[f]); #endif #endif // MOUSE_POINTER_CHANGE if(!CreateTerminalWindow()) return -1; // Load UI - Create toplevel window ptr = g_build_filename(program_data,"ui",NULL); topwindow = create_window_from_ui_files(ptr,terminal,widget_setup); g_free(ptr); // Load program logo load_icon(); /* if(program_logo && g_file_test(program_logo,G_FILE_TEST_IS_REGULAR)) { pix = gdk_pixbuf_new_from_file(program_logo,NULL); } else { gchar *filename = g_build_filename(program_data,PROGRAM_LOGO,NULL); if(g_file_test(filename,G_FILE_TEST_IS_REGULAR)) pix = gdk_pixbuf_new_from_file(filename, NULL); Trace("pixbuf(%s): %p",filename,pix); g_free(filename); } if(pix) { gtk_window_set_icon(GTK_WINDOW(topwindow),pix); g_object_set_data_full(G_OBJECT(topwindow),"logo",pix,g_object_unref); #if defined( HAVE_IGEMAC ) gtk_osxapplication_set_dock_icon_pixbuf(osxapp,pix); #endif } */ gtk_action_set_sensitive(action_by_id[ACTION_RESELECT],FALSE); g_signal_connect(G_OBJECT(topwindow),"destroy",G_CALLBACK(action_quit),0); // gtk_window_set_icon_list(GTK_WINDOW(topwindow),main_icon); gtk_window_set_default_size(GTK_WINDOW(topwindow),590,430); ptr = GetString("TopWindow","Title",""); settitle(ptr); g_free(ptr); action_restore(0); gtk_window_set_position(GTK_WINDOW(topwindow),GTK_WIN_POS_CENTER); return 0; }