forked from openrs2/openrs2
This is useful for checking the CRC-32 checksum of files used by the loader. It outputs the checksum in signed decimal format, which is the format used in the file name suffixes in the loader (e.g. unpackclass_-1911426584.pack). Signed-off-by: Graham <gpe@openrs2.dev>
parent
c849c5ad46
commit
44fb2ebe25
@ -0,0 +1,29 @@ |
||||
plugins { |
||||
`maven-publish` |
||||
application |
||||
kotlin("jvm") |
||||
} |
||||
|
||||
application { |
||||
mainClassName = "dev.openrs2.crc32.Crc32CommandKt" |
||||
} |
||||
|
||||
dependencies { |
||||
api(project(":cli")) |
||||
} |
||||
|
||||
publishing { |
||||
publications.create<MavenPublication>("maven") { |
||||
from(components["java"]) |
||||
|
||||
pom { |
||||
packaging = "jar" |
||||
name.set("OpenRS2 CRC-32") |
||||
description.set( |
||||
""" |
||||
A tool for calculating the CRC-32 checksum of a file. |
||||
""".trimIndent() |
||||
) |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,32 @@ |
||||
package dev.openrs2.crc32 |
||||
|
||||
import com.github.ajalt.clikt.core.CliktCommand |
||||
import com.github.ajalt.clikt.parameters.options.option |
||||
import dev.openrs2.cli.defaultStdin |
||||
import dev.openrs2.cli.inputStream |
||||
import java.util.zip.CRC32 |
||||
|
||||
fun main(args: Array<String>) = Crc32Command().main(args) |
||||
|
||||
class Crc32Command : CliktCommand(name = "crc32") { |
||||
private val input by option().inputStream().defaultStdin() |
||||
|
||||
override fun run() { |
||||
val crc = CRC32() |
||||
|
||||
input.use { input -> |
||||
val bytes = ByteArray(4096) |
||||
|
||||
while (true) { |
||||
val len = input.read(bytes) |
||||
if (len == -1) { |
||||
break |
||||
} |
||||
|
||||
crc.update(bytes, 0, len) |
||||
} |
||||
} |
||||
|
||||
echo(crc.value.toInt()) |
||||
} |
||||
} |
Loading…
Reference in new issue