SF.net SVN: geany-plugins:[1906] trunk/geany-plugins/debugger/src/dbm_bash. c
cesspit at users.sourceforge.net
cesspit at xxxxx
Sun Feb 6 17:20:57 UTC 2011
Revision: 1906
http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=1906&view=rev
Author: cesspit
Date: 2011-02-06 17:20:57 +0000 (Sun, 06 Feb 2011)
Log Message:
-----------
remove unused code
Removed Paths:
-------------
trunk/geany-plugins/debugger/src/dbm_bash.c
Deleted: trunk/geany-plugins/debugger/src/dbm_bash.c
===================================================================
--- trunk/geany-plugins/debugger/src/dbm_bash.c 2011-02-06 16:41:59 UTC (rev 1905)
+++ trunk/geany-plugins/debugger/src/dbm_bash.c 2011-02-06 17:20:57 UTC (rev 1906)
@@ -1,516 +0,0 @@
-/*
- * dbm_gdm.c
- *
- * Copyright 2010 Alexander Petukhov <Alexander(dot)Petukhov(at)mail(dot)ru>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- * MA 02110-1301, USA.
- */
-
-/*
- * Implementation of struct _dbg_module for bash
- */
-
-#include <string.h>
-#include <stdlib.h>
-#include <poll.h>
-#include <gtk/gtk.h>
-
-#include "breakpoint.h"
-#include "debug_module.h"
-
-#include "geanyplugin.h"
-extern GeanyFunctions *geany_functions;
-extern GeanyData *geany_data;
-
-/* module features */
-#define MODULE_FEATURES 0
-
-/* bash spawn flags */
-#define BASH_SPAWN_FLAGS \
- G_SPAWN_SEARCH_PATH | \
- G_SPAWN_DO_NOT_REAP_CHILD
-
-/* callbacks to use for messaging, error reporting and state change alerting */
-static dbg_callbacks* dbg_cbs;
-
-/* terminal device name */
-gchar *terminal_device = NULL;
-
-/* bash command line arguments*/
-static gchar *bash_args[] = { "bash", "--debugger", NULL, NULL };
-
-/* bash pid*/
-static GPid bash_pid = 0;
-
-/* target pid*/
-static GPid target_pid = 0;
-
-/* GSource to watch bash exit */
-static GSource *bash_src;
-
-/* channels for bash input/output */
-static gint bash_in;
-static gint bash_out;
-static GIOChannel *bash_ch_in;
-static GIOChannel *bash_ch_out;
-
-/* bash output event source id */
-static guint bash_id_out;
-
-/* buffer for the error message */
-static char err_message[1000];
-
-/* locals list */
-static GList *locals = NULL;
-
-/* watches list */
-static GList *watches = NULL;
-
-/* forward declarations */
-static void stop();
-static variable* add_watch(gchar* expression);
-static void update_watches();
-static void update_locals();
-
-/* list of start messages, to show them in init if initialization is successfull */
-static GList *start_messages = NULL;
-
-/*
- * frees startup messages list
- */
-static void free_start_messages()
-{
- g_list_foreach(start_messages, (GFunc)g_free, NULL);
- g_list_free(start_messages);
- start_messages = NULL;
-}
-
-/*
- * shutdown GIOChannel
- */
-static void shutdown_channel(GIOChannel ** ch)
-{
- if (*ch)
- {
- GError *err = NULL;
- gint fd = g_io_channel_unix_get_fd(*ch);
- g_io_channel_shutdown(*ch, TRUE, &err);
- g_io_channel_unref(*ch);
- *ch = NULL;
- if (fd >= 0)
- {
- close(fd);
- }
- }
-}
-
-/*
- * called on bash exit
- */
-static void on_bash_exit(GPid pid, gint status, gpointer data)
-{
- bash_pid = target_pid = 0;
- g_spawn_close_pid(pid);
- shutdown_channel(&bash_ch_in);
- shutdown_channel(&bash_ch_out);
-
- /* delete locals */
- g_list_foreach(locals, (GFunc)g_free, NULL);
- locals = NULL;
-
- /* delete watches */
- g_list_foreach(watches, (GFunc)g_free, NULL);
- watches = NULL;
-
- g_source_destroy(bash_src);
-
- dbg_cbs->set_exited(0);
-}
-
-/*
- * reads bash stdout until the end
- */
-static gchar** read_to_the_end()
-{
- struct pollfd pfd;
- pfd.fd = bash_out;
- pfd.events = POLLIN;
- pfd.revents = 0;
-
- GString *out = g_string_new("");
-
- while(poll(&pfd, 1, 100))
- {
- gchar curbuf[1024];
-
- GIOStatus st;
- GError *err = NULL;
- gsize count;
-
- g_io_channel_read_chars(bash_ch_out, curbuf, sizeof(curbuf) - 1, &count, &err);
- gboolean have_error = err || (st == G_IO_STATUS_ERROR) || (st == G_IO_STATUS_EOF);
- if (!have_error && count)
- {
- curbuf[count] = '\0';
- g_string_append(out, curbuf);
- }
- }
-
- gchar **lines = g_strsplit(out->str, "\n", 0);
- g_string_free(out, TRUE);
-
- return lines;
-}
-
-/*
- * asyncronous bash output reader
- * looks for a stopped event, then notifies "debug" module and removes async handler
- */
-static gboolean on_read_from_bash(GIOChannel * src, GIOCondition cond, gpointer data)
-{
- gchar *line;
- gint length;
-
- if (G_IO_STATUS_NORMAL != g_io_channel_read_line(src, &line, NULL, &length, NULL))
- return TRUE;
-
- *(line + length) = '\0';
-
- g_free(line);
-
- return TRUE;
-}
-
-/*
- * execute "command" asyncronously
- * after writing command to an input channel
- * connects reader to output channel and exits
- * after execution
- */
-static void exec_async_command(gchar* command)
-{
-#ifdef DEBUG_OUTPUT
- dbg_cbs->send_message(command, "red");
-#endif
-
- /* write command to bash input channel */
- GIOStatus st;
- GError *err = NULL;
- gsize count;
-
- char bash_command[1000];
- sprintf(bash_command, "%s\n", command);
-
- while (strlen(bash_command))
- {
- st = g_io_channel_write_chars(bash_ch_in, bash_command, strlen(bash_command), &count, &err);
- strcpy(bash_command, bash_command + count);
- if (err || (st == G_IO_STATUS_ERROR) || (st == G_IO_STATUS_EOF))
- {
-#ifdef DEBUG_OUTPUT
- dbg_cbs->send_message("Error sending command", "red");
-#endif
- break;
- }
- }
-
- /* flush the chanel */
- st = g_io_channel_flush(bash_ch_in, &err);
-
- /* connect read callback to the output chanel */
- bash_id_out = g_io_add_watch(bash_ch_out, G_IO_IN, on_read_from_bash, NULL);
-}
-
-/*
- * execute "command" syncronously
- * i.e. reading output right
- * after execution
- */
-static gboolean exec_sync_command(gchar* command, gchar** output)
-{
-
- dbg_cbs->report_error(command);
-
-#ifdef DEBUG_OUTPUT
- dbg_cbs->send_message(command, "red");
-#endif
-
- /* write command to bash input channel */
- GIOStatus st;
- GError *err = NULL;
- gsize count;
-
- char bash_command[1000];
- sprintf(bash_command, "%s\n", command);
- while (strlen(bash_command))
- {
- st = g_io_channel_write_chars(bash_ch_in, bash_command, strlen(bash_command), &count, &err);
- strcpy(bash_command, bash_command + count);
- if (err || (st == G_IO_STATUS_ERROR) || (st == G_IO_STATUS_EOF))
- {
-#ifdef DEBUG_OUTPUT
- dbg_cbs->send_message("Error sending command", "red");
-#endif
- break;
- }
- }
- st = g_io_channel_flush(bash_ch_in, &err);
-
- gchar **lines = read_to_the_end ();
- int i = 0;
- while (lines[i++])
- dbg_cbs->send_message(lines[i - 1], "red");
- g_strfreev(lines);
-
- return TRUE;
-}
-
-/*
- * starts gdb and sets its parameners
- */
-static gboolean init(dbg_callbacks* callbacks)
-{
- dbg_cbs = callbacks;
-
- return TRUE;
-}
-
-static gboolean load(char* file, char* commandline, GList* env, GList *witer)
-{
- GError *err = NULL;
-
- bash_args[2] = file;
-
- /* spawn bash */
- //gchar **bash_env = utils_copy_environment(NULL, NULL);
- if (!g_spawn_async_with_pipes(NULL, bash_args, NULL,
- BASH_SPAWN_FLAGS, NULL,
- NULL, &bash_pid, &bash_in, &bash_out, NULL, &err))
- {
- dbg_cbs->report_error(_("Failed to spawn bash process"));
- return 0;
- }
-
- /* set handler for bash process exit event */
- g_child_watch_add(bash_pid, on_bash_exit, NULL);
- bash_src = g_child_watch_source_new(bash_pid);
-
- /* create GIOChanel for reading from bash */
- bash_ch_in = g_io_channel_unix_new(bash_in);
- g_io_channel_set_encoding(bash_ch_in, NULL, NULL);
- g_io_channel_set_buffered(bash_ch_in, FALSE);
-
- /* create GIOChanel for writing to bash */
- bash_ch_out = g_io_channel_unix_new(bash_out);
- g_io_channel_set_encoding(bash_ch_out, NULL, NULL);
- g_io_channel_set_buffered(bash_ch_out, FALSE);
-
- /* reading starting bash messages */
- gchar **lines = read_to_the_end ();
- int i = 0;
- while (lines[i++])
- dbg_cbs->send_message(lines[i - 1], "red");
- g_strfreev(lines);
-
- return TRUE;
-}
-
-/*
- * starts debugging
- */
-static void run(char* terminal_device)
-{
- /* setting tty */
- gchar command[1000];
- sprintf (command, "tty %s", terminal_device);
- exec_sync_command(command, NULL);
-}
-
-/*
- * stops bash
- */
-static void stop()
-{
- /* write command to bash input channel */
- GIOStatus st;
- GError *err = NULL;
- gsize count;
-
- char *bash_command = "quit";
- while (strlen(bash_command))
- {
- st = g_io_channel_write_chars(bash_ch_in, bash_command, strlen(bash_command), &count, &err);
- strcpy(bash_command, bash_command + count);
- if (err || (st == G_IO_STATUS_ERROR) || (st == G_IO_STATUS_EOF))
- {
-#ifdef DEBUG_OUTPUT
- dbg_cbs->send_message("Error sending command", "red");
-#endif
- break;
- }
- }
- st = g_io_channel_flush(bash_ch_in, &err);
- //exec_sync_command("-bash-exit", FALSE, NULL);
-}
-
-/*
- * resumes bash
- */
-static void resume()
-{
- //exec_async_command("-exec-continue");
-}
-
-/*
- * step over
- */
-static void step_over()
-{
- //exec_async_command("-exec-next");
-}
-
-/*
- * step into
- */
-static void step_into()
-{
- //exec_async_command("-exec-step");
-}
-
-/*
- * step out
- */
-static void step_out()
-{
- //exec_async_command("-exec-finish");
-}
-
-/*
- * execute until
- */
-static void execute_until(gchar *file, int line)
-{
-}
-
-/*
- * set breakpoint
- */
-static gboolean set_break(breakpoint* bp, break_set_activity bsa)
-{
- return TRUE;
-}
-
-/*
- * removes breakpoint
- */
-static gboolean remove_break(breakpoint* bp)
-{
- return TRUE;
-}
-
-/*
- * gets stack
- */
-static GList* get_stack()
-{
- GList *stack = NULL;
- return stack;
-}
-
-
-/*
- * updates watches list
- */
-static void update_watches()
-{
-}
-
-/*
- * updates locals list
- */
-static void update_locals()
-{
-}
-
-/*
- * get locals list
- */
-static GList* get_locals ()
-{
- return g_list_copy(locals);
-}
-
-/*
- * get watches list
- */
-static GList* get_watches ()
-{
- return g_list_copy(watches);
-}
-
-/*
- * get list of children
- */
-static GList* get_children (gchar* path)
-{
- return NULL;
-}
-
-/*
- * add new watch
- */
-static variable* add_watch(gchar* expression)
-{
- return NULL;
-}
-
-/*
- * remove watch
- */
-static void remove_watch(gchar* path)
-{
-}
-
-/*
- * evaluates given expression and returns the result
- */
-static gchar *evaluate_expression(gchar *expression)
-{
- return "";
-}
-
-/*
- * request bash interrupt
- */
-static gboolean request_interrupt()
-{
- return FALSE;
-}
-
-/*
- * get bash error messages
- */
-static gchar* error_message()
-{
- return err_message;
-}
-
-/*
- * define bash debug module
- */
-DBG_MODULE_DEFINE(bash);
-
-
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Plugins-Commits
mailing list