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




