Working with Drupal fields may cause lots of headache, especially if you are digging through the code programmatically. I’m saying this after countless times searching for a field setting, or just a list of allowed values for a certain field type. Since I also tend to forget this stuff pretty fast, I thought it might be good to write it down for later reference.
spent some time today trying to figure out how to create a CCK field as part of an hook_update_N function. Unlike previous versions of CCK, in 6 it's very easy to manipulate the fields from code.