[Cascavel-pm] integração de Perl com C: XS, Swig e afins

Alceu R. de Freitas Jr. glasswalk3r em yahoo.com.br
Quarta Abril 26 08:57:57 PDT 2006


Olá monges,

Eu tenho um projeto opensource chamado FAUS que é uma
interface de gerencimento de usuários para o Samba. Eu
já obtive bastante ajuda de vocês com relação a
dúvidas que eu tive para desenvolver esse projeto, mas
no momento ele está parado por dois motivos:

1 - File locking do Perl
2 - Falta de API em Perl para comunicação com um
servidor Samba.

O primeiro problema eu já enviei para a lista, fiz uma
extensa pesquisa... e resolvi deixar pra lá quando
percebi que a implementação envolveria programação em
C e uma miríade de possibilades com file locking em
diversos UNIXes.

Me restou atacar o segundo problema, que é fazer
requisições via DCE/RPC diretamente para o Samba. Isso
envolve duas possibilidades:
1 - Fazer as requisições na unha (via socket)
2 - Usar uma API do Samba.

Eu descartei a primeira, porque o time do Samba usa um
esquema próprio para essas mensagens, e isso não é
100% compatível nem com as mensagens utilizadas pelo
Windows, nem pelo OpenDCE (acho que é esse o nome) e
vivem mudando: ou seja, isso envolveria retrabalho
constante para acompanhar essas mudanças todas.

O Samba possui bibliotecas em C que usa justamente
para fazer essas requisições. Seria mais inteligente
usá-las e deixar os detalhes sórdidos para o time de
desenvolvimento do Samba. Só tem dois problemas:

1 - Não tem documentação (eu pelo menos não achei)
2 - Envolve conhecimento razóavel de C

Eu sei que é possível integrar Perl e código C, mas
como não sou programador C nem nunca vi XS, aí vão
minhas perguntas: qual o esforço para fazer tal
integração? A utilização de Swig geralmente cobre
essas coisas, ou é necessário trabalhar com XS? Um
programador iniciante em C (meu caso) conseguiria
fazer alguma das alternativas?

O mais interessante (e até hilário) é que se eu fizer
essas requisições de uma máquina Windows (usando os
módulos Win32 do ActivePerl) eu consigo fazer as
operações que preciso de uma maneira MUITO simples.
Sinceramente, eu acho isso um buraco imenso para Perl
em sistemas UNIX e valeria com certeza um namespace no
CPAN.

Desculpem o tamanho do email, eu achei melhor explicar
o contexto para evitar perguntas do tipo "você já
tentou isso?".

[]'s


Alceu Rodrigues de Freitas Junior
--------------------------------------
glasswalk3r em yahoo.com.br
http://www.imortais.cjb.net
-----------------------------------------------------------------------
A well-used door needs no oil on its hinges.
A swift-flowing stream does not grow stagnant.
Neither sound nor thoughts can travel through a vacuum.
Software rots if not used.
These are great mysteries -- The Tao Of Programming, 5.1


		
_______________________________________________________ 
Yahoo! Acesso Grátis - Internet rápida e grátis. Instale o discador agora! 
http://br.acesso.yahoo.com


Mais detalhes sobre a lista de discussão Cascavel-pm