Bontiv-Sourceer source code viewer
Root | Help
./web-crawler/src/cgi/process.c
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include "../tplcp/strct.h"
#include "cgi.h"

int num_process(MYSQL* sql)
{
  MYSQL_RES *result;
  MYSQL_ROW row;
  int num = 0;

  if (!mysql_query(sql, "SELECT COUNT(*) FROM process"))
    {
      result = mysql_use_result(sql);
      row = mysql_fetch_row(result);
      if (row)
	num = atoi(row[0]);
      mysql_free_result(result);
      return num;
    }
  else
    {
      fputs("MySQL ERROR\n", stderr);
      fputs(mysql_error(sql), stderr);
      fputs("\n", stderr);
      exit(1);
    }
}

void get_process(tpl_data tpl)
{
  MYSQL* sql = bdd_connect();
  MYSQL_RES *result;
  MYSQL_ROW row;
  char* tab;
  int num;
  char update[300];

  num = num_process(sql);
  if (num)
    {
      tab = malloc(num * 300);
      num = 0;
      if (!mysql_query(sql, "SELECT process, start, url FROM process LEFT JOIN page ON page = pid"))
	{
	  result = mysql_store_result(sql);
	  while (row = mysql_fetch_row(result))
	    {
	      if (getpgid(atoi(row[0])) == (pid_t)-1)
		{
		  sprintf(update, "DELETE FROM process WHERE process = '%s'", row[0]);
		  mysql_query(sql, update);
		}
	      else
		{
		  sprintf(tab + num, "<tr><td>%s</td><td>%s</td><td><a href=\"kill.cgi?%s\">Term</a></td></tr>\n", row[0], row[2], row[0]);
		  while (tab[num] != 0)
		    num++;
		}
	    }
	  mysql_free_result(result);
	  tpl_updt(tpl, "content", tab);
	}
      else
	{
	  fputs(mysql_error(sql), stderr);
	  exit(0);
	}
    }
}

char* display_process(tpl_data data, size_t *length);

void main()
{
  tpl_data data = new_tpl();
  size_t length = 0;
  char* page;

  get_process(data);

  puts("Content-Type: text/html; charset=UTF-8");
  page = display_process(data, &length);
  printf("Content-Length: %u\n\n", length);
  puts(page);
}
Presented with Bontiv-Sourceer