Como você determina usando stat () se um arquivo é um link simbólico?

Basicamente, tenho que escrever um clone do comando ls do UNIX para uma classe e tenho quase tudo funcionando. Uma coisa que não consigo descobrir como fazer é verificar se um arquivo é um link simbólico ou não. Decara página parastat(), Vejo que existe ummode_t valor definido,S_IFLNK.

É assim que estou tentando verificar se um arquivo é um link sym, sem sorte (observe, stbuf é o buffer questat() retornou os dados do inode para):

switch(stbuf.st_mode & S_IFMT){
    case S_IFLNK:
        printf("this is a link\n");
        break;
    case S_IFREG:
        printf("this is not a link\n");
        break;
}

Meu código SEMPRE imprimethis is not a link mesmo que seja, e eu sei de fato que o arquivo mencionado é um link simbólico, já que o comando ls diz isso, mais eu criei o link sym ...

Alguém pode identificar o que posso estar fazendo de errado? Obrigado pela ajuda!

questionAnswers(1)

yourAnswerToTheQuestion