libdatrie 0.2.12
libdatrie 0.2.12 ออกแล้ว ไล่หลัง 0.2.11 เพียง 2 เดือน หลังจากผ่านการทำความสะอาดโค้ดมาระยะหนึ่ง
เริ่มจากผมได้รับแพตช์จากคุณ Peter Moulder ทางเมลส่วนตัว ซึ่งเสนอปรับแก้ 3 รายการคือ:
- แก้การประกาศฟังก์ชันที่ไม่รับพารามิเตอร์ด้วยรูปแบบ
f(void)
แทนf()
เนื่องจากรูปแบบf()
เป็นเพียงการประกาศแบบ K&R ซึ่งไม่ระบุข้อมูลเกี่ยวกับพารามิเตอร์ ซึ่งในการ call จริงอาจใส่อาร์กิวเมนต์ใด ๆ มาก็ได้ ในขณะที่แบบf(void)
จะแสดงความชัดเจนว่าไม่รับพารามิเตอร์ใด ๆ - เปลี่ยนการกำหนดชนิด
Bool
ซึ่งเดิมกำหนดเป็น enumTRUE
,FALSE
ซึ่งจะไปชนกับค่าในซอร์สโค้ดอื่นได้ง่ายมาก จึงเปลี่ยนชื่อหลบแล้ว defineTRUE
,FALSE
แบบมีเงื่อนไขเอา - ตัด typedef ชนิด
byte
,word
,dword
ที่ไม่มีการใช้งานใน libdatrie แต่มีโอกาสชื่อชนกับซอร์สอื่นที่ไปใช้ร่วมสูงมาก
นั่นนำไปสู่การตรวจสอบหาประเด็นอื่น ๆ ต่อ โดยใช้ CFLAGS="-ansi -pedantic -Wall"
รวมถึงการใช้ CC=clang
ด้วย ทำให้จับประเด็นเพิ่มได้อีกหลายรายการ หนึ่งในนั้นมีผลข้างเคียงเป็นการป้องกันการตัดท้ายชื่อพาธของพจนานุกรมที่ยาวมาก ๆ ด้วย
เหลือประเด็นที่ยังคงไว้ คือการใช้ "%ls"
ใน printf()
format string เพื่อพิมพ์ข้อความยูนิโค้ดที่อยู่ในรูป wide char string ซึ่งไม่มีใน C90 โค้ดนี้เป็นโค้ดที่อยู่ใน test ในส่วนแสดงข้อมูลการทำงานของ test เท่านั้น ไม่ได้อยู่ในโค้ดของ library และไม่ใช่ส่วนสำคัญที่ชี้ขาดผลการ test จึงปล่อยไว้อย่างนั้น เพราะหากพยายามทำให้ได้ตาม C90 จริง ๆ จะยุ่งยากเกินจำเป็น
ตามมาด้วย Debian upload ซึ่งเพิ่ม pkg-config
เข้าใน dependency ของ libdatrie-dev
เพื่อประกันว่า datrie-0.2.pc
สามารถทำงานได้แม้ในระบบที่ติดตั้งแบบ minimal จริง ๆ
ป้ายกำกับ: trie