#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>

#include <stddef.h>
#include <limits.h>
#include <sys/types.h>
#include <sys/ptrace.h>

#include "nub-core.h"


void doatt(pid,already)
{
  if (already) {
    printf("Detaching from %d\n",pid);
    if (ptrace (PTRACE_DETACH, pid, 0, 0) != 0)
      printf("Something went wrong detaching from %d\n",pid);
  } else {
    printf("Attaching to %d\n",pid);
    if (ptrace (PTRACE_ATTACH, pid, 0, 0) !=0)
      printf("Something went wrong attaching to %d\n",pid);
  }
}

    
main(int argc,char **argv)
{
  char buf[10], *val;
  int success, rval;
  void * mynub;
  mynub = open_local_tether("/amd/holmes/u/ldisk/yduj/linuxtest","",0,NULL,0,NULL,"",0,&success);
  if(success)
    printf("Created tether.");
  else
    printf("Some lossage creating tether...");
  
  buf[0] = 0;
  while(buf[0] != 'q') {
    printf("c, m, q: ");
    gets(buf);
    switch(buf[0]) {
    case 'm':
      printf("Getting memory\n");
      rval = read_32b_from_process_memory (mynub, 0x80000000,&success);
      if (success)
	perror("Read memory lost");
      else
	printf("Read memory: value %d\n", rval);
      break;
    case 'c': 
      printf("Continuing\n");
      nub_application_continue(mynub);
      break;
    case 'q':
      printf("Quitting\n");
      break;
    default:
      printf("Eh?");
      break;
    }
  }
  /*
  if(mainatt)
    doatt(mainpid, mainatt);
  if (friendatt)
    doatt(friendpid, friendatt);
  */
}


syntax highlighted by Code2HTML, v. 0.9.1