/***********
 * $Id: cmd_cpchain.c,v 1.4 2001/05/30 15:40:55 harbourn Exp $
 * cpchain command for fatback
 ***********/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "interface.h"
#include "interface_data.h"
#include "fat.h"
#include "output.h"
#include "util.h"
#include "recovery.h"

/*
 * Copy a cluster chain to a file.
 */
void cmd_cpchain(int argc, char *argv[])
{
     char *default_name, *name, *def_prefix = "chain-";
     unsigned long cluster;
     int bpc;

     if (argc < 3 || !(cluster = atol(argv[1]))) {
	  display(NORMAL, "Usage: cpchain cluster [output file]\n");
	  return;
     }
     /* calculate the bytes per sector */
     bpc = vbr->bytes_per_sect * vbr->sects_per_clust;

     /* generate a default name, incase the user only
      * specifies a directory to put the file */
     default_name = emalloc(strlen(def_prefix) + strlen(argv[1]) + 1);
     strcpy(default_name, def_prefix);
     strcpy(default_name + strlen(def_prefix), argv[1]);
     if (!argv[2])
          name = default_name;
     else {
          name = argv[2];
          if (*argv[0] == '~')
               name = replace_tilde(name);
          if (stat_is_dir(name) > 1) 
               name = fn_cat(name, default_name);
     }

     extract_file(NULL, clusts, bpc, 0, cluster, vbr->fat_entries, name);
     free(default_name);
     return;
}


syntax highlighted by Code2HTML, v. 0.9.1