1 | #!/bin/bash
|
---|
2 |
|
---|
3 | # Copyright 2019 The Go Authors. All rights reserved.
|
---|
4 | # Use of this source code is governed by a BSD-style
|
---|
5 | # license that can be found in the LICENSE file.
|
---|
6 |
|
---|
7 | set -e
|
---|
8 | shopt -s nullglob
|
---|
9 |
|
---|
10 | knownfolders="$(printf '%s\n' "/mnt/c/Program Files (x86)/Windows Kits/"/*/Include/*/um/KnownFolders.h | sort -Vr | head -n 1)"
|
---|
11 | [[ -n $knownfolders ]] || { echo "Unable to find KnownFolders.h" >&2; exit 1; }
|
---|
12 |
|
---|
13 | {
|
---|
14 | echo "// Code generated by 'mkknownfolderids.bash'; DO NOT EDIT."
|
---|
15 | echo
|
---|
16 | echo "package windows"
|
---|
17 | echo "type KNOWNFOLDERID GUID"
|
---|
18 | echo "var ("
|
---|
19 | while read -r line; do
|
---|
20 | [[ $line =~ DEFINE_KNOWN_FOLDER\((FOLDERID_[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+)\) ]] || continue
|
---|
21 | printf "%s = &KNOWNFOLDERID{0x%08x, 0x%04x, 0x%04x, [8]byte{0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x}}\n" \
|
---|
22 | "${BASH_REMATCH[1]}" $(( "${BASH_REMATCH[2]}" )) $(( "${BASH_REMATCH[3]}" )) $(( "${BASH_REMATCH[4]}" )) \
|
---|
23 | $(( "${BASH_REMATCH[5]}" )) $(( "${BASH_REMATCH[6]}" )) $(( "${BASH_REMATCH[7]}" )) $(( "${BASH_REMATCH[8]}" )) \
|
---|
24 | $(( "${BASH_REMATCH[9]}" )) $(( "${BASH_REMATCH[10]}" )) $(( "${BASH_REMATCH[11]}" )) $(( "${BASH_REMATCH[12]}" ))
|
---|
25 | done < "$knownfolders"
|
---|
26 | echo ")"
|
---|
27 | } | gofmt > "zknownfolderids_windows.go"
|
---|