דברים שלומדים כשעובדים על Wine

לחלונות יש סט של פקודות שמכונה “WinSock”. הרבה מהפקודות שם מועתקות מהתקן של יוניקס (Posix), אבל ניחא. אחת הפקודות שם, שדווקא אינה לקוחה מיוניקס, הינה “WSAGetLastError”. הרעיון הוא שהפקודה הזו מחזירה את השגיאה האחרונה שארעה.

אני לא מדבר על זה שביוניקס יש את errno שעושה את אותו הדבר.
אני לא מדבר על זה של-Winsock יש errno.
אני אפילו לא מדבר על זה ש-Winsock לא מעדכן את errno, אחרי שטרח כל כך קשה כדי לוודא שהוא קיים.

אני מדבר על זה שבחלונות יש גם פונקציה שנקראת “GetLastError”. היא עושה את אותו הדבר, רק שלקריאות מערכת שאינן של Winsock. למה, אתם שואלים, יש סט נפרד (ולא תואם) רק עבור Winsock? לא יודע.

אבל אפילו על זה אני לא מדבר באמת.

אני מדבר על זה שהמימוש של WSAGetLastError הוא פשוט קריאה ל-GetLastError. כן, כן. מיקרוסופט הגדירו שתי פונקציות נפרדות, שעושות בדיוק את אותו הדבר. למה? אם למישהו מקוראי פתרונים, הוא מוזמן לציין זאת בתגובות.

שחר

Bear