Difference between revisions of "Bcopy"
m |
m |
||
Line 17: | Line 17: | ||
bset &data 1 65 66 67 68 69 | bset &data 1 65 66 67 68 69 | ||
bset &test 1 97 | bset &test 1 97 | ||
− | bcopy &test | + | bcopy &test 5 &data 4 -1 |
echo -a $bvar(&test,1,$bvar(&test,0)) | echo -a $bvar(&test,1,$bvar(&test,0)) | ||
− | This will copy | + | This will copy values 68 69 from &data to the fifth postion of &test. Positions 2-4 of &test will be zero filled. The echo will return: 97 0 0 0 68 69 |
bset &data 1 65 66 67 68 69 | bset &data 1 65 66 67 68 69 | ||
bset &test 1 97 98 99 100 | bset &test 1 97 98 99 100 | ||
− | bcopy &test 2 &data 4 2 | + | bcopy -z &test 2 &data 4 2 |
+ | echo -a $bvar(&data,1,$bvar(&data,0)) | ||
echo -a $bvar(&test,1,$bvar(&test,0)) | 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 | + | This will copy values 68 69 from &data to the second position of &test. The -z switch will zero fill the copied values 68 69 of &data. Notice that values 98 99 will be overwritten. The first echo will return: 65 66 67 0 0. The second echo will return: 97 68 69 100 |
+ | |||
+ | bset &data 1 65 66 67 68 69 | ||
+ | bset &test 1 97 98 99 100 | ||
+ | bcopy -c &test 2 &data 3 2 | ||
+ | echo -a $bvar(&test,1,$bvar(&test,0)) | ||
+ | This will copy values 67 68 from &data to the second position of &test. The -c switch will chop value 100. The echo will return: 97 67 68 |
Revision as of 18:37, 13 October 2006
The bcopy command is used to copy a (part of a) binary file.
bcopy [-zc] <©> <N> <&source> <S> <M>
This copies M bytes from &source starting at position S to © starting at position N. If © doesn't exist yet, the binary file will be created and zero filled to the Nth byte. If © already exists but smaller then N bytes, it will be extended with zeros to the Nth byte. If © already exists and is N bytes or larger, the copied bytes will overwrite the old bytes in ©. 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 © 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 5 &data 4 -1 echo -a $bvar(&test,1,$bvar(&test,0))
This will copy values 68 69 from &data to the fifth postion of &test. Positions 2-4 of &test will be zero filled. The echo will return: 97 0 0 0 68 69
bset &data 1 65 66 67 68 69 bset &test 1 97 98 99 100 bcopy -z &test 2 &data 4 2 echo -a $bvar(&data,1,$bvar(&data,0)) echo -a $bvar(&test,1,$bvar(&test,0))
This will copy values 68 69 from &data to the second position of &test. The -z switch will zero fill the copied values 68 69 of &data. Notice that values 98 99 will be overwritten. The first echo will return: 65 66 67 0 0. The second echo will return: 97 68 69 100
bset &data 1 65 66 67 68 69 bset &test 1 97 98 99 100 bcopy -c &test 2 &data 3 2 echo -a $bvar(&test,1,$bvar(&test,0))
This will copy values 67 68 from &data to the second position of &test. The -c switch will chop value 100. The echo will return: 97 67 68