(file) Return to binary-read.c CVS log (file) Jump to this file's LXR Page (dir) Up to [CENS] / emstar / fusd / examples

File: [CENS] / emstar / fusd / examples / binary-read.c (download) / (as text)
Revision: 1.1, Wed Feb 11 00:58:56 2004 UTC (5 years, 9 months ago) by jelson
Branch: MAIN
CVS Tags: scale_radio_channel, rdd_alpha_version_1, pregeonet, nims-lab-Sep07-2004, nims-jr-Sep05-04, mote, lessgps_release, kiss_release, bp_scale_radio_channel, acoustic-05-18-06, PRE_TOSNIC_FIX, PRE_NOMEGA_MOTENIC, PRE_MOTENIC_CLEANUP, PRE_CEILING_FIX, PRE_64BIT, MOTENIC_PRE_BUGFIX_20050415, LESSGPS_1_00, LAURA_CALIBRATION_EXPERIMENTS, KISS_1_0, HOSTMOTE_V_6_EXPERIMENTAL, HOSTMOTE_PROTOCOL_VERSION_7, HOSTMOTE_PROTOCOL_VERSION_6_WITH_HOSTMOAP, HOSTMOTE_PROTOCOL_VERSION_5_WITH_HOSTMOAP, HOSTMOTE_PROTOCOL_VERSION_5, HOSTMOTE_PROTOCOL_VERSION_4, HOSTMOTE_PROTOCOL_VERSION_3, HEAD, ESS_RELEASE_3_5, ESS_RELEASE_3_4, ESS_RELEASE_3_3, ESS_RELEASE_3_2, ESS_RELEASE_3_1, ESS_RELEASE_3_0, ESS_RELEASE_2_0, ESS_CONNECTIVITY, ESS_CENTROUTE_TESTING, ESS2-CMS-V1_5_pretest, ESS2-CMS-V1_4cMergeSympathy_2, ESS2-CMS-V1_4c, ESS2-CMS-V1_4b, ESS2-CMS-V1_4a, ESS2-CMS-V1_3, ESS2-CMS-V1_2, ESS2-CMS-V1_1, ESS2-CMS-V1_0, EMSTAR_RELEASE_2_5, EMSTAR_RELEASE_2_1_BRANCH, EMSTAR_RELEASE_2_1, EMSTAR_RELEASE_2_0_beta1, EMSTAR_RELEASE_2_0, EMSTAR_RELEASE_1_3_2, EMSTAR_RELEASE_1_3_1, EMSTAR_RELEASE_1_3, EMSTAR_PRE_HTML, CYCLOPS_RELEASE_CANDIDATE_2_0, CYCLOPS_PRERELEASE_STABLE, CENTROUTE_EMSTAR_SOCKETS, BG_1_0, BANGLADESH_ARSENIC_1_2, BANGLADESH_ARSENIC_1_1, AMARSS_JR_DEPLOYMENT_6_05_07
added small utility to read binary version of the fusd status dev

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <string.h>

#include "fusd/fusd.h"


#define MAXLEN 10000

int main(int argc, char *argv[])
{
  int fd, retval, len = 0, num_status, i;
  char *buf = malloc(MAXLEN);
  char tmp[1024];
  fusd_status_t *stat;

  /* open a channel to fusd */
  if ((fd = open(FUSD_STATUS_DEVNAME, O_RDONLY)) < 0) {
    printf("can't open FUSD status (%s): %m", FUSD_STATUS_DEVNAME);
    exit(1);
  }

  /* Tell it we want to read status in binary */
  if (ioctl(fd, FUSD_STATUS_USE_BINARY) < 0) {
    printf("trying to switch FUSD status into binary mode: %m");
    exit(1);
  }

  while ((retval = read(fd, tmp, sizeof(tmp))) > 0) {
    memcpy(buf+len, tmp, retval);
    len += retval;
    if (len >= MAXLEN-sizeof(tmp)) {
      printf("buffer too small\n");
      exit(1);
    }
  }

  stat = (fusd_status_t *) buf;
  num_status = len / sizeof(fusd_status_t);

  printf("Zombie?   Device\n");
  printf("-------   ------\n");

  for (i = 0; i < num_status; i++)
    printf("%5d     %s\n", stat[i].zombie, stat[i].name);

  return 0;
}

CENS CVS Mailing List
Powered by
ViewCVS 0.9.2