From WikiChip
Difference between revisions of "mirc/commands/bread"
< mirc‎ | commands

m (Bot: de-linking old mIRC menu)
m (addl switch and examples)
Line 5: Line 5:
  
 
== Synopsis ==
 
== Synopsis ==
  /bread -t <filename> <bytepos> <numbytes> <&bvar>
+
  /bread -ta <filename> <bytepos> <numbytes> <&bvar>
  
 
== Switches ==
 
== Switches ==
* '''-t''' - Reads data up to the next CR/LF
+
* '''-t''' - Reads data preceding the first encountered line ending or EOF, interpreting as UTF8 text
 +
* '''-a''' - Modifier for -t switch, avoids translating codepoints 128-255 to UTF8 if the data doesn't contain codepoints 256+
  
 
== Parameters ==
 
== Parameters ==
* '''<filename>''' - The file name to read from.
+
* '''<filename>''' - The file name to read from. Double quotes needed if string contains space
 
* '''<bytepos>''' - The starting byte position, '''remember, this starts at 0, not 1'''.
 
* '''<bytepos>''' - The starting byte position, '''remember, this starts at 0, not 1'''.
 
* '''<numbytes>''' - The length (bytes) to be read.
 
* '''<numbytes>''' - The length (bytes) to be read.
* '''<&bvar>''' - The binary variable to store the data in.
+
* '''<&bvar>''' - The binary variable to store the data in. If &binvar already exists, contents are replaced.
  
 
== Example ==
 
== Example ==
<syntaxhighlight lang="mIRC">;noop $copyExample(FileA,FileB)
+
<source lang="mIRC">;noop $copyExample(FileA,FileB)
 
alias copyExample {
 
alias copyExample {
 
   ;Read the whole file into a binary variable
 
   ;Read the whole file into a binary variable
Line 24: Line 25:
 
   ;Write the bytes form the binary variable to a file
 
   ;Write the bytes form the binary variable to a file
 
   bwrite $qt($2) 0 -1 &tempFile
 
   bwrite $qt($2) 0 -1 &tempFile
}</syntaxhighlight>
+
}</source>
 +
 
 +
<source lang="mIRC">
 +
Using -t switch:
 +
Line ending is defined as data preceding
 +
 
 +
//bset &v 1 233 | bwrite -c test.dat 0 &v | bread test.dat 0 9 &v2 | echo -a $bvar(&v2,1-)
 +
result: 233 because no switch used
 +
 
 +
//bset &v 1 233 | bwrite -c test.dat 0 &v | bread -t test.dat 0 9 &v2 | echo -a $bvar(&v2,1-)
 +
result: 195 169 because -t used without -a interprets as UTF8 encoding of codepoint 233
 +
 
 +
//bset &v 1 233 | bwrite -c test.dat 0 &v | bread -ta test.dat 0 9 &v2 | echo -a $bvar(&v2,1-)
 +
result: 233 because -ta used AND data read doesn't contain codepoint 256+
 +
 
 +
//bset &v 1 226 156 148 233 | bwrite -c test.dat 0 &v | bread -ta test.dat 0 9 &v2 | echo -a $bvar(&v2,1-)
 +
result: 226 156 148 195 169 because data read contains codepoint 10004
 +
* If bread's offset changed from 0 to 3, result is 233 because the read portion of the line doesn't contain the codepoint above 255
 +
</source>
 +
 
 +
<source lang="mIRC">//bread $qt($mircexe) 0 $file($mircexe).size &v | echo -a $md5(&v,1) is the same as $md5($mircexe,2) if enough memory available for binvar</source>
  
 
== Compatibility ==
 
== Compatibility ==
 
{{mIRC compatibility|5.3}}
 
{{mIRC compatibility|5.3}}
 
 
== See also ==
 
== See also ==
* [[List of commands - mIRC|List of commands]]
 
* [[List of identifiers - mIRC|List of identifiers]]
 
 
* {{mIRC|$file}}
 
* {{mIRC|$file}}
 +
* {{mIRC|/bcopy}}
 +
* {{mIRC|/breplace}}
 
* {{mIRC|/bset}}
 
* {{mIRC|/bset}}
 +
* {{mIRC|/btrunc}}
 
* {{mIRC|/bunset}}
 
* {{mIRC|/bunset}}
 
* {{mIRC|/bwrite}}
 
* {{mIRC|/bwrite}}
* {{mIRC|/bcopy}}
 
* {{mIRC|/breplace}}
 
 
* {{mIRC|$bvar}}
 
* {{mIRC|$bvar}}
 
* {{mIRC|$bfind}}
 
* {{mIRC|$bfind}}
 
{{mIRC command list}}
 
 
[[Category:mIRC commands|bread command - mIRC]]
 

Revision as of 21:49, 10 December 2019

The /bread command can be used to read a certain amount of bytes from a file at a given position and store it in a binary variable.

The beginning of the file is position 0.

Synopsis

/bread -ta <filename> <bytepos> <numbytes> <&bvar>

Switches

  • -t - Reads data preceding the first encountered line ending or EOF, interpreting as UTF8 text
  • -a - Modifier for -t switch, avoids translating codepoints 128-255 to UTF8 if the data doesn't contain codepoints 256+

Parameters

  • <filename> - The file name to read from. Double quotes needed if string contains space
  • <bytepos> - The starting byte position, remember, this starts at 0, not 1.
  • <numbytes> - The length (bytes) to be read.
  • <&bvar> - The binary variable to store the data in. If &binvar already exists, contents are replaced.

Example

;noop $copyExample(FileA,FileB)
alias copyExample {
   ;Read the whole file into a binary variable
   bread $qt($1) 0 $file($1).size &tempFile
 
   ;Write the bytes form the binary variable to a file
   bwrite $qt($2) 0 -1 &tempFile
}
Using -t switch:
Line ending is defined as data preceding
 
//bset &v 1 233 | bwrite -c test.dat 0 &v | bread test.dat 0 9 &v2 | echo -a $bvar(&v2,1-)
result: 233 because no switch used
 
//bset &v 1 233 | bwrite -c test.dat 0 &v | bread -t test.dat 0 9 &v2 | echo -a $bvar(&v2,1-)
result: 195 169 because -t used without -a interprets as UTF8 encoding of codepoint 233
 
//bset &v 1 233 | bwrite -c test.dat 0 &v | bread -ta test.dat 0 9 &v2 | echo -a $bvar(&v2,1-)
result: 233 because -ta used AND data read doesn't contain codepoint 256+
 
//bset &v 1 226 156 148 233 | bwrite -c test.dat 0 &v | bread -ta test.dat 0 9 &v2 | echo -a $bvar(&v2,1-)
result: 226 156 148 195 169 because data read contains codepoint 10004
* If bread's offset changed from 0 to 3, result is 233 because the read portion of the line doesn't contain the codepoint above 255
//bread $qt($mircexe) 0 $file($mircexe).size &v | echo -a $md5(&v,1) is the same as $md5($mircexe,2) if enough memory available for binvar

Compatibility

Added: mIRC v5.3
Added on: 13 Dec 1997
Note: Unless otherwise stated, this was the date of original functionality.
Further enhancements may have been made in later versions.

See also