void Gobby::TaskSaveAll::run() { const unsigned int n_pages = get_folder().get_n_pages(); for(unsigned int i = 0; i < n_pages; ++i) { SessionView& view = get_folder().get_document(i); TextSessionView* text_view = dynamic_cast<TextSessionView*>(&view); if(text_view) m_views.push_back(text_view); } get_folder().signal_document_removed().connect( sigc::mem_fun(*this, &TaskSaveAll::on_document_removed)); m_current = m_views.begin(); process_current(); }
static gboolean async_get_folder_listing(void *s) { struct session *session = s; struct request *request = session->request; gboolean count = FALSE; int folder_count = 0; char *path = NULL; struct message_folder *folder; GSList *dir; if (session->aborted) goto aborted; if (request->name && strchr(request->name, '/') != NULL) goto done; path = g_build_filename(session->cwd, request->name, NULL); if (path == NULL || strlen(path) == 0) goto done; folder = get_folder(path); if (folder == NULL) goto done; if (request->max == 0) { request->max = 0xffff; request->offset = 0; count = TRUE; } for (dir = folder->subfolders; dir && (folder_count - request->offset) < request->max; folder_count++, dir = g_slist_next(dir)) { struct message_folder *dir_data = dir->data; if (count == FALSE && request->offset <= folder_count) request->cb.folder_list(session, -EAGAIN, 1, dir_data->name, request->user_data); } done: request->cb.folder_list(session, 0, folder_count, NULL, request->user_data); g_free(path); aborted: g_free(request->name); g_free(request); return FALSE; }
Gobby::TaskExportHtml::TaskExportHtml(FileCommands& file_commands, TextSessionView& view): Task(file_commands), m_file_dialog(get_file_chooser(), get_parent(), Glib::ustring::compose( _("Choose a location to export document \"%1\" to"), view.get_title()), Gtk::FILE_CHOOSER_ACTION_SAVE), m_view(&view), m_running(false) { get_folder().signal_document_removed().connect( sigc::mem_fun(*this, &TaskExportHtml::on_document_removed)); }
int messages_set_folder(void *s, const char *name, gboolean cdup) { struct session *session = s; char *newrel = NULL; char *newabs; char *tmp; if (name && (strchr(name, '/') || strcmp(name, "..") == 0)) return -EBADR; if (cdup) { if (session->cwd[0] == 0) return -ENOENT; newrel = g_path_get_dirname(session->cwd); /* We use empty string for indication of the root directory */ if (newrel[0] == '.' && newrel[1] == 0) newrel[0] = 0; } tmp = newrel; if (!cdup && (!name || name[0] == 0)) newrel = g_strdup(""); else newrel = g_build_filename(newrel ? newrel : session->cwd, name, NULL); g_free(tmp); if (newrel[0] != '/') newabs = g_build_filename("/", newrel, NULL); else newabs = g_strdup(newrel); session->folder = get_folder(newabs); if (session->folder == NULL) { g_free(newrel); g_free(newabs); return -ENOENT; } g_free(newrel); g_free(session->cwd); session->cwd = newabs; return 0; }
static gboolean async_get_folder_listing(void *s) { struct session *session = s; gboolean count = FALSE; int folder_count = 0; char *path = NULL; struct message_folder *folder; GSList *dir; if (session->name && strchr(session->name, '/') != NULL) goto done; path = g_build_filename(session->cwd, session->name, NULL); if (path == NULL || strlen(path) == 0) goto done; folder = get_folder(path); if (folder == NULL) goto done; if (session->max == 0) { session->max = 0xffff; session->offset = 0; count = TRUE; } for (dir = folder->subfolders; dir && (folder_count - session->offset) < session->max; folder_count++, dir = g_slist_next(dir)) { struct message_folder *dir_data = dir->data; if (count == FALSE && session->offset <= folder_count) session->folder_list_cb(session, -EAGAIN, 0, dir_data->name, session->user_data); } done: session->folder_list_cb(session, 0, folder_count, NULL, session->user_data); g_free(path); g_free(session->name); return FALSE; }
static void readcb(struct bufferevent* bev, void* args) { char buf[BUF_LEN]; size_t numRead; while ((numRead = bufferevent_read(bev, buf, BUF_LEN))) { char *p; for (p = buf; p < buf + numRead; ) { struct inotify_event *event = (struct inotify_event*) p; if (inotifycallback) inotifycallback(event); if (recursive && event->mask & IN_CREATE && event->mask & IN_ISDIR && event->len > 0) { char* folder = get_folder(event->wd); char fullpath[PATH_MAX]; snprintf(fullpath, sizeof(fullpath), "%s/%s", folder, folder); watch_folder(strdup(fullpath), 0); } p += sizeof(struct inotify_event) + event->len; } }; }
static int _do_mail(pam_handle_t *pamh, int flags, int argc, const char **argv, int est) { int retval, ctrl, hashcount; char *path_mail=NULL, *folder; const char *type; /* * this module (un)sets the MAIL environment variable, and checks if * the user has any new mail. */ ctrl = _pam_parse(flags, argc, argv, &path_mail, &hashcount); /* Do we have anything to do? */ if (flags & PAM_SILENT) return PAM_SUCCESS; /* which folder? */ retval = get_folder(pamh, ctrl, &path_mail, &folder, hashcount); if (retval != PAM_SUCCESS) { D(("failed to find folder")); return retval; } /* set the MAIL variable? */ if (!(ctrl & PAM_NO_ENV) && est) { char *tmp; tmp = malloc(strlen(folder)+sizeof(MAIL_ENV_FORMAT)); if (tmp != NULL) { sprintf(tmp, MAIL_ENV_FORMAT, folder); D(("setting env: %s", tmp)); retval = pam_putenv(pamh, tmp); _pam_overwrite(tmp); _pam_drop(tmp); if (retval != PAM_SUCCESS) { _pam_overwrite(folder); _pam_drop(folder); _log_err(LOG_CRIT, "unable to set " MAIL_ENV_NAME " variable"); return retval; } } else { _log_err(LOG_CRIT, "no memory for " MAIL_ENV_NAME " variable"); _pam_overwrite(folder); _pam_drop(folder); return retval; } } else { D(("not setting " MAIL_ENV_NAME " variable")); } /* * OK. we've got the mail folder... what about its status? */ if ((est && !(ctrl & PAM_NO_LOGIN)) || (!est && (ctrl & PAM_LOGOUT_TOO))) { type = get_mail_status(ctrl, folder); if (type != NULL) { retval = report_mail(pamh, ctrl, type, folder); type = NULL; } } /* Delete environment variable? */ if (!est) (void) pam_putenv(pamh, MAIL_ENV_NAME); _pam_overwrite(folder); /* clean up */ _pam_drop(folder); /* indicate success or failure */ return retval; }
int messages_get_messages_listing(void *s, const char *name, uint16_t max, uint16_t offset, const struct messages_filter *filter, messages_get_messages_listing_cb callback, void *user_data) { struct session *session = s; struct request *request; char *path, *query; struct message_folder *folder = NULL; DBusPendingCall *call; int err = 0; if (name == NULL || strlen(name) == 0) { path = g_strdup(session->cwd); folder = session->folder; if (folder == NULL) folder = get_folder(path); } else { if (strchr(name, '/') != NULL) return -EBADR; path = g_build_filename(session->cwd, name, NULL); folder = get_folder(path); } g_free(path); if (folder == NULL) return -ENOENT; query = folder2query(folder, LIST_MESSAGES_QUERY); if (query == NULL) return -ENOENT; request = g_new0(struct request, 1); request->filter = copy_messages_filter(filter); request->generate_response = get_messages_listing_resp; request->cb.messages_list = callback; request->offset = offset; request->max = max; request->user_data = user_data; session->aborted = FALSE; session->request = request; if (max == 0) { request->max = 0xffff; request->offset = 0; request->count = TRUE; } call = query_tracker(query, session, &err); if (err == 0) new_call(call); g_free(query); return err; }
void set_application_folder( char const* application_path ) { get_folder( application_path, appplication_folder ); initialize_compatibility_layer(); }