Yes, you are right.
Code:
gchar *get_hash(const gchar *filepath, GChecksumType hash_type) {
FILE *fp;
if (NULL != (fp = fopen(filepath, "r+b"))) {
guchar buffer[65536];
gint read_bytes;
gchar *result;
GChecksum *checksum = g_checksum_new(hash_type);
while ((read_bytes = fread(buffer, sizeof(buffer), 1, fp)) > 0)
g_checksum_update(checksum, buffer, read_bytes);
fclose(fp);
result = g_strdup((gchar *) g_checksum_get_string(checksum));
g_checksum_free(checksum);
return result;
}
return g_strdup("");
}
Unfortunately, the returned array contains a different hash value from that returned by md5sum