cd pidgin grep "int main(" *.c -Rn
Or any Windows equivalent for "search all files with the extension .c for a text string" int main (', recursive into subdirectories and displaying each match that displays the file and line numbers.
Running above in pidgin-2.7.1/pidgin gives gtkmain.c:521:int main(int argc, char *argv[]) . The gtkmain.c file is just under 1000 lines, so this may not be the right place to start.
But the principle of using the command line to search for functions in the code helped me in the past to work on the code of other people (although, admittedly, when I proposed this to you, I did not understand that Pidgin was like it was difficult).
So now I find it important to ask: for what purpose do you want to understand the code?
Why do you want to edit the code?
Do you want to provide GUI enhancements or new features in the backend?
You really need to come up with something specific to work with. Run the program and determine what you want to do with it (and maybe let us know about it). Once you have identified something using the Pidgin that you want to change in some way, you can start looking for the code, trying to figure out what is going on. Search in code for text strings displayed in dialogs of the graphical user interface or in a menu or even in the title of a dialog box.
After you find the code for a specific GUI dialog box related to what you want to change, do another search in the code for links to this GUI dialog, etc. etc.
Penetration into large projects is not easy.
There is also a more experimental approach to editing a file and changing something, something, recompiling and seeing what consequences it may have. Although, perhaps this is not a good idea with a network program; -)