Difference between revisions of "Bcopy"

From Scriptwiki
Jump to: navigation, search
m
m
Line 10: Line 10:
  
 
== Examples ==
 
== Examples ==
  [[bset]] &data 65 66 67 68 69
+
  [[bset]] &data 1 65 66 67 68 69
 
  bcopy &test 1 &data 3 2
 
  bcopy &test 1 &data 3 2
  [[echo]] -a $bvar(&test,1,$bvar(&test,0))
+
  [[echo]] -a [[$bvar]](&test,1,$bvar(&test,0))
This will copy the values 67 68 from &data to &test.
+
This will copy the values 67 68 from &data to the first position of &test.
 +
 
 +
bset &data 1 65 66 67 68 69
 +
bset &test 1 97
 +
bcopy &test 4 &data 5 2
 +
echo -a $bvar(&test,1,$bvar(&test,0))
 +
This will copy value 69 from &data to the fourth postion of &test. Position 2 and 3 of &test will be zero filled. The echo will return: 97 0 0 69
 +
 
 +
bset &data 1 65 66 67 68 69
 +
bset &test 1 97 98 99 100
 +
bcopy &test 2 &data 4 2
 +
echo -a $bvar(&test,1,$bvar(&test,0))
 +
This will copy values 68 69 from &data to the second position of &test. Notice that values 98 99 will be overwritten. The echo will return: 97 68 69 100

Revision as of 18:16, 13 October 2006

The bcopy command is used to copy a (part of a) binary file.

bcopy [-zc] <&copy> <N> <&source> <S> <M>

This copies M bytes from &source starting at position S to &copy starting at position N. If &copy doesn't exist yet, the binary file will be created and zero filled to the Nth byte. If &copy already exists but smaller then N bytes, it will be extended with zeros to the Nth byte. If &copy already exists and is N bytes or larger, the copied bytes will overwrite the old bytes in &copy. If &source is smaller then S + M - 1 bytes and &source is equal or larger then S bytes, then all bytes starting from S to the last byte will be copied. If &source is smaller then S bytes, you will get an error. You can use M = -1 to copy all bytes starting from byte S to the last byte.

The -z switch will zero fill all bytes in &source that were copied. The -c switch will chop &copy to N + M bytes.

Examples

bset &data 1 65 66 67 68 69
bcopy &test 1 &data 3 2
echo -a $bvar(&test,1,$bvar(&test,0))

This will copy the values 67 68 from &data to the first position of &test.

bset &data 1 65 66 67 68 69
bset &test 1 97
bcopy &test 4 &data 5 2
echo -a $bvar(&test,1,$bvar(&test,0))

This will copy value 69 from &data to the fourth postion of &test. Position 2 and 3 of &test will be zero filled. The echo will return: 97 0 0 69

bset &data 1 65 66 67 68 69
bset &test 1 97 98 99 100
bcopy &test 2 &data 4 2
echo -a $bvar(&test,1,$bvar(&test,0))

This will copy values 68 69 from &data to the second position of &test. Notice that values 98 99 will be overwritten. The echo will return: 97 68 69 100