static char *sccsid
= "@(#)dd.c 5.1 (Berkeley) %G%";
0000,0001,0002,0003,0234,0011,0206,0177,
0227,0215,0216,0013,0014,0015,0016,0017,
0020,0021,0022,0023,0235,0205,0010,0207,
0030,0031,0222,0217,0034,0035,0036,0037,
0200,0201,0202,0203,0204,0012,0027,0033,
0210,0211,0212,0213,0214,0005,0006,0007,
0220,0221,0026,0223,0224,0225,0226,0004,
0230,0231,0232,0233,0024,0025,0236,0032,
0040,0240,0241,0242,0243,0244,0245,0246,
0247,0250,0133,0056,0074,0050,0053,0041,
0046,0251,0252,0253,0254,0255,0256,0257,
0260,0261,0135,0044,0052,0051,0073,0136,
0055,0057,0262,0263,0264,0265,0266,0267,
0270,0271,0174,0054,0045,0137,0076,0077,
0272,0273,0274,0275,0276,0277,0300,0301,
0302,0140,0072,0043,0100,0047,0075,0042,
0303,0141,0142,0143,0144,0145,0146,0147,
0150,0151,0304,0305,0306,0307,0310,0311,
0312,0152,0153,0154,0155,0156,0157,0160,
0161,0162,0313,0314,0315,0316,0317,0320,
0321,0176,0163,0164,0165,0166,0167,0170,
0171,0172,0322,0323,0324,0325,0326,0327,
0330,0331,0332,0333,0334,0335,0336,0337,
0340,0341,0342,0343,0344,0345,0346,0347,
0173,0101,0102,0103,0104,0105,0106,0107,
0110,0111,0350,0351,0352,0353,0354,0355,
0175,0112,0113,0114,0115,0116,0117,0120,
0121,0122,0356,0357,0360,0361,0362,0363,
0134,0237,0123,0124,0125,0126,0127,0130,
0131,0132,0364,0365,0366,0367,0370,0371,
0060,0061,0062,0063,0064,0065,0066,0067,
0070,0071,0372,0373,0374,0375,0376,0377,
0000,0001,0002,0003,0067,0055,0056,0057,
0026,0005,0045,0013,0014,0015,0016,0017,
0020,0021,0022,0023,0074,0075,0062,0046,
0030,0031,0077,0047,0034,0035,0036,0037,
0100,0117,0177,0173,0133,0154,0120,0175,
0115,0135,0134,0116,0153,0140,0113,0141,
0360,0361,0362,0363,0364,0365,0366,0367,
0370,0371,0172,0136,0114,0176,0156,0157,
0174,0301,0302,0303,0304,0305,0306,0307,
0310,0311,0321,0322,0323,0324,0325,0326,
0327,0330,0331,0342,0343,0344,0345,0346,
0347,0350,0351,0112,0340,0132,0137,0155,
0171,0201,0202,0203,0204,0205,0206,0207,
0210,0211,0221,0222,0223,0224,0225,0226,
0227,0230,0231,0242,0243,0244,0245,0246,
0247,0250,0251,0300,0152,0320,0241,0007,
0040,0041,0042,0043,0044,0025,0006,0027,
0050,0051,0052,0053,0054,0011,0012,0033,
0060,0061,0032,0063,0064,0065,0066,0010,
0070,0071,0072,0073,0004,0024,0076,0341,
0101,0102,0103,0104,0105,0106,0107,0110,
0111,0121,0122,0123,0124,0125,0126,0127,
0130,0131,0142,0143,0144,0145,0146,0147,
0150,0151,0160,0161,0162,0163,0164,0165,
0166,0167,0170,0200,0212,0213,0214,0215,
0216,0217,0220,0232,0233,0234,0235,0236,
0237,0240,0252,0253,0254,0255,0256,0257,
0260,0261,0262,0263,0264,0265,0266,0267,
0270,0271,0272,0273,0274,0275,0276,0277,
0312,0313,0314,0315,0316,0317,0332,0333,
0334,0335,0336,0337,0352,0353,0354,0355,
0356,0357,0372,0373,0374,0375,0376,0377,
0000,0001,0002,0003,0067,0055,0056,0057,
0026,0005,0045,0013,0014,0015,0016,0017,
0020,0021,0022,0023,0074,0075,0062,0046,
0030,0031,0077,0047,0034,0035,0036,0037,
0100,0132,0177,0173,0133,0154,0120,0175,
0115,0135,0134,0116,0153,0140,0113,0141,
0360,0361,0362,0363,0364,0365,0366,0367,
0370,0371,0172,0136,0114,0176,0156,0157,
0174,0301,0302,0303,0304,0305,0306,0307,
0310,0311,0321,0322,0323,0324,0325,0326,
0327,0330,0331,0342,0343,0344,0345,0346,
0347,0350,0351,0255,0340,0275,0137,0155,
0171,0201,0202,0203,0204,0205,0206,0207,
0210,0211,0221,0222,0223,0224,0225,0226,
0227,0230,0231,0242,0243,0244,0245,0246,
0247,0250,0251,0300,0117,0320,0241,0007,
0040,0041,0042,0043,0044,0025,0006,0027,
0050,0051,0052,0053,0054,0011,0012,0033,
0060,0061,0032,0063,0064,0065,0066,0010,
0070,0071,0072,0073,0004,0024,0076,0341,
0101,0102,0103,0104,0105,0106,0107,0110,
0111,0121,0122,0123,0124,0125,0126,0127,
0130,0131,0142,0143,0144,0145,0146,0147,
0150,0151,0160,0161,0162,0163,0164,0165,
0166,0167,0170,0200,0212,0213,0214,0215,
0216,0217,0220,0232,0233,0234,0235,0236,
0237,0240,0252,0253,0254,0255,0256,0257,
0260,0261,0262,0263,0264,0265,0266,0267,
0270,0271,0272,0273,0274,0275,0276,0277,
0312,0313,0314,0315,0316,0317,0332,0333,
0334,0335,0336,0337,0352,0353,0354,0355,
0356,0357,0372,0373,0374,0375,0376,0377,
enum ftype
{ unknown
, reg
, chr
, tape
, ispipe
} iftype
;
int ebcdic(), ibm(), ascii(), null(), cnull(), term(), block(), unblock();
fprintf(stderr
,"bad arg: %s\n", string
);
if(conv
== null
&& cflag
&(LCASE
|UCASE
))
obf
= ofile
? open(ofile
, O_WRONLY
|O_CREAT
, 0666) : dup(1);
fprintf(stderr
,"cannot create: %s\n", ofile
);
if (conv
== null
&& (cflag
&~ (SYNC
|NERR
)) == 0)
if(ibs
== 0 || obs
== 0) {
fprintf(stderr
,"counts: cannot be zero\n");
sbrk(64); /* For good measure */
if(ibuf
== (char *)-1 || obuf
== (char *)-1) {
fprintf(stderr
, "not enough memory\n");
if (signal(SIGINT
, SIG_IGN
) != SIG_IGN
)
if (ioctl(ibf
, MTIOCTOP
, (char *)&op
) < 0)
perror("dd: skip: tape forward-space-record");
lseek(ibf
, skip
*ibs
, SEEK_CUR
);
switch (checktype(obf
)) {
lseek(obf
, (long)obs
*seekn
, SEEK_CUR
);
fprintf(stderr
, "dd: can't seek on pipe\n");
lseek(obf
, (long)obs
, SEEK_CUR
);
if(count
==0 || nifr
+nipr
!=count
) {
bzero((char *)ibuf
, ibs
);
ibc
= read(ibf
, ibuf
, ibs
);
/* guess actual read size; default still -1 */
advance(ibf
, iftype
, ibs
);
if(ibc
== 0 && --files
<=0) {
bzero(ibuf
+ ibc
, ibs
- ibc
);
c
= write(obf
, obuf
, obc
);
while(*cs
>= '0' && *cs
<= '9')
fprintf(stderr
, "dd: argument %ld out of range\n", n
);
if(cflag
&UCASE
&& c
>='a' && c
<='z')
if(cflag
&LCASE
&& c
>='A' && c
<='Z')
if(cflag
&UCASE
&& c
>='a' && c
<='z')
if(cflag
&LCASE
&& c
>='A' && c
<='Z')
if(cflag
&UCASE
&& c
>='a' && c
<='z')
if(cflag
&LCASE
&& c
>='A' && c
<='Z')
if(cflag
&UCASE
&& c
>='a' && c
<='z')
if(cflag
&LCASE
&& c
>='A' && c
<='Z')
fprintf(stderr
,"%u+%u records in\n", nifr
, nipr
);
fprintf(stderr
,"%u+%u records out\n", nofr
, nopr
);
fprintf(stderr
,"%u truncated records\n", ntrunc
);
if (fstat(fd
, &st
) == -1)
if (S_ISFIFO(st
.st_mode
))
if (S_ISCHR(st
.st_mode
)) {
if (ioctl(fd
, MTIOCGET
, (char *)&mt
) != -1)
return (reg
); /* or dir, symlink, blk, or ??? */
advance(fd
, fdtype
, count
)
lseek(fd
, count
, SEEK_CUR
);
fprintf(stderr
, "dd: unknown input type, can't resynchronize\n");