typedef struct {
    char    *code;
    char    *str;
} abbreviations_t;

abbreviations_t abbreviations[] = {
    { "AC", "altocumulus" },
    { "ACC", "area control" },
    { "ACFT", "aircraft" },
    { "AD", "aerodrome" },
    { "ADZ", "advise" },
    { "AERO", "aero form of the international code" },
    { "AGN", "again" },
    { "AIR", "relative to air" },
    { "ANT", "before" },
    { "APP", "approach control" },
    { "APR", "after" },
    { "AFRFOR", "area forecast" },
    { "ARR", "arrive" },
    { "AS", "altostratus" },
    { "ASC", "i am ascending" },
    { "ATC", "air traffic control" },
    { "ATP", "at" },
    { "AWY", "airway" },
    { "BABS", "beam approach beacon system" },
    { "BCST", "broadcast" },
    { "BOH", "break-off height" },
    { "BRF", "short" },
    { "BTN", "between" },
    { "CB", "cumulonimbus" },
    { "CC", "cirrocumulus" },
    { "CEN", "degrees centigrade" },
    { "CI", "cirrus" },
    { "CLA", "clear type of ice formation" },
    { "CLR", "cleared to.." },
    { "CS", "cirrostratus" },
    { "CTA", "control area" },
    { "CTR", "control zone" },
    { "CU", "cumulus" },
    { "DB", "i cannot give you a bearing.  you are not in the calibrated sector of this station" },
    { "DC", "the minimum of your signal is suitable for the bearing" },
    { "DCT", "direct" },
    { "DES", "i am descending to" },
    { "DF", "your bearing at...hours was...degree in the doubtful sector of this station, with a possible error of...degrees" },
    { "DRT", "keep straight ahead" },
    { "DS", "adjust your transmitter, the mini- mum of your signal is too broad" },
    { "DT", "i cannot furnish you with a bearing, the minimum of your signal is too broad" },
    { "DU", "position not guaranteed" },
    { "DY", "this station is not able to determine the sense of the bearing" },
    { "DZ", "your bearing is reciprocal" },
    { "E", "east" },
    { "ER", "here" },
    { "ERB", "landing off runway is permitted" },
    { "ETA", "estimated time of arrival" },
    { "ETD", "estimated time of departure" },
    { "ETI", "the information is estimated" },
    { "FAH", "degrees fahrenheit" },
    { "FBL", "light" },
    { "FIOR", "flight forecast" },
    { "FIR", "flight information region" },
    { "FL", "flight level" },
    { "FLT", "flight" },
    { "FNA", "final approach" },
    { "FOT", "units of english system" },
    { "FSL", "full stop landing" },
    { "FT", "feet" },
    { "GCA", "ground controlled approach system" },
    { "GEO", "geographic or true" },
    { "GMT", "greenwich mean time" },
    { "GND", "relative to ground" },
    { "HBN", "hazard beacon" },
    { "HEL", "helicopter" },
    { "HF", "high frequency" },
    { "HR", "hours" },
    { "IAR", "intersection of air routes" },
    { "ID", "identification" },
    { "IFR", "instrument flight rules" },
    { "ILS", "instrument landing system" },
    { "IMI", "?" },
    { "IMT", "immediately" },
    { "INA", "initial approach" },
    { "INF", "below.." },
    { "INP", "if not possible" },
    { "INS", "inches" },
    { "IR", "ice on runway" },
    { "IRL", "intersection of range legs" },
    { "IVB", "if forward visibility is less than" },
    { "IVR", "if forward flight visibility remains" },
    { "KC, KCS,", "kilocycles/kilohertz" },
    { "kHz", "per second" },
    { "KG", "kilograms" },
    { "KM", "kilometers" },
    { "KNH", "kilometers per hour" },
    { "KT", "knots" },
    { "LB", "pounds" },
    { "LEFT", "left" },
    { "LF", "low frequency" },
    { "LNG", "long" },
    { "LRG", "long range" },
    { "LSA", "low intensity approach lighting system" },
    { "LSB", "high intensity approach lighting system" },
    { "M", "meters" },
    { "MAG", "magnetic" },
    { "MB", "millibars" },
    { "MC", "megacycles/megahertz" },
    { "MCS", "megacycles/megahertz" },
    { "MHz", "per second" },
    { "MER", "mean sea level" },
    { "MET", "meteorological." },
    { "MF", "medium frequency" },
    { "MKR", "marker radio beacon" },
    { "ML", "statute miles" },
    { "MN", "minutes" },
    { "MOD", "moderate" },
    { "MPH", "statute miles per hour" },
    { "MRG", "medium range" },
    { "MS", "minus" },
    { "MSL", "pressure altimeter set to qnh" },
    { "MTU", "metric units" },
    { "MX", "mixed type of ice formation" },
    { "N", "north" },
    { "NDB", "non-directional radio beacon" },
    { "NE", "north-east" },
    { "NIL", "i have nothing to send to you" },
    { "NM", "nautical miles" },
    { "NML", "normal" },
    { "NO", "no" },
    { "NORTH", "north" },
    { "NR", "number" },
    { "NS", "nimbostratus" },
    { "NW", "north-west" },
    { "OPA", "white type of ice formation" },
    { "OPC", "the control indicated is operational control" },
    { "ORD", "indication of an order" },
    { "PLA", "practice low approach" },
    { "PP", "descent through cloud" },
    { "PRES", "pressure" },
    { "PREVU", "forecast conditions" },
    { "PSGR", "passengers" },
    { "PS", "plus" },
    { "PTN", "procedure turn" },
    { "QUAD", "quadrant" },
    { "RAD", "radio control" },
    { "RCA", "reach cruising altitude" },
    { "RDO", "radio" },
    { "REP", "reporting point" },
    { "RITE", "right" },
    { "RNG", "radio range" },
    { "RNWY", "runway" },
    { "ROFOR", "route forecast" },
    { "RON", "receiving only" },
    { "RP", "rapid" },
    { "RTT", "radio-teletypewriter" },
    { "RUT", "standard regional route transmitting freqs" },
    { "S", "south" },
    { "SAP", "as soon as possible" },
    { "SC", "stratocumulus" },
    { "SE", "south-east" },
    { "SEV", "severe" },
    { "SID", "standard instrument departure" },
    { "SKED", "schedule" },
    { "SLW", "slow" },
    { "SOL", "pressure altimeter set to qfe" },
    { "SRG", "short range" },
    { "ST", "stratus" },
    { "STA", "straight in approach" },
    { "STD", "pressure altimeter having the sub-scale set to 1013" },
    { "SUP", "above" },
    { "SW", "south-west" },
    { "TAF", "aerodrome forecast" },
    { "TAFOR", "aerodrome forecast" },
    { "TER", "aerodrome level" },
    { "TFZ", "traffic zone" },
    { "TGL", "touch and go landing" },
    { "TIL", "until" },
    { "TIP", "until past" },
    { "TO", "to" },
    { "TRB", "it is not necessary to keep to the runways and taxi ways after landing" },
    { "TT", "teletypewriter" },
    { "TWR", "aerodrome control" },
    { "UAB", "until advised by" },
    { "UFN", "until further notice" },
    { "VAN", "runway control van" },
    { "VIA", "by way of" },
    { "VIO", "heavy" },
    { "VFR", "visual flight rules" },
    { "VHR", "very high frequency" },
    { "VLR", "very long range" },
    { "VOR", "vhf omni-directional radio range" },
    { "VSA", "by visual reference to the ground" },
    { "W", "west" },
    { "WX", "weather" },
    { "XS", "atmospheric" },
    { "YD", "yards" },
    { "YR", "your" },
    /*
    // others from http://ac6v.com/morseaids.htm#CW
    // prosigns included
    */
    { "AA", "All after/End Of Line" },
    { "AB", "All before" },
    { "ABT", "About" },
    { "ADEE", "Addressee" },
    { "ADR", "Address" },
    { "ADS", "Address" },
    { "AGN", "Again" },
    { "AM", "Amplitude Modulation" },
    { "ANI", "Any" },
    { "ANS", "Answer" },
    { "ANT", "Antenna" },
    { "AR", "End of message" },
    { "AS", "wait" },
    { "AT", "@" },
    { "BCI", "Broadcast Interference" },
    { "BCL", "Broadcast Listener" },
    { "BCNU", "Be seeing you" },
    { "BD", "Bad" },
    { "BK", "Break" },
    { "BN", "All between/Been" },
    { "BT", "- Separation break -" },
    { "BTH", "Both" },
    { "BTR", "Better" },
    { "BTW", "By The Way" },
    { "BUG", "Semi-Automatic key" },
    { "BURO", "Bureau" },
    { "B4", "Before" },
    { "C", "Yes, Correct" },
    { "CB", "CallBook" },
    { "CBA", "Callbook Address" },
    { "CFM", "Confirm" },
    { "CK", "Ckeck" },
    { "CKT", "Circuit" },
    { "CL", "I am closing my station/Call" },
    { "CLBK", "Callbook" },
    { "CLD", "Called" },
    { "CLG", "Calling" },
    { "CMG", "Coming" },
    { "CNT", "Can't" },
    { "CONDX", "Conditions" },
    { "CPI", "Copy" },
    { "CQ", "Calling any station" },
    { "CRD", "Card" },
    { "CS", "Call Sign" },
    { "CU", "See You" },
    { "CUAGN", "See You Again" },
    { "CUD ", "Could" },
    { "CUL", "See You later" },
    { "CUM", "Come" },
    { "CUZ", "Because" },
    { "CW", "Continuous wave" },
    { "DA", "Day" },
    { "DE", "From/This Is" },
    { "DIFF", "Difference" },
    { "DLD", "Delivered" },
    { "DLVD", "Delivered" },
    { "DN", "Down" },
    { "DR", "Dear" },
    { "DSW", "goodbye" },
    { "DWN", "Down" },
    { "DX", "Distance" },	
    { "EL", "Element" },
    { "ES", "And" },
    { "ENUF", "Enough" },
    { "EU", "Europe" },
    { "EVE", "Evening" },
    { "FB", "Fine Business/excellent" },
    { "FER", "For" },
    { "FM", "Frequency Modulation: From" },
    { "FONE", "Phone" },
    { "FQ", "Frequency" },
    { "Freq", "Frequency" },
    { "FWD", "Forward" },
    { "GA", "Go ahead/Good Afternoon" },
    { "GB", "Good bye/God Bless" },
    { "GD", "Good/Good Day" },
    { "GE", "Good Evening" },
    { "GESS", "Guess" },
    { "GG", "Going" },
    { "GLD", "Glad" },
    { "GM", "Good morning" },
    { "GN", "Good night" },
    { "GND", "Ground" },
    { "GP", "Ground Plane" },
    { "GS", "Green Stamp" },
    { "GUD", "Good" },
    { "GV", "Give" },
    { "GVG", "Giving" },
    { "HH", "Error in sending" },
    { "HI", "telegraph laugh/High" },
    { "HPE", "Hope" },
    { "HQ", "Headquarters" },
    { "HR", "Here/Hear/Hour" },
    { "HRD", "Heard" },
    { "HRS", "Hours" },
    { "HRD", "Heard" },
    { "HV", "Have" },
    { "HVG", "Having" },
    { "HVY", "Heavy" },
    { "HW", "How" },
    { "II", "I Repeat" },
    { "IMI", "Repeat" },
    { "INFO", "Info" },
    { "JA", "Japanese Station" },
    { "K", "Invitation To Transmit" },
    { "KA", "Beginning of message" },
    { "KLIX", "KeyClicks" },
    { "KN", "Go only" },
    { "LID", "A poor operator" },
    { "LNG", "Long" },
    { "LP", "Long Path" },
    { "LSN", "Listen" },
    { "LTR", "Later/letter" },
    { "LV", "Leave" },
    { "LVG", "Leaving" },
    { "LW", "Long Wire/Wave" },
    { "MA", "Millamperes" },
    { "MGR", "Manager" },
    { "MI", "My" },
    { "MILL", "Typewiter" },
    { "MILS", "Millamperes" },
    { "MNI", "Many" },
    { "MOM", "Moment" },
    { "MSG", "Message" },
    { "MULT", "Multiplier" },
    { "N", "Negative" },
    { "NCS", "Net Control Station" },
    { "ND", "Nothing Doing" },
    { "NIL", "Nothing" },
    { "NM", "No more" },
    { "NR", "Number/Near" },
    { "NW", "Now/resume" },
    { "OB", "Old boy" },
    { "OC", "Old chap" },
    { "OK", "Correct" },
    { "OM", "Old man" },
    { "OP", "Operator" },
    { "OPR", "Operator" },
    { "OT", "Old timer/top" },
    { "OW", "Old Woman" },
    { "PBL", "Preamble" },
    { "PKG", "Package" },
    { "PSE", "Please" },
    { "PT", "Point" },
    { "PWR", "Power" },
    { "PX", "Press/Prefix" },
    { "R", "Received as transmitted/Are" },
    { "R", "Decimal Point" },
    { "RC", "Ragchew" },
    { "RCD", "Received" },
    { "RCVR", "Receiver" },
    { "RE", "Concerning/Regarding" },
    { "REF", "Refer to" },
    { "RFI", "Radio frequency interference" },
    { "RIG", "Station equipment" },
    { "ROTFL", "Rolling on the floor laughing" },
    { "RPT", "Repeat/Report" },
    { "RTTY", "Radio teletype" },
    { "RST", "Readability/strength/tone" },
    { "RX", "Receive/Receiver" },
    { "SA", " Say" },
    { "SASE", "Self-addressed/stamped envelope" },
    { "SED", "Said" },
    { "SAE", "Self-Addressed Envelope" },
    { "SEZ", "Says" },
    { "SGD", "Signed" },
    { "SHUD", "Should" },
    { "SIG", "Signature/Signal" },
    { "SINE", "Operator's personal initials or nickname" },
    { "SK", "Out/clear" },
    { "SK", "Silent Key" },
    { "SKED", "Schedule" },
    { "SN", "Soon" },
    { "SP", "Short Path" },
    { "SRI", "Sorry" },
    { "SS", "Sweepstakes" },
    { "SSB", "Single Side Band" },
    { "STN", "Station" },
    { "SUM", "Some" },
    { "SVC", "Service" },
    { "SWL", "Short Wave Listener" },
    { "ST", "short timer on check in" },
    { "T", "Zero" },
    { "TEMP", "Temperature" },
    { "TEST", "Testing or Contest" },
    { "TFC", "Traffic" },
    { "TIA", "Thanks In Advance" },
    { "TMW", "Tomorrow" },
    { "TKS", "Thanks" },
    { "TNX", "Thanks" },
    { "TR", "Transmit" },
    { "T/R", "Transmit/Receive" },
    { "TRBL", "Trouble" },
    { "TRIX", "Tricks" },
    { "TRX", "Transceiver" },
    { "TT", "That" },
    { "TTS", "That is" },
    { "TU", "Thank you" },
    { "TVI", "Television interference" },
    { "TX", "Transmitter/Transmit" },
    { "TXT", "Text" },
    { "U", " You" },
    { "UFB", "Ultra Fine Business" },
    { "UNLIS", "Unlicensed" },
    { "UR", "Your/You're" },
    { "URL", "webpage" },
    { "URS", "Yours" },
    { "VE", "Understood" },
    { "VERT", "Vertical" },
    { "VFB", "Very fine business" },
    { "VFO", "Variable Frequency Oscillator" },
    { "VY", "Very" },
    { "W", "Watts" },
    { "WA", "Word after" },
    { "WATSA", "What Say" },
    { "WB", "Word before" },
    { "WD", "Word" },
    { "WDS", "Words" },
    { "WID", "With" },
    { "WKD", "Worked" },
    { "WKG", "Working" },
    { "WL", "Well/Will" },
    { "WPM", "Words Per Minute" },
    { "WRD", "Word" },
    { "WRK", "Work" },
    { "WUD", "Would" },
    { "WW", "Would" },
    { "WX", "Weather" },
    { "XCVR", "Transceiver" },
    { "XMAS", "Christmas" },
    { "XMTR", "Transmitter" },
    { "XTAL", "Crystal" },
    { "XYL", "Wife" },
    { "YF", "Wife" },
    { "YL", "Young lady" },
    { "YR", "Year" },
    { "Z", "Zulu Time" },
    { "30", "I have no more to send" },
    { "33", "Fondest Regards" },
    { "55", "Best Success" },
    { "73", "Best Regards" },
    { "88", "Love and kisses" },
    { "161", "Best regards to you and your wife" },
    /*
    others?
    maybe the sms abbreviations but in a separated header file
    */
    { NULL, NULL }
};


